1. 环境信息与操作
1.1 redis集群信息
主机 | 节点 |
---|---|
xx.xx.20.172 | master |
xx.xx.20.173 | slave |
xx.xx.20.174 | slave |
1.2 问题与操作
- 最初对于该三节点的集群,conf文件都配置了masterauth和requirepass
- 之后开发需求不需要客户端连接密码,所以通过命令方式将requirepass密码取消,并将配置文件中requirepass删除,节点状态正常,集群通信正常(没有重启节点是因为使用config set修改后redis及时加载生效)
- 今天机器原因重启导致174主机的redis节点也重启了,发现该节点down掉了,日志报错信息:-ERR Client sent AUTH, but no password is set
2. 问题分析
- 查看了官网的信息和一些redis书籍的表述,发现在主从复制的时候,在身份验证阶段,没有配置masterauth不进行认证,配置的话从节点通过发送AUTH命令获取masterauth的值来验证身份,但是主节点没有设置requirepass、从节点配置了masterauth就会返回no password is set 的错误;和实际情况一致,所以将主从的masterauth配置取消后,集群状态正常
- 在174节点没有重启前,该节点也是正常通信的,是因为在最开始有requirepaas的时候主从复制正常进行,虽然后面通过config set取消了requirepass的值,但实际主从复制状态并没有重新进行(只有节点链接断开的时候才会重新进行主从复制),所以在之前的使用一直正常没有问题