前面讲了搭建一个主从备份模式的redis集群,但是主从备份集群存在一个很大的问题就是,当master节点挂掉后,slave节点不能主动切换成master节点。所以在哨兵模式下,哨兵就替换了手工切换master节点的工作。下面就来搭一个哨兵模式的集群吧。
搭建主从集群
哨兵模式是在主从集群的基础上增加哨兵节点实现的,所以还是需要一个主从集群。关于主从集群的搭建方法参考:redis集群之主从复制
- redis-node1:6379(主)
- redis-node2:6380(从)
- redis-node3:6381(从)
搭建哨兵集群
哨兵集群使用的配置文件是sentinel.conf
,可以到官网下载。
配置如下:
#哨兵服务的端口,这里采用配置文件的方式,则依次配置成26379、26380、 26381,也可以通过docker启动的时候映射端口
port 26379
#禁止保护模式
protected-mode no
#配置监听的主服务器 192.168.11.128 6379
#mymaster代表服务器名称,可以自定义
#2代表只有两个或者两个以上的烧饼认为主服务器不可用的时候,才会做故障切换操作
sentinel monitor mymaster 192.168.11.128 6379 2
#sentinel auth-pass 定义服务的密码
#mymaster服务名称
#123456 Redis服务器密码
sentinel auth-pass mymaster 123456
启动哨兵:
# redis-sentinel sentinel.conf
docker run -idt --name sentinel1 -p 26379:26379 -v /usr/local/redis/sentinel1/sentinel.conf:/etc/redis/sentinel.conf -v /usr/local/redis/sentinel1/data:/data --privileged=true docker.io/redis redis-sentinel /etc/redis/sentinel.conf
至此完成哨兵集群的配置
测试哨兵
接下来我们停掉节点1,看看哨兵是否成功切换master节点。
很显然,切换成功,哨兵选举出node3当选master节点,node2还是作为slave节点。
主从备份是仍然可用的。