我尝试设置一个运行 docker 的 Redis 集群,但当我尝试加入它们时它挂起。我的 docker ps
给我这个:
注意端口映射。
所有容器都有这个基本的 redis.conf 文件
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
cluster-announce-ip 127.0.0.1
cluster-announce-port [7001, 7002, 7003, 7004, 7005 or 7006]
cluster-announce-bus-port [7101, 7102, 7103, 7104, 7105 or 7106]
唯一的变化是每个 docker 容器的 cluster-announce-port
和 cluster-announce-bus-port
。我希望你明白这一点。
我尝试使用 ./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 加入节点127.0.0.1:7006
它完美地发现了它并询问是否应该接受配置:
但随后 redis-trib
无限期挂起,并显示“等待集群加入”。我可以通过 docker logs r_1
看到 r_6,纪元正在设置:
1:M 15 Jul 10:38:08.493 # configEpoch set to 1 via CLUSTER SET-CONFIG-EPOCH
所以 redis-trib
确实调用了不同的节点。
我真的无法在任何地方找到关于集群通告变量的任何信息。这里有人知道怎么做吗?我认为我的问题出在这部分。
我使用的redis版本是4.0.10。
最佳答案
好的,我想通了。我需要
- 将我的 cluster-announce-ip 设置为安装 docker 时创建的以太网适配器(打开终端并执行 ipconfig)
- 更新
redis-trib.rb
以反射(reflect)此 IP - 创建docker镜像时映射16379端口
关于docker - 调用 redis-trib 时启动 Redis 集群挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347622/