Подключение к базе данных в кластере MongoDB

К хостам кластера Managed Service for MongoDB можно подключиться:

  • Через интернет, если вы настроили публичный доступ для нужного хоста. К таким хостам подключиться можно только используя SSL-соединение.
  • С виртуальных машин Яндекс.Облака, расположенных в той же виртуальной сети. Если к хосту нет публичного доступа, для подключения с таких ВМ SSL-соединение использовать необязательно.

Для подключения к хостам кластеров Managed Service for MongoDB указывайте порт 27018.

Примечание

Если публичный доступ в вашем кластере настроен только для некоторых хостов, автоматическая смена основной реплики может привести к тому, что вы не сможете подключиться к основной реплике из интернета.

Настройка SSL-сертификата

MongoDB-хосты с публичным доступом поддерживают только соединения с SSL-сертификатом. Подготовить сертификат можно так:

$ mkdir ~/.mongodb
$ wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O ~/.mongodb/CA.pem
$ chmod 0600 ~/.mongodb/CA.pem

Строка подключения

Подключиться к БД можно с помощью команды mongo, перечислив все хосты кластера в значении параметра host.

Пример команды с заполненным FQDN хоста вы можете посмотреть в консоли управления, нажав на кнопку Подключиться на странице кластера.

Подключиться из интернета к хосту, для которого настроен публичный доступ, можно только с SSL-сертификатом.

$ mongo --norc \
        --tls \
        --tlsCAFile ~/.mongodb/CA.pem \
        --host 'rs01/<FQDN хоста 1>:27018,<FQDN хоста 2>:27018,<FQDN хоста N>:27018' \
        -u <имя пользователя> \
        -p <пароль пользователя> \
        <имя БД>

Подключиться из интернета к хосту, для которого настроен публичный доступ, можно только с SSL-сертификатом.

$ mongo --norc \
        --ssl \
        --sslCAFile ~/.mongodb/CA.pem \
        --host 'rs01/<FQDN хоста 1>:27018,<FQDN хоста 2>:27018,<FQDN хоста N>:27018' \
        -u <имя пользователя> \
        -p <пароль пользователя> \
        <имя БД>

Если вам не нужно шифровать трафик внутри виртуальной сети при подключении к БД, то вы можете подключаться с виртуальной машины Яндекс.Облака без SSL-соединения. Передайте параметр sslmode со значением disable:

$ mongo --norc \
        --host 'rs01/<FQDN хоста 1>:27018,<FQDN хоста 2>:27018,<FQDN хоста N>:27018' \
        -u <имя пользователя> \
        -p <пароль пользователя> \
        <имя БД>

Запросы на запись будут автоматически направлены к основной реплике кластера.