在Redis-sentinel主从配置中,新主设备显示为初始主设备的向下

时间:2015-11-11 11:54:18

标签: redis redis-sentinel

使用3个节点(1个主节点和2个从节点)安装了redis(v.3.0.4)主从模型,每个节点都有requirepass,如https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-ubuntu-14-04中所述,然后在每个节点上启动3个sentinel,如上所述在文章http://blog.commando.io/redis-is-easy-trivial-hard/

在试图取下主人之后,哨兵已按预期将其中一名奴隶提升为主人。然后当老主人起来的时候 它又变成了一个奴隶,并认出了一个新的主人,这可以在 /etc/redis/sentinel.conf已使用新的主IP更新 在' sentinel monitor redis-cluster'属性。 但是已经注意到老主人尽管知道了新的主IP,但它认为新的主人是下来的,不像其他奴隶看到它。这可以通过对旧主服务器运行此命令来检查:

$redis-cli -a altoros info replication
#
Replication
role:slave
master_host: new master ip
master_port:6379
master_link_status:down

这似乎也导致了以下错误" MASTERDOWN与MASTER的链接断开,slave-serve-stale-data设置为' no'",当试图使用时用于测试节点上数据复制的同步客户端。

The logs of the old masters (/var/log/redis/redis-server.log) are showing:
20731:S 09 Nov 10:16:31.117 * Connecting to MASTER <new master="" ip="">: 6379
20731:S 09 Nov 10:16:31.117 * MASTER <-> SLAVE sync started
20731:S 09 Nov 10:16:31.118 * Non blocking connect for SYNC fired the event. 
20731:S 09 Nov 10:16:31.118 * Master replied to PING, replication can continue...
20731:S 09 Nov 10:16:31.119 * (Non critical) Master does not under stand REPLCONF listening-port: -NOAUTH Authentication required.
20731:S 09 Nov 10:16:31.119 * (Non critical) Master does not under stand REPLCONF capa:
-NOAUTH Authentication required.

这看起来像老主人无法对新主人进行身份验证,因为它 没有他的密码,但如何正确设置?

因为注意到/etc/redis/redis.conf在新的主人之后没有改变 提升,与/etc/redis/sentinel.conf不同,这可能会导致主人的redis.conf没有新主人的密码。

非常感谢您提前解决此问题的任何提示。

1 个答案:

答案 0 :(得分:3)

主机需要像奴隶一样进行配置,因为有一天它可能会成为一个主机。因此,您需要将masterauth设置为pod的密码。

您无需重新启动对“旧主人”执行以下操作即可执行此操作:

redis-cli -h oldmasterip -a thepassword config set masterauth thepassword
redis-cli -h oldmasterip -a thepassword config rewrite

从那时起它应该没问题,配置文件将会更新。