有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个“哨兵”的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的问题。在2.8以后的哨兵功能才稳定下来。
顾名思义,哨兵的含义就是监控Redis系统的运行状况。其主要功能有两点:
1.监控主数据库和从数据库是否正常运行
2.主数据出现故障时,可以自动将从数据库转换为主数据库,实现自动切换
实现步骤:在其中一台的从服务器配置sentinel.conf
(1)copy文件sentinel.conf到/usr/local/redis/etc/中
(2)修改sentinel.conf文件:
这是默认的
# sentinel通讯端口
port 26379
# sentinel需要监控的master/slaver信息,格式为sentinel monitor <mastername> <masterIP> <masterPort> <quorum>
# 其中<quorum>应该小于集群中slave的个数,当失效的节点数超过了<quorum>,则认为整个体系结构失效
sentinel monitor redisMaster 192.168.154.101 6379 2
# master被当前sentinel实例认定为失效的间隔时间,格式为sentinel down-after-milliseconds <mastername> <milliseconds>
sentinel down-after-milliseconds redisMaster 10000 #默认就是1s检测一次,这里配置超时1s为宕机
# 当新master产时,同时进行“slaveof”到新master并进行同步复制的slave个数
# 在salve执行salveof同步时,将会终止客户端请求。
# 此值较大,意味着“集群”终止客户端请求的时间总和和较大。
# 此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。
sentinel parallel-syncs redisMaster 1
# failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。
sentinel failover-timeout redisMaster 60000
下面是我们自己修改的:
sentinel monitor mymaster 6379 1 #名称、ip、端口,投票选举次数
sentinel down-after-milliseconds mymaster 5000 #默认是1s检测一次,这里配置超时5000毫秒为宕机。
sentinel failover-timeout mymaster 900000
sentinel can-failover mymaster yes
sentinel parrallel-syncs mymaster 2
(3)启动sentinel 哨兵
方式一:/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf --sentinel
方式二:/usr/local/redis/bin/redis-sentinel /usr/local/redis/etc/sentinel.conf
(4)查看哨兵相关信息命令
/usr/local/redis/bin/redis-cli -h 192.168.154.102 -p 26379 info Sentinel
(5)关闭主服务器查看集群信息:
/usr/local/redis/bin/redis-cli -h 192.168.154.101 -p 6379 shutdown