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

如何从其他主机连接Bitnami Redis Cluster集群

解决Bitnami Redis Cluster跨主机集群连接失败问题

问题根源

你遇到的核心问题是Redis集群节点的通告地址配置错误:Bitnami Redis Cluster默认会使用容器内部的主机名(如redis-node-0)向客户端通告自身地址,而跨主机的客户端无法解析这些容器内部的主机名,导致集群客户端(Jedis、DataGrip)获取到无效的节点地址后无法建立连接。虽然单个节点的CLI能正常连接,但集群模式下需要客户端获取完整的节点路由信息,因此会出现连接失败。

解决方案

需要为每个Redis集群节点配置外部可访问的通告IP和端口,让集群向客户端返回正确的、跨主机可访问的节点地址。

修改docker-compose.yml配置

为每个redis-node-*服务添加REDIS_ANNOUNCE_IP和REDIS_ANNOUNCE_PORT环境变量:

  • REDIS_ANNOUNCE_IP:设置为Redis集群所在主机的局域网IP(即你的192.168.100.12)
  • REDIS_ANNOUNCE_PORT:设置为该节点对外映射的端口(对应每个服务的ports配置中的宿主机端口)

修改后的完整配置如下:

version: '3.8'

services:
  redis-node-0:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6385:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6385'

  redis-node-1:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6380:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6380'

  redis-node-2:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6381:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6381'

  redis-node-3:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6382:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6382'

  redis-node-4:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6383:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6383'

  redis-node-5:
    image: docker.io/bitnami/redis-cluster:7.2
    ports:
      - '6384:6379'
    environment:
      - 'ALLOW_EMPTY_PASSWORD=yes'
      - 'REDIS_CLUSTER_REPLICAS=1'
      - 'REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5'
      - 'REDIS_CLUSTER_CREATOR=yes'
      - 'REDIS_BIND=192.168.100.12'
      - 'REDIS_ANNOUNCE_IP=192.168.100.12'
      - 'REDIS_ANNOUNCE_PORT=6384'

volumes:
  redis-cluster_data-0:
    driver: local
  redis-cluster_data-1:
    driver: local
  redis-cluster_data-2:
    driver: local
  redis-cluster_data-3:
    driver: local
  redis-cluster_data-4:
    driver: local
  redis-cluster_data-5:
    driver: local

重新部署集群

因为原集群的节点信息已经持久化到卷中,需要先清理旧数据再重新启动:

  1. 停止并删除现有容器:
docker-compose down -v
  1. 重新启动集群:
docker-compose up -d

验证配置

集群启动完成后,从外部主机用集群模式连接Redis,执行CLUSTER NODES命令查看节点地址:

redis-cli -c -h 192.168.100.12 -p 6385
192.168.100.12:6385> CLUSTER NODES

如果输出的所有节点地址都是192.168.100.12加上对应的外部端口,说明配置生效,此时Jedis和DataGrip就能正常连接集群了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:17:35