上篇文章我们说了replication的一主二从复制和链式复制。
但这都是不可行的,因为它要你去手动设置老大(当主机挂掉之后),这会带来业务的停止。
所以,我们引入了哨兵模式。
哨兵就是一个进程,它会站岗,然后监视着master的活动。如果哨兵觉得master已经死了,那他就会根据算法自动选一个老大。这是哨兵智能的地方。
如果要布置哨兵集群的话,哨兵们会进行投票来选老大。
既然哨兵是一个进程,所以我们肯定要启动它:
在redis的目录下,还有sentinel的配置文件:
这里面的内容非常多。
我们这次实现一个最简单版的。
我们自定义一个配置文件sentinel.conf
,里面只有一行:
sentinel monitor mymaster 127.0.0.1 6379 1
mymaster
是一个名字,可以随便取。然后监控的是127.0.0.1 6379
,从节点不用写,sentinel会自动监测到。后面那个1表示需要有多少个sentinel同意才能选出主节点。因为我们这里只有一个sentinel,那就写1就行了。
启动sentinel:
还是一样,我们让6379为master,6380和6381为slave。
现在我让6379停掉,30秒之后就会有日志出来:
6380自动被选为master了:
6381自动跟着6380混了:
而且我们自定义的配置文件也发生了变化:
如果此时6379再回来,它会自动成为6380的slave: