首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头上的Redis集群与network_mode主机组成-无法连接到redis-群集

码头上的Redis集群与network_mode主机组成-无法连接到redis-群集
EN

Stack Overflow用户
提问于 2021-06-12 20:09:29
回答 1查看 1.3K关注 0票数 1

我设置了一个包含6个节点的Redis集群,如下所示。在redis-集群文档中,必须使用network_mode host

代码语言:javascript
复制
version: "3.9"
    services:
        redis0:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7000
              PORT_BUS_CONFIG: 8100
          network_mode: "host"
    
        redis1:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7001
              PORT_BUS_CONFIG: 8101
          network_mode: "host"
    
        redis2:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7002
              PORT_BUS_CONFIG: 8102
          network_mode: "host"
    
        redis3:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7003
              PORT_BUS_CONFIG: 8103
          network_mode: "host"
    
        redis4:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7004
              PORT_BUS_CONFIG: 8104
          network_mode: "host"
    
        redis5:
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile-base
            args:
              PORT_CONFIG: 7005
              PORT_BUS_CONFIG: 8105
          network_mode: "host"
    
    
        redis-cluster:
          tty: true
          build:
            context: .
            dockerfile: ./DockerFile_Builders/Redis/Dockerfile
          #hostname: redis-server
          depends_on:
            - redis1
            - redis2
            - redis3
            - redis4
            - redis5
          network_mode: "host"
        
        user_service:
          depends_on:
            - "redis-cluster"
          links:
            - "redis-cluster"
          build:
            context: .
            dockerfile: DockerFile_Builders/Services/User/Dockerfile

现在,当我尝试使用以下方法连接时,需要从user-service容器连接到Redis集群:

代码语言:javascript
复制
RedisURI masterURI = RedisURI.create("redis://redis-cluster:7001");

我得到以下错误:

19:57:28.329生菜-epollEventLoop-4-1警告com.lambdaworks.redis.cluster.topology.ClusterTopologyRefresh -无法连接到redis-群集/:7003 chat_service_1 java.util.concurrent.CompletionException: java.net.UnknownHostException: redis-群集

但是,当user-service在本地启动(没有码头容器),而Redis集群仍然位于docker容器中时,通常使用以下方法建立连接:

代码语言:javascript
复制
RedisURI masterURI = RedisURI.create("redis://localhost:7001");
EN

回答 1

Stack Overflow用户

发布于 2021-06-12 20:37:08

我不是Java开发人员,但看起来您正在使用Docker Compose服务名为您的Redis集群构建DSN。

代码语言:javascript
复制
redis://redis-cluster:7001

docker-compose.yml文件中的redis-cluster是服务的名称

Docker通过自己的嵌入式DNS服务器在自己的网络中提供这样的主机名。在使用主机网络模式时,没有Docker网络,这通常是在docker-compose.yml中声明的。

这意味着您必须使用当前计算机已知的主机名。在开发期间,您可以继续使用localhost。在部署时,根据应用程序的体系结构,我认为您必须使用生产服务器的私有/公共IPv4地址。

使用Docker /Sward使用多个配置文件管理多个环境很容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67952623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档