#mongodb #nosql
Вопрос:
Я создал кластер MongoDB с архитектурой PSA (Первичный, вторичный, арбитр) с облачной платформой Google.
Я включил аутентификацию и настроил файл ключей для каждой реплики (и арбитра).
Затем я открыл порт 27017 для внешнего доступа, как только аутентификация была установлена.
После этого я попытался подключиться к кластеру, как показано в документе MongoDB, как показано ниже :
mongodb://user:VeRyG00dPwD@primary_external_IP:27017,secondary_external_IP:27017,arbiter_external_IP:27017/my_db?authSource=adminamp;replicaSet=rs0
Это не работает, и время ожидания подключения истекло.
Я также попробовал использовать только IP-адрес основной реплики:
mongodb://user:VeRyG00dPwD@primary_external_IP:27017/my_db?authSource=adminamp;replicaSet=rs0
Это тоже не сработало, время подключения истекло
Тогда я попробовал просто :
mongodb://user:VeRyG00dPwD@ primary_external_IP:27017/admin
И это сработало просто отлично, но, афаик, это не должно так работать с набором реплик. Кстати, когда я отправляю данные, используя эту строку подключения, она использует только первичный узел, а не вторичный…
Является ли это нормальным поведением для кластера набора реплик ? Может быть, я пропустил какой-то параметр при настройке, но я не знаю, какой именно.
Заранее спасибо за вашу помощь !
Редактировать:
Вот строки о режиме репликации:
replication:
replSetName: rs0
enableMajorityReadConcern: false
Комментарии:
1. Не волнуйтесь, это не настоящая информация, все ложь 😉 Для имени набора реплик я только что проверил 3 узла, и все то же самое. (Я добавил строки в правку поста)
2. Как я мог это сделать ? Я только что создал кластер с помощью помощника GCP и не запускал никаких команд для установки узлов в моде ReplicaSet :/ (Я просто понял ваш комментарий о пользователях, я удалил раздел в посте)
3. Я думаю, что вы можете подключиться к любому из узлов и запустить
rs.initiate()
, и это прочитает файлы конфигурации. docs.mongodb.com/manual/tutorial/deploy-replica-set . Я удаляю комментарий, чтобы сохранить ваш пост в чистоте.4. Это действительно показало первичное вторичное и арбитра по подсказке ! и
rs.status
возвращает информацию5. Этот вывод может быть полезно включить, чтобы люди здесь могли видеть, что набор реплик запущен