Ошибка MongoDB: Невозможно достичь основного для набора [set_name] при подключении к набору реплики Монго - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь подключиться к реплике MongoDB, набор состоит из 3-х моноконтейнеров, но появляется сообщение об ошибке: Unable to reach primary for set rs0.

Репозиторий Git: https://github.com/frontalnh/mongodb-replica-set

Я сделалDocker Swarm состоит из 3-х Docker-контейнера MongoDB и отображает каждый порт на localhost: 27017, 27018, 27019

Подключение к одному Docker-контейнеру Mongo возможно с помощью следующей команды

mongo localhost:27017

Но Когда я пытаюсь подключиться к реплике, набор состоит из 3 по команде ниже,

Сообщение об ошибке: Unable to reach primary for set rs0 происходит

Команда

mongo "mongodb://localhost:27017,localhost:27018,localhost:27019/testdb?replicaSet=rs0"

Конфигурация

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 });

Докер Compose

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'

1 Ответ

0 голосов
/ 01 ноября 2018

Я решил это путем регистрации имени хоста в localhost

Каждый, кому нужна реплика монго в localhost, может настроить набор реплик с помощью docker-compose.

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

...