有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个 “哨兵” 的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的向题,在2.8以后的版本哨兵功能才稳定起来。
顾名思义,哨兵的含义就是监控Redis系统的运行状况。其主要功能有两点:
- 监控主数据库和从数据库是否正常运行。
- 主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换。
在/home目录下创建目录路径conf4,如下图所示:
将redis的sentinel.conf配置文件上传到/home/conf4目录下,找到下述4个配置项并修改为如下:
sentinel monitor mymaster 192.168.1.108 6381 1 # 名称 主节点的ip 端口 投票次数
sentinel down-after-milliseconds mymaster 5000 # 默认1s检测一次,这里配置超时5秒为宕机
sentinel failover-timeout mymaster 180000 # 如果3分钟内没有完成故障转移操作,则视为转移失败。
sentinel parallel-syncs mymaster 1 # 故障转移之后,进行新的主从复制,配置项指定了最多有多少个slave对新的master进行同步。
接着在/home目录下执行下述命令启动哨兵服务:
docker run -id -p 26379:26379 \
-v /home/redis/conf4:/usr/local/etc/redis \
--name redis_sentry redis:7.0 \
redis-sentinel /usr/local/etc/redis/sentinel.conf
查看哨兵服务的启动日志,可以看到该服务已经启动成功:
使用下述命令进入到哨兵服务的客户端中,并且使用info命令可以查看哨兵相关信息:
redis-cli -p 26379
可使用下述命令直接查看哨兵信息:
redis-cli -p 26379 info Sentinel
将主节点的服务停掉以后,稍微等待一会后哨兵机制会从从节点列表中选举出一个节点作为新的主节点。如果再将原先的主节点的服务启动起来的话,已产生的新的主节点保持不变,原先的主节点会以从节点的身份加入到redis的主从复制架构中,从而实现服务的高可用。