非默认端口下Docker Compose部署Redis集群同步异常求助
问题解决:Redis集群从节点连接主节点使用默认端口6379而非自定义端口
问题原因
Redis集群节点会向集群公告自身的IP和端口信息,当使用自定义端口但未明确配置cluster-announce-port参数时,节点可能错误地将默认端口6379作为公告端口,导致从节点获取到错误的主节点端口信息,进而尝试连接6379端口。
解决方案
1. 修正每个Redis节点的配置
在Docker Compose中,为每个Redis服务添加cluster-announce-ip和cluster-announce-port参数,确保节点向集群公告正确的IP和自定义端口。以其中一个节点为例:
redis-2: image: redis:latest command: > redis-server --port 1002 --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes --cluster-announce-ip 173.18.0.2 --cluster-announce-port 1002 networks: redis-cluster: ipv4_address: 173.18.0.2
对所有6个节点(3主3从)重复此配置,替换对应的IP和端口(如173.18.0.3:1003、173.18.0.4:1004等)。
2. 重新部署集群
停止并删除现有容器:
docker-compose down
重新启动节点:
docker-compose up -d
3. 重新创建集群
再次执行集群创建命令:
redis-cli --cluster create 173.18.0.2:1002 173.18.0.3:1003 173.18.0.4:1004 173.18.0.5:1005 173.18.0.6:1006 173.18.0.7:1007 --cluster-replicas 1
4. 验证配置
连接任意节点,查看集群节点信息,确认所有节点的公告地址都是正确的IP和自定义端口:
redis-cli -h 173.18.0.2 -p 1002 cluster nodes
输出中每个节点的地址格式应为[IP]:[自定义端口],而非默认的6379端口。
内容的提问来源于stack exchange,提问作者Carlos Sanchez
相关产品推荐
相关产品推荐

