上一篇我们说了redis的主从配置,我们也配置了一个主节点和两个从节点,主节点中写入的数据会自动同步到从节点中
但是这种方式有个缺陷,就是当主节点挂了,整个redis服务就不能用了,需要人为的去重启或者进行重新配置主节点,比较麻烦;
所以就有人想啊,要是专门有个人在旁边守着主节点,每隔一段时间就去看看主节点能不能用,如果不能用了,那就选择其中一个从节点来对外提供服务,因为从节点中数据和主节点中是一样的,刚好可以完美使用
但是直接请个人就太粗暴了,需要花银子,于是今天说的哨兵模式(sentinel)就起到这个人的作用,专门来帮你看着主节点是否正常
1. sentinel机制的配置
哨兵机制就是相当于请了一个人帮你看着的你redis主节点,当你的主节点A挂了之后,就会挑选一个从节点B变成主节点,就算后面A节点修好了回来了,此时A只能当从节点,这也叫做故障转移
下图就是配置哨兵需要的文件
哨兵的话需要监听所有的主从节点,难道我们需要配置所有的节点的ip和端口吗?这也太傻了
哨兵只需要配置主节点,就可以获取到所有主从节点的信息,其中原理就是哨兵通过和主节点保持心跳来看看主节点是否正常(不知道心跳的,可以看做每隔几秒钟就ping一下主节点)
sentinel.conf 文件如下,其中mymaster是给主节点取的名字,随意;然后就是主节点的ip+端口,最后的1表示只有一个哨兵
sentinel monitor mymaster 127.0.0.1 5000 1
启动sentinel.bat 文件如下:
redis-server.exe ./sentinel5000.conf --sentinel
2. sentinel的使用
然后双击启动sentinel.bat就可以启动哨兵去监听所有节点了;
当你启动了之后,你会发现一个很有意思的东西,就是sentinel.conf 配置文件自动的改变了
现在我们的主节点是5000端口的,我们把5000端口的redis给关了,等几秒钟,再看看这个配置文件变了
此时我们在6000端口的redis是主节点,可以进行读写操作,并且会同步数据到从节点