什么是哨兵模式
在redis节点中,有一个主节点以及多个从节点,当主节点宕机以后,此时整个redis集群就只能读不能写,因为不存在主节点了,这时候就需要选举出一个新的主节点来提供正常的服务,而这种自动监测redis集群是否正常,以及自动选举出一个新的主节点的机制就是哨兵模式。
通常情况下,哨兵也是一个集群,因为哨兵本身也可能会出现问题,所以需要搭建一个哨兵集群在监测所有节点的同时,各个哨兵也互相监测。
哨兵模式的配置
- 启动所有节点
启动所有节点并配置主从节点
[root@lijh ~]# ps aux | grep redis
root 7164 0.1 0.3 171104 9344 ? Ssl 8月18 0:16 ./redis-server *:6379
root 7476 0.0 0.2 24788 7512 pts/0 S+ 8月18 0:00 ./redis-cli -p 6379
root 7508 0.0 0.3 240740 10116 ? Ssl 00:08 0:01 ./redis-server *:6381
root 7517 0.0 0.2 24788 7508 pts/2 S+ 00:08 0:00 ./redis-cli -p 6381
root 7520 0.0 0.3 240740 10140 ? Ssl 00:13 0:01 ./redis-server *:6380
root 7525 0.0 0.2 24788 7496 pts/1 S+ 00:13 0:00 ./redis-cli -p 6380
主节点6379端口的服务有两个从节点
2. 更改配置
更改sentonel.conf文件配置如下(最后一位改为1目的是一个哨兵监测到主机宕机后就重新选举主机,修改之前默认是2,一位我们当前只测试一个哨兵的情况,所以改为1)
注:如果有密码最好把密码都删了,我测试的时候发现有密码是导致失败的。
3. 启动哨兵
- 测试
我们shutdown掉主节点之后,等待30秒,可以看到哨兵的进程会提示如下:
表示主节点已经切换成了6381端口的服务了
查看6381的服务信息可以看到它确实成为了新的主节点:
如果此时再重新启动旧的主节点,它会自动变成一个从节点。
- 哨兵集群
哨兵也是需要建立集群的,而且需要建立在不同的服务器上,否则可能全部一起崩了。
其实创建集群也并不难,只要修改ip、端口号即可。
如果只有一台机器,那么只要将sentonel.conf像redis-server一样复制多份并修改里面的端口以及日志文件等即可,启动时也像启动redis服务一样标明启动对应的是哪个配置文件即可。