1

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

在试图拿下主人之后,哨兵果然将其中一名奴隶提升为主人。然后,当旧的主服务器再次启动时,它变成了从服务器并识别出新的主服务器,这可以在 /etc/redis/sentinel.conf 中看到,该文件在“sentinel monitor redis-cluster”属性中使用新的主 IP 进行了更新。但是已经注意到旧的master尽管知道新的master IP,但它认为新的master是down的,不像其他slave看到它。这可以通过对旧主服务器运行此命令来检查:

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

当尝试使用同步客户端测试节点上的数据复制时,这似乎也导致了以下错误“与 MASTER 的 MASTERDOWN 链接已关闭并且 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.

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

因为注意到新的master升级后/etc/redis/redis.conf并没有改变,不像/etc/redis/sentinel.conf,这可能导致master的redis.conf没有密码新主人。

希望有任何解决问题的提示,在此先感谢。

4

1 回答 1

4

主服务器需要像从服务器一样进行配置,因为有一天它可能会变成一个。因此,您需要将其设置masterauth为 pod 的密码。

您可以在不重新启动 y 的情况下执行此操作,对“旧主”执行以下操作:

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

从那时起应该没问题,并且配置文件将被更新。

于 2015-11-11T20:42:57.217 回答