redsi一主两从三哨兵

1.前提准备

防火墙,selinux,主机名解析,所有主机安装gcc

[root@localhost ~]# vim /etc/hosts

192.168.122.135  redis_master

192.168.122.136  redis_slave01

192.168.122.137  redis_slave02

192.168.122.138  sentinel01

192.168.122.139  sentinel02

192.168.122.140  sentinel03

[root@localhost ~]# for i in 135 136 137 138 139 140

> do

> rsync /etc/hosts 192.168.122.$i:/etc/hosts

> done

以192.168.122.135位例

[root@redis_master soft]# tar zxf redis-4.0.11.tar.gz

[root@redis_master soft]# cd redis-4.0.11/

[root@redis_master redis-4.0.11]# make MALLOC=libc

[root@redis_master redis-4.0.11]# make PREFIX=/soft/redis install

[root@redis_master redis-4.0.11]# mkdir -p /soft/redis/conf/

[root@redis_master redis-4.0.11]# cp redis.conf /soft/redis/conf/

<三台哨兵[root@redis_master redis-4.0.11]# cp sentinel.conf /soft/redis/conf/

>

2.主从配置

192.168.122.135(master)

[root@redis_master redis]# mkdir data

[root@redis_master redis]# mkdir logs

[root@redis_master conf]# vim redis.conf

bind 192.168.122.135

#支持内网/本地访问,比如 bind 172.31.175.142 127.0.0.1

protected-mode no

是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭,设置为no。

port 6379

#端口号

daemonize yes

#是否在后台执行,yes:后台运行;no:不是后台运行

pidfile /var/run/redis_6379.pid

#redis的进程文件

logfile /soft/redis/logs

#指定了记录日志的文件。

dir /soft/redis/data

#数据目录,数据库的写入会在这个目录。

slave-read-only yes

#作为从服务器,默认情况下是只读的(yes),可以修改成NO,用于写

slave-priority 100

#当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举。

appendonly yes

#redisrdbredissaveAppend Only FileRedis appendonly.aof RedisRDBappendfilename "appendonly.aof"

#aof文件名

appendfsync everysec

#aof持久化策略的配置

#no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。

#always表示每次写入都执行fsync,以保证数据同步到磁盘。

#everysec表示每秒执行一次fsync,可能会导致丢失这1s数据

192.168.122.136(slave01)

[root@redis_slave01 redis]# mkdir data

[root@redis_slave01 redis]# mkdir logs

[root@redis_slave01 conf]# vim redis.conf

bind 192.168.122.136

protected-mode no

port 6379

daemonize yes

pidfile /var/run/redis_6379.pid

logfile /soft/redis/logs

dir /soft/redis/data

slave-read-only yes

slaveof 192.168.122.135 6379

#复制选项,slave复制对应的master。

slave-priority 90

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

192.168.122.137(slave02)

[root@redis_slave02 redis]# mkdir data

[root@redis_slave02 redis]# mkdir logs

[root@redis_slave02 conf]# vim redis.conf

bind 0.0.0.0

protected-mode no

port 6379

daemonize yes

pidfile /var/run/redis_6379.pid

logfile /soft/redis/logs

dir /soft/redis/data

slave-read-only yes

slaveof 192.168.122.135 6379

slave-priority 80

appendonly yes

appendfilename "appendonly.aof"

appendfsync everysec

3.哨兵配置

192.138.122.138(sentinel01)

[root@sentinel01 redis]# mkdir temp

[root@sentinel01 redis]# mkdir logs

[root@sentinel01 conf]# vim sentinel.conf

protected-mode no

port 26379

dir /soft/redis/temp

daemonize yes

logfile "/soft/redis/logs/sentinel_log.log"

sentinel monitor redis1 192.168.122.135 6379 2

sentinelmaster,192.168.122.135:63792sentinelmaster redissentinelsentinelmaster22sentinelmastermastersentinel parallel-syncs redis1 1

failoverslavemasterfailoverslavereplication 1 slavesentinel down-after-milliseconds redis1 10000

会向发送心跳来确认是否存活,如果在一定时间范围内不回应或者是回复了一个错误消息,那么这个会主观地单方面地认为这个已经不可用了也简称为。而这个就是用来指定这个一定时间范围的,单位是毫秒。

sentinel failover-timeout redis1 60000

#failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel  将会认为此次failover失败

192.168.122.139(sentinel02)

[root@sentinel02 redis]# mkdir temp

[root@sentinel02 redis]# mkdir logs

[root@sentinel02 conf]# vim sentinel.conf

protected-mode no

port 26379

dir /soft/redis/temp

daemonize yes

logfile "/soft/redis/logs/sentinel_log.log"

sentinel monitor redis1 192.168.122.135 6379 2

sentinel parallel-syncs redis1 1

sentinel down-after-milliseconds redis1 10000

sentinel failover-timeout redis1 60000

192.168.122.140(sentinel03)

[root@sentinel03 redis]# mkdir logs

[root@sentinel03 redis]# mkdir temp

[root@sentinel03 conf]# vim sentinel.conf

protected-mode no

port 26379

dir /soft/redis/temp

daemonize yes

logfile "/soft/redis/logs/sentinel_log.log"

sentinel monitor redis1 192.168.122.135 6379 2

sentinel parallel-syncs redis1 1

sentinel down-after-milliseconds redis1 10000

sentinel failover-timeout redis1 60000

4.启动redis主从,哨兵

[root@redis_master bin]# ./redis-server ../conf/redis.conf

[root@redis_slave01 bin]# ./redis-server ../conf/redis.conf

[root@redis_slave02 bin]# ./redis-server ../conf/redis.conf

[root@sentinel01 bin]# ./redis-server ../conf/sentinel.conf --sentinel

[root@sentinel02 bin]# ./redis-server ../conf/sentinel.conf --sentinel

[root@sentinel03 bin]# ./redis-server ../conf/sentinel.conf --sentinel

附一:错误

redisError condition on socket for SYNC: No route to host

redis问题解决:Error condition on socket for SYNC: No route to host

第一种方案:

1.telnet ip port 是否通

2.使用netstat -tnlp 查询IP地址是127.0.0.1而不是0.0.0.0或者本机ip(127.0.0.1代表只能本机使用)

3.修改master中redis.conf中bind绑定0.0.0.0或者本机ip

2.重启master服务

如果第一种方案行不通,那就使用第二种方案;

第二种方案:

1.关闭防火墙:service iptables stop

2.如果出现以下异常

Redirecting to /bin/systemctl stop iptables.service

Failed to stop iptables.service: Unit iptables.service not loaded.

(其他异常也可以试下)

3.进入/etc/sysconfig/目录下查询有没有iptables文件

4.如果没有,使用systemctl stop firewalld 关闭防火墙

5.使用yum install iptables-services 安装或者更新服务

6.service iptables stop尝试下关闭服务器

7.关闭成功无异常,重启maste和slave,进入redis-cli 输入info就能看到maste和slave信息了

5.验证redis:master-slave(info replication)

[root@redis_master bin]# ./redis-cli -h 192.168.122.135

192.168.122.135:6379> SET age 23

OK

192.168.122.135:6379> get age

"23"

192.168.122.136:6379> get age

"23"

192.168.122.137:6379> get age

"23"

6.验证哨兵集群(反客为主)

这时我们让master挂掉,查看哨兵日志

tail -50f sentinel_log.log 按照我们配置的 “slave-priority”的值,值小的192.168.122.137(slave02)将成为新的master.192.168.122.136成为192.168.122.137的slave. 在将192.168.122.135这台机器的redis服务起来后发现变成了新master的slave

原文地址:https://www.cnblogs.com/charon2/p/10349835.html

时间: 2024-10-12 19:03:44

redsi一主两从三哨兵的相关文章

三台服务器上离线安装redis哨兵集群,一主二从三哨兵

三台服务器上离线安装redis哨兵集群,一主二从三哨兵 系统安装好gcc环境,(不然编译redis会报错).依旧不知道怎么离线安装gcc环境的可查看CentOS下离线安装gcc环境,图文详细 下载 点击官网地址下载Linux版的redis http://download.redis.io/releases/redis-5.0.4.tar.gz 上传 put D:\AppStore\redis\redis-5.0.4.tar.gz /root 安装 tar xzf redis-5.0.4.tar.

redis 的一主二从三哨兵模式

概述 在部署redis 的时候,如果redis宕机,缓存将不可用,redis提供了哨兵模式保证redis实现高可用. 即一台主机两台从机,三台哨兵主机,如果主实例宕机,哨兵将将一台从机升级为主机.实现高可用. 配置方法 1.IP地址配置如下 主 127.0.0.1 6001 从 127.0.0.1 6002 从 127.0.0.1 6003 哨兵 127.0.0.1 16001 127.0.0.1 16002 127.0.0.1 16002 2.修改配置 将 redis.con 拷贝两份 red

redis一主二从加哨兵

redis版本:redis-3.0.6.tar.gz master:192.168.3.180 slave:192.168.3.184 (机器原因,两从都在这上面) 一.redis安装 cd /root/tools/ tar -zxvf redis-3.0.6.tar.gz cd redis-3.0.6 make install PREFIX=/usr/local/redis ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cl

两栏三栏自适应布局

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> html,body{width:100%;height:100%;overflow:hidden;} html{_height:auto;_padd

redis两主两从

监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器

一主两从的环境,如果主库挂了,如何选举一个从库作为主库?

如图: 如果M挂了,怎么从S1和S2中选举一个从库作为主库? 传统复制的解决方法 (1)查看从库状态: S1:show slave status: S2:show slave status: [email protected] [(none)]>show slave status\G*************************** 1. row ***************************               Slave_IO_State: Reconnecting af

一主一从的结构,怎么最小影响添加一个从库,变成一主两从

架构故障 1. 一主一从的结构,怎么最小影响添加一个从库,变成一主两从 场景:分别如下2种 (1)由M--〉S1变为M-->S1-->S2 (2)由M--〉S1变为M-->S1&M-->S2 ip 192.168.0.100 3306 ip 192.168.0.100 3307 ip 192.168.0.100 3308(3308为新添加的从库) (1)由M--〉S1变为M-->S1-->S2 在从库3307上面备份:(主库压力大,不影响业务情况下,在从库330

级联复制转化成一主两从

1.如图,级联复制如果转化成一主两从? GTID复制处理方法: 只需要把S2的复制停掉,然后重新change到M上即可: S2: stop slave; reset slave all; change master to M: start slave 传统复制处理方法(比较复杂): (1)停止S1的复制,这个时候S1和S2停在同一位置 (2)在S1上执行show slave status\G [email protected] [testdb]>show slave status\G *****

公司开到高新技术区可以只收11的企业所得税,拿到软件企业认证后可享受所得税两免三减半(从盈利年度算起)

作者:Xu Amy链接:https://www.zhihu.com/question/24468733/answer/27994181来源:知乎著作权归作者所有,转载请联系作者获得授权. 1. 明确公司的税收性质,一般纳税人?小规模纳税人? 软件销售及技术服务技术服务类的征收税率3%(小规模纳税人)6%(一般纳税人)软件产品17% 2. 技术开发费的增值税如何减免? 这一块是相对容易免税的,只需要将技术开发合同拿到当地的科技局备案即可,但必须注意:其中的知识产权必须是对方所有或者双方共享,如果是