假如现在有3台机器信息如下:
A 192.168.131.1 1111(Master) 1112(Slave)
B 192.168.131.2 2221(Master) 2222(Slave)
C 192.168.131.3 3331(Master) 3332(Slave)
-
在3主3从的redis-cluster配置过程中,如果出现了,Waiting for the cluster to join… 这句话,并一直卡在这里,需要考虑以下原因:
1)配置文件redis.conf 中的bind 设置,IP要是本机地址
-
A-redis.conf :bind 192.168.131.1
-
B-redis.conf :bind 192.168.131.2
-
C-redis.conf :bind 192.168.131.3
2)确保所有使用的端口之间互通,可用telnet ip port 测试**
3)登录到每个客户端,执行 flushall、 cluster reset,重启实例之前你要删除以下文件:
rm -rf nodes.conf // cluster-config-file
rm -rf dump.rdb // dbfilename
rm -rf appendonly.aof // appendfilename
4)如果通讯端口为6379,那么集群总线端口16379一定要打开【重要】
5)使用cluster meet语法
-
如果B给 A、C发送cluster meet信息(这里挺坑的):
B上执行redis-cli -c -h 192.168.131.2 -p 2221 cluster meet 192.168.131.1 1111 cluster meet 192.168.131.1 1112 cluster meet 192.168.131.3 3331 cluster meet 192.168.131.3 3332
如果执行完cluster meet之后,A与B处于handshanke,然后就断掉,导致cluster meet不成功
尝试检查你机器上的这些端口是否已打开:
A-port 打开:1111(通讯端口)、11111(总线端口)
1112(通讯端口)、11112(总线端口)
B-port 打开:2221(通讯端口)、12221(总线端口)
2222(通讯端口)、12222(总线端口)
C-port 打开:3331(通讯端口)、13331(总线端口)
3332(通讯端口)、13332(总线端口)
现在再去执行cluster meet操作便可以成功了