CentOS Redis 哨兵

来源:互联网 发布:快手知希大人真名 编辑:程序博客网 时间:2024/06/01 09:03

四、 redis sentinel

Redis-sentinel是Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。
在一般的分布式中心节点数据库中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性。

它的主要功能有以下几点:
不时地监控redis是否按照预期良好地运行;
如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。

Sentinel支持集群:
如果有多个sentinel,redis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息。
虽然sentinel集群中各个sentinel都互相连接彼此来检查对方的可用性以及互相发送消息,但是你不用在任何一个sentinel配置任何其它的sentinel的节点。因为sentinel利用了master的发布/订阅机制去自动发现其它也监控了统一master的sentinel节点。
通过向名为__sentinel__:hello的管道中发送消息来实现。
同样,你也不需要在sentinel中配置某个master的所有slave的地址,sentinel会通过询问master来得到这些slave的地址的。

1. 编辑配置

cp /data/redis/redis-3.0.3/sentinel.conf /data/redis/conf/sentinel.conf
修改后的sentinel.conf配置文件如下:
port 26379
daemonize yes
dir "/data/redis"
logfile "/data/redis/logs/sentinel.log"
sentinel monitor mymaster 172.32.2.131 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

cp /data/redis/redis-3.0.3/sentinel.conf /data/redis/conf/sentinel_26380.conf
修改后的sentinel_26380.conf配置文件如下:
port 26380
daemonize yes
dir "/data/redis"
logfile "/data/redis/logs/sentinel_26380.log"
sentinel monitor mymaster 172.32.2.131 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

对应解释:
sentinel monitor mymaster 172.32.2.131 6379 2
这一行代表sentinel监控的master的名字叫做mymaster,地址为172.32.2.131:6379。
网络是不可靠的,有时候一个sentinel会因为网络堵塞而误以为一个master redis已经宕掉了。
当sentinel集群时,解决这个问题的方法就变得很简单,只需要多个sentinel互相沟通来确认某个master是否真的宕了。
这个行尾的2就代表,当集群中有2个sentinel认为master宕了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)。

除了以上一行配置,剩下的配置行都有统一的格式:
sentinel <option_name> <master_name> <option_value>

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

parallel-syncs
在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave处于不能处理命令请求的状态。

failover-timeout
若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。

所有的配置都可以在运行时用命令SENTINEL SET command动态修改。

2. 运行Sentinel

第一种方式
redis-sentinel /data/redis/conf/sentinel.conf
redis-sentinel /data/redis/conf/sentinel_26380.conf

第二种方式
redis-server /data/redis/conf/sentinel.conf --sentinel
redis-server /data/redis/conf/sentinel_26380.conf --sentinel

原创粉丝点击