redis-cluster - 从永远挂起的远程机器将节点从属添加到现有集群

Chr*_*eid 5 redis redis-cluster

我正在尝试将一个地址上的 8 个副本的集群连接到另一个地址上的现有集群。

副本服务器均以集群模式运行。

当我尝试执行以下任一操作时:

./redis-trib.rb add-node --slave REPLICA_IP:6380 MASTER_IP:6380

或者

./redis-cli --cluster add-node REPLICA_IP:6380 MASTER_IP:6380 --cluster-slave

我得到同样的结果;

Waiting for the cluster to join...........................

无限期地挂起。

两台服务器绝对可以看到对方,并且我可以从任一服务器连接到任何相关的 redis 节点(副本或主节点)。发现/交流端口(16830 等)也全部开放且可联系。这些命令的输出还表明已找到集群,因为它显示了每个节点及其正确的节点 ID。

这是任一 add-node 命令的完整输出:

>>> Adding node REPLICA_IP:6380 to cluster MASTER_IP:6380
>>> Performing Cluster Check (using node MASTER_IP:6380)
M: 043a5fa4fdca929d3d87f953906dc7c1f030926c MASTER_IP:6380
   slots:[0-2047] (2048 slots) master
M: e104777d31630eef11a01e41c7d3a6c98e14ab64 MASTER_IP:6386
   slots:[12288-14335] (2048 slots) master
M: 9c807d6f57a9634adcdf75fa1943c32c985bda1c MASTER_IP:6384
   slots:[8192-10239] (2048 slots) master
M: 0f7ec07deff97ca23fe67109da2365d916ff1a67 MASTER_IP:6383
   slots:[6144-8191] (2048 slots) master
M: 974e8b4051b7a8e33db62ba7ad62c7e54abe699d MASTER_IP:6382
   slots:[4096-6143] (2048 slots) master
M: b647bb9d732ff2ee83b097ffb8b49fb2bccd366f MASTER_IP:6387
   slots:[14336-16383] (2048 slots) master
M: a86ac1d5e783bed133b153e471fdd970c17c6af5 MASTER_IP:6381
   slots:[2048-4095] (2048 slots) master
M: 6f859b03f86eded0188ba493063c5c2114d7c11f MASTER_IP:6385
   slots:[10240-12287] (2048 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Automatically selected master MASTER_IP:6380
>>> Send CLUSTER MEET to node REPLICA_IP:6380 to make it join the cluster.
Waiting for the cluster to join
............................
Run Code Online (Sandbox Code Playgroud)

如果我CLUSTER MEET手动运行,然后CLUSTER NODES我可以暂时看到另一个节点处于“握手”状态,状态为“断开连接”,然后它消失。它显示的节点 ID 与实际不同。

Chr*_*eid 3

我想到了:

使用 tcpdump,我确认两台服务器都在 redis 服务器端口和握手端口上反复相互通信,而 add-slave 命令永远挂起。

但在每个节点的 redis 配置中,我有:

bind 0.0.0.0

但在主服务器和副本服务器上,配置必须为:

bind SERVER_IP

以便 CLUSTER MEET 正常工作。