MongoDB 错误:连接到 mongo 副本集时无法访问集 [set_name] 的主服务器

Nam*_*Lee 10 mongodb replicaset docker-compose

我正在尝试连接到由 3 个 mongo docker-container 组成的 MongoDB 副本集,但出现错误消息:Unable to reach primary for set rs0发生。

Git 仓库:https : //github.com/frontalnh/mongodb-replica-set

我让 docker swarm 由 3 个 MongoDB docker-container 组成,并将每个端口映射到本地主机:27017、27018、27019

可以通过以下命令连接到单个 mongo docker-container

mongo localhost:27017
Run Code Online (Sandbox Code Playgroud)

但是当我尝试通过以下命令连接到由 3 个组成的副本集时,

错误信息:Unable to reach primary for set rs0发生

命令

mongo "mongodb://localhost:27017,localhost:27018,localhost:27019/testdb?replicaSet=rs0"
Run Code Online (Sandbox Code Playgroud)

配置

cfg = {
  _id: 'rs0',
  members: [
    { _id: 0, host: 'mongo-rs0-1:27017' },
    { _id: 1, host: 'mongo-rs0-2:27017' },
    { _id: 2, host: 'mongo-rs0-3:27017' }
  ]
};
cfg.protocolVersion = 1;
rs.reconfig(cfg, { force: true });
Run Code Online (Sandbox Code Playgroud)

Docker 撰写

version: '3'

services:
  mongo-rs0-1:
    image: 'mongo-start'
    build: ./mongo-rs0-1
    ports:
      - '27017:27017' # left is computer's port right side is docker internal port
    volumes:
      - ./mongo-rs0-1/data:/data/db
    depends_on:
      - 'mongo-rs0-2'
      - 'mongo-rs0-3'

  mongo-rs0-2:
    image: 'mongo'
    command: --replSet rs0
    command: --config ./conf/mongo.conf
    ports:
      - '27018:27017'
    volumes:
      - ./mongo-rs0-2/data:/data/db
      - ./mongo-rs0-2/conf:/conf

  mongo-rs0-3:
    image: 'mongo'
    command: --replSet rs0
    command: --config ./conf/mongo.conf
    ports:
      - '27019:27017'
    volumes:
      - ./mongo-rs0-3/data:/data/db
      - ./mongo-rs0-2/conf:/conf

  setup-rs:
    image: 'setup-rs'
    build: ./setup
    depends_on:
      - 'mongo-rs0-1' # mongo-rs0-1 ???? ?????? ?? ???? ??? ? ??.

  adminmongo:
    image: 'mrvautin/adminmongo'
    ports:
      - '1234:1234'
Run Code Online (Sandbox Code Playgroud)

Nam*_*Lee 2

我通过在本地主机中注册主机名解决了这个问题

任何需要在本地主机中使用 mongo 副本集的人都可以使用 docker-compose 设置副本集。

https://github.com/frontalnh/mongodb-replica-set