1:案例环境:就一台
2:案例实施:
192.168.100.10 上:
3:主从集群配置
192.168.100.10 上:
4:配置Redis sentinel 集群
sentinel 节点本身就是独立的Redis节点,只不过他们有些特殊,他们不存储数据,只支持部分命令
192.168.100.10 上:
port 26379
dir "/var/log/redis"
logfile "26379.log"
daemonize yes
protected-mode no
sentinel monitor mymaster 192.168.100.10 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456
port 26380
dir "/var/log/redis"
logfile "26380.log"
daemonize yes
protected-mode no
sentinel monitor mymaster 192.168.100.10 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456
port 26381
dir "/var/log/redis"
logfile "26381.log"
daemonize yes
protected-mode no
sentinel monitor mymaster 192.168.100.10 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456
5:sentinel 配置说明
当所有sentinel节点启动后,配置文件中的内容将会发生变化,体现在三个方面:
- Sentinel节点自动发现从节点及其余Sentinel节点
- 去掉文件中的默认配置,例如parallel-syncs、failover-timeout参数
- 添加了配置纪元相关参数
《1》:cat /etc/redis/redis-sentinel-26379.conf 查看配置文件
- daemonize yes #以守护进程模式启动
- protected-mode no #在配置多个sentinel时需在每个sentinel配置文件中必须添加,否则主的redis挂掉时,所有的sentinel不会选举出新的master
- sentinel monitor mymaster 192.168.200.111 6379 2 #sentinel去监听地址为192.168.200.111 6379的master;mymaster是集群名称,名称可以自定义;quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效;master-name只能包含英文字母,数字,和“.-_”这三个字符。需要注意的是master-ip要写真实的IP地址而不要用回环地址(127.0.0.1)
- sentinel down-after-milliseconds mymaster 30000 #这个配置项指定需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的。单位是毫秒,默认为30秒
- sentinel parallel-syncs mymaster 1 #这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为1来保证每次只有一个slave处于不能处理命令请求的状态。
- sentinel failover-timeout mymaster 180000 #故障转移超时时间为180000
- sentinel auth-pass mymaster 123456 #设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。
6:sentinel 集群测试
Sentinel集群总结
- 对于master节点故障判断是由多个Sentinel节点共同完成,这样可以有效地防止误判
- Sentinel集群可由若干个(奇数)Sentinel节点组成的,这样即使个别Sentinel节点不可用,整个Sentinel节点集合依然是健壮的。