Docker Swarm + Mongo:无法连接到管理器节点

时间:2020-02-26 12:18:46

标签: mongodb docker replicaset swarm

我正在尝试使用Docker Swarm创建一个Mongo ReplicaSet,它在不同的机器上具有3个副本集。

到目前为止,我已经创建了Docker群,并使用docker stack deploy -c docker-compose.yml mono-prod一个mongo容器在管理器上成功部署了另外2个工作器。

在管理器上:如果我使用bash登录到容器,则可以使用docker-compose.yml(ping mongos_monoprix_secondary1中的服务名称成功ping通2个工作节点。 。我还可以将mongo连接到两个工人上,例如mongo --host mongos_monoprix_secondary1

在每个工作人员上:我可以ping通经理和另一个工作人员。但是,当我尝试使用mongo --host mongos_monoprix_primary连接到管理器上的mongo实例时,总是会超时。 (但我可以连接到其他工作人员的mongo容器)

这似乎使我无法在Manager节点上使用主服务器创建ReplicaSet。

但是,我可以创建一个ReplicaSet,其中只有2个节点,选择一个工人作为主节点,另一个选择辅助节点,因为这两个节点可以相互连接。

我错过了什么吗?

这是我的docker-compose.yml

version: '3.5'

services:
  mongos_monoprix_primary:
    image: mongo
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs_mono_0" ]
    volumes:
      - ./data_primary:/data/db
    networks:
      - mono-mongo-cluster
    deploy:
      replicas: 1
      placement: 
        constraints:
          - node.labels.role == mono-db-primary

  mongos_monoprix_secondary1:
    image: mongo
    restart: always
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs_mono_0" ]
    volumes:
      - ./data_secondary1:/data/db
    networks:
      - mono-mongo-cluster
    deploy:
      replicas: 1
      placement: 
        constraints:
          - node.labels.role == mono-db-secondary1

  mongos_monoprix_secondary2:
    image: mongo
    restart: always    
    entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "rs_mono_0" ]
    volumes:
      - ./data_secondary2:/data/db
    networks:
      - mono-mongo-cluster
    deploy:
      replicas: 1
      placement: 
        constraints:
          - node.labels.role == mono-db-secondary2

networks:
  mono-mongo-cluster:    

让我知道是否需要更多信息。

0 个答案:

没有答案