我正在尝试使用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:
让我知道是否需要更多信息。