如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没有密码新主人。
希望有任何解决问题的提示,在此先感谢。