You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker搭建6节点Redis集群报Connection refused连接拒绝错误

错误产生原因
  • 挂载与启动参数错误导致Redis未正常启动:一是启动命令中-v参数将宿主机单个配置文件挂载到容器内/usr/local/etc/redis目录路径,Docker无法正确将单文件挂载到目录路径,会导致容器内该路径结构异常;二是redis-server启动参数仅指定了目录路径/usr/local/etc/redis/,未指向具体配置文件,Redis无法加载自定义配置,会使用默认配置监听6379端口,8001端口没有运行Redis服务,直接触发连接拒绝。
  • 网络配置错误导致节点间无法通信:一是配置文件中bind 127.0.0.1配置让Redis仅监听容器内部回环地址,同Docker网络下的其他容器无法访问该节点;二是集群创建命令中所有节点地址均填写127.0.0.1,该地址仅指向当前执行命令的容器自身,其余5个节点不在当前容器的回环地址上,无法建立连接。
可行解决方案

按以下步骤调整配置即可:

  1. 修改所有节点的Redis配置文件
    将每个node*.conf内的bind 127.0.0.1修改为bind 0.0.0.0,允许Redis监听容器内所有网卡地址,支持同网络下其他容器访问。以node1.conf为例,修正后配置如下:
    port 8001
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 15000
    bind 0.0.0.0
    
    其余节点配置仅需修改port为对应8002-8006端口即可。
  2. 修正容器启动的挂载与启动参数
    挂载参数需保证宿主机路径和容器内路径类型一致(文件对应文件、目录对应目录),同时启动Redis时需指定到具体配置文件路径,两种挂载方式二选一即可,其余节点仅需替换对应端口、容器名、宿主机路径:
    • 目录挂载方式(推荐):将节点整个文件夹挂载到容器内配置目录,启动时指定具体配置文件路径
    docker run -v D:/Redis/node1:/usr/local/etc/redis -p 8001:8001 --name redis_node1 --network redis-network redis redis-server /usr/local/etc/redis/node1.conf
    
    • 单文件挂载方式:将配置文件直接挂载到容器内配置文件的完整路径
    docker run -v D:/Redis/node1/node1.conf:/usr/local/etc/redis/node1.conf -p 8001:8001 --name redis_node1 --network redis-network redis redis-server /usr/local/etc/redis/node1.conf
    
    所有节点启动后,执行docker logs 对应容器名查看日志,确认Redis正常启动、集群模式开启、监听端口为配置的800x端口,无启动报错。
  3. 修正集群创建命令的节点地址
    自定义Docker网络redis-network内置DNS解析,可直接通过容器名访问对应节点。进入任意一个运行中的Redis容器,执行以下命令创建集群:
    redis-cli --cluster create redis_node1:8001 redis_node2:8002 redis_node3:8003 redis_node4:8004 redis_node5:8005 redis_node6:8006 --cluster-replicas 1
    
    执行后根据提示输入yes确认集群插槽分配,等待集群初始化完成即可。初始化完成后可连接任意节点执行cluster nodes命令,验证6个节点(3主3从)状态正常。

内容的提问来源于stack exchange,提问作者PRJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:18:47