2016-07-22 7 views
3

У меня есть набор реплик MongoDB из 3 серверов (1 первичный, 1 вторичный, 1 арбитр, это набор реплик по умолчанию, созданный Google Cloud 1-click install). 2 файла конфигурации (mongod.conf) основного сервера и вторичного сервера были изменены с добавлением «security.authorization: enabled».Набор реплик MongoDB с простой аутентификацией пароля

Root пользователь добавляется с помощью следующей команды MongoDB оболочки:

use admin 
db.createUser({user:"root",pwd:"root",roles:["root"]}) 

После перезапуска служб MongoDB на первичных и вторичные серверах с «Суда службой mongod перезагрузки», подключение к набору реплик оказывается неустойчивым.

rs.status() иногда дают результат в виде

  • 1 первичный, 1 недостижим, 1 арбитр
  • 1 вторичный, 1, 1 вторичный арбитр
  • 1 вторичный, 1 недостижим, 1 арбитр

Как настроить базовую аутентификацию пароля (не используя ключевой файл) для реплики MongoDB правильно?

+0

Просьба предоставить полный выход rs.status(), который вы наблюдаете. – helmy

+0

Кроме того, можете ли вы уточнить, что вы подразумеваете под «неустойчивым»? Постоянно ли наблюдается rs.status()? Только для уверенного периода? Прерывистый? – helmy

+1

эй человек на самом деле я столкнулся с ошибкой 'Ошибка: не удалось добавить пользователя: не авторизовано admin для выполнения команды'. Вы также можете найти мой вопрос здесь http://stackoverflow.com/questions/41783700/when-creating-first-admin-user-on-mongdb-cluster-getting-error-couldnt-add-use. Было бы намного проще, если бы вы могли сказать мне, из какого URL (источника) вы сделали всю эту аутентификацию пароля, пожалуйста, помогите мне, я искал везде, но ничего не нашел? –

ответ

4

Я наконец нашел ответ. Набор реплик MongoDB требует как учетной записи пользователя, так и ключевого файла. Keyfile кажется для проверки подлинности между серверами в наборе реплик, не для регистрации в

Создать MongoDB ключевой файл на Linux:.

cd 
openssl rand -base64 741 > mongodb.key 
chmod 600 mongodb.key 

mongod.conf файла:

replication: 
    replSetName: rs0 

security: 
    authorization: enabled 
    keyFile: /home/mongodb.key 

пользователя Администратор:

(just like in question content) 
+2

У меня такая же проблема прямо сейчас, я сгенерировал ключ и предоставил его в отдельные файлы .conf, 4 в моем случае. теперь, когда я запускаю 'mongod' без аутентификации, он не может выполнять' rs.initiate() 'или создавать пользователей. Ты знаешь почему? – Gurkha

+0

создайте пользователя перед созданием репликации, rs.initiate только на первом сервере. «Используйте rs.initiate() для одного и только одного члена набора реплик» - https://docs.mongodb.com/manual/tutorial/deploy-replica-set/ – johnlowvale

+0

, поэтому в основном запускаем первый экземпляр без 'репликации : ', создайте пользователя admin, а затем перезапустите с помощью' replication: 'enabled, а затем запустите' rs.initiate() '? Когда я запускаю оставшиеся экземпляры? – Gurkha