主从复制和哨兵模式的搭建,请参考其他文章,很简单,而且别人写的很详细,这里主要解决哨兵模式无法切换的问题。
目前我这边的配置为:
一主二从三哨兵
出现的问题主要有:
问题1:没有看到切换master节点的信息:
解决方法:修改redis-sentinel.conf 配置文件,将最少投票数改为1,(大于3个哨兵的,建议投票数为:哨兵数/2 -1 不为别的,我只怕redis抽风!! ) 注:官方文档并没有说需要【(哨兵数/2)-1 】,是我自己设置并解决我当前的问题的,官方文档只说如果哨兵数过少,则故障转移是不会产生的,也就是说,一两个哨兵,并不是高可用配置,当master挂掉后,不一定会给你进行故障转移。:
详见:https://redis.io/topics/sentinel
问题二:哨兵选举后,无法真正地切换。
无法切换,有几种情况:
1-redis保护模式开启了
2-端口没有放开;
3-master密码和从密码不一致。
4-master节点的redis.conf没有添加masterauth
建议处理方法如下:
每一台机子下的:redis.conf配置文件,还有哨兵的redis-sentinel.conf 配置文件修改成:
bind 0.0.0.0
protected-mode no
2-各个哨兵,端口要能相互telnet 对应的ip 端口
查看想开的端口是否已开:firewall-cmd --query-port=26379/tcp
添加指定需要开放的端口:firewall-cmd --add-port=26379/tcp --permanent
重载入添加的端口:firewall-cmd --reload
查询指定端口是否开启成功:firewall-cmd --query-port=26379/tcp
返回yes即可
3–master密码和从密码不一致
由于哨兵配置的时候没有配置从密码,只配置了master的密码,那么问题来了,如果master挂掉了,哨兵sentinel切换master的时候,怎么去修改其他节点的配置信息呢。实际上,哨兵是拿master的密码去认证的,所以,我们在配置redis的时候,建议redis的账号密码一致(至少主账号的master-auth密码和从节点的一致)
4-master节点也要设置masterauth,避免当master重启后无法变成新master节点的从节点
各位参考以上的配置进行操作即可。如果还有其他的配置需要注意的