6.redis-哨兵
一.实战
1./myredis目录下放sentinel.conf文件
1) sentinel26379.conf
2) sentinel26380.conf
3) sentinel26381.conf
2.重点参数说明
bind 0.0.0.0 #服务监听位置
daemonize yes #后台运行
protected-mode no #安全保护模式
port 26379 #端口
logfile "/myredis/26379.log" #日志文件路径
pidfile /var/run/redis_26379.pid #pid文件路径
dir /myredis #工作目录#设置要监控的master服务器,
#quorum 表示最少有几个哨兵认可客观下线同意故障迁移的法定票数
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111 #redisd的密码
其他参数
sentinel auth-user <master-name> <username>
#指定多少毫秒之后,主节点没有答应哨兵,此时哨兵主观上认为主节点下线
sentinel down-after-milliseconds mymaster 30000
#允许并同步的slave个数,当Master挂了后,哨兵会选出新的Master
sentinel parallel-syncs mymaster 1
#故障转移的超时时间,超出设置的毫秒,表示故障转移失败
sentinel failover-timeout mymaster 180000
#配置当莫一事件发生时所需要执行的脚本
sentinel notification-script mymaster /var/redis/notify.sh
#客户端重新配置主节点参数脚本
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
3.通用配置
1) sentinel26379.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26379
logfile "/myredis/26379.log"
pidfile /var/run/redis_26379.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111
2) sentinel26380.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26380
logfile "/myredis/26380.log"
pidfile /var/run/redis_26380.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111
3) sentinel26381.conf
bind 0.0.0.0
daemonize yes
protected-mode no
port 26381
logfile "/myredis/26381.log"
pidfile /var/run/redis_26381.pid
dir /myredis
sentinel monitor mymaster 192.168.3.128 6379 2
sentinel auth-pass mymaster 111111
4.先启动一主二从redis
查看 https://mp.csdn.net/mp_blog/creation/editor/129999647
5.启动3个哨兵
1) redis-sentinel /path/to/sentinel.conf或者redis-server /path/to/sentinel.conf --sentinel
2) 实际,cd 到/myredis
redis-sentinel sentinel26379.conf --sentinel
redis-sentinel sentinel26380.conf --sentinel
redis-sentinel sentinel26381.conf --sentinel
6.测试主从复制
1) 在主中set k1 111111
2) 在从机get k1 查看是否有数据
3) 在哨兵机中 ps -ef | grep redis
7.原有的master挂了
1) redis-cli -a 111111 -p 6379 shutdown
2) 两台从机数据是否完整
3) 是否从剩下2台机器上选出新的master
4) 之前的master机器重启回来谁会是master
二.运行流程和选举原理
1) 当三个哨兵ping主机,都超过了down-after-milliseconds的值30秒,才能判断主机挂到了
2) 根据Raft算法(先到先得)选举出领导哨兵
2) 由领导哨兵进行故障迁移选出master,算法是:
slave-priority或者replica-priority值越小级别越高,如果priority值相同,就判断offset
replication offset 值越大级别越高, 如果offset 值相同,就判断run id
Run ID ASCII值越小级别越高
3) slave no one 可以使从节点独立出来,并同过slaveof让其他节点成为器
三.使用建议