Вызов rs.status сразу после того, как rs.initiate выдает ошибку аутентификации - PullRequest
0 голосов
/ 28 августа 2018

Я поместил все шаги, чтобы инициировать набор реплик в сценарии оболочки. По сути, я пытаюсь преобразовать автономный экземпляр A в набор реплик, который включает в себя один арбитр B и один вторичный узел C. В сценарии приведены следующие шаги:

  1. Запустить автономный экземпляр без параметра auth.
  2. Создайте пользователя-администратора для базы данных администратора mongodb со следующей ролью:

    Successfully added user: { "user" : "mongodb_admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }

  3. Остановить автономный экземпляр A.
  4. Запустите все три узла (A, B, C) с опцией установки реплик и контролем доступа к файлу ключей.
  5. Инициировать репликацию в экземпляре A, вызвав rs.initiate.
  6. Позвоните в rs.status, чтобы проверить, является ли здоровье всех участников равным 1 (в настоящее время в репликасе есть только A)
  7. Добавьте узел арбитра B и вторичный узел C в репликационный набор.
  8. Подождите, пока все узлы будут здоровы.

До шага 5 все в порядке. Я могу успешно запустить репликацию. Но шаг 6 выдает следующую ошибку:

2018-08-27T11:43:47.080+0100 E QUERY [thread1] Error: auth failed : 
DB.prototype._authOrThrow@src/mongo/shell/db.js:1608:20 @(auth):6:1 
@(auth):1:2

Когда я засыпаю 15 секунд между шагами 5 и 6, все работает отлично. Но я все еще хочу убедиться, что я все делаю правильно. Если усыпление в порядке, то как я могу убедиться, что 15 секунд можно подождать, прежде чем проверять состояние в шаге 6. Также я не могу понять, почему он выдает ошибку аутентификации, хотя я использовал тот же пользователя и пароль для запуска набора реплик?

MongoDB версия: 3.6.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...