Подключение к кластеру Yandex StoreDoc из приложений
К кластеру Yandex StoreDoc можно подключиться с помощью инструментов командной строки, из графических IDE и Docker-контейнера. О подключении из кода вашего приложения смотрите Примеры кода.
В примерах ниже предполагается, что SSL-сертификат root.crt расположен в директории:
~/.mongodb/для Ubuntu;$HOME\.mongodbдля Windows.
При успешном подключении к кластеру и выполнении тестового запроса будет выведено имя БД, к которой было выполнено подключение.
Важно
Запросы с настройкой writeConcern: 1 могут приводить к отставанию данных на вторичных репликах. Это повышает риск таймаутов при операциях записи и потери данных при выходе из строя хоста-мастера, поэтому для таких кластеров не гарантируются SLAwriteConcern на высокую доступность.
Инструменты командной строки
Примеры кода с заполненным FQDN хоста доступны в консоли управления
Способ настройки зависит от того, включено ли в кластере шардирование.
Linux (Bash)
Перед подключением установите утилиту MongoDB Shell.
Для нешардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--tls \
--tlsCAFile ~/.mongodb/root.crt \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, читайте в инструкции.
После подключения выполните команду db.
Для нешардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
Для шардированного кластера:
mongosh --norc \
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \
--username <имя_пользователя_БД> \
--password <пароль_пользователя_БД> \
<имя_БД>
О том, как получить FQDN хоста, читайте в инструкции.
После подключения выполните команду db.
mongosh "mongodb+srv://<имя_пользователя_БД>:<пароль_пользователя_БД>\
@<идентификатор_кластера>.mdb.yandexcloud.kz/<имя_БД>"
Идентификатор кластера можно запросить со списком кластеров в каталоге.
После подключения выполните команду db.
При необходимости вы можете добавить к команде параметры подключения, например:
tls— включение TLS-шифрования соединения:trueилиfalse. По умолчанию шифрование включено.tlsCAFile— путь к файлу.pem, содержащему корневые сертификаты центра сертификации.readPreference— с каких хостов выполнять чтение:primary— только с первичной реплики (мастера);primaryPreferred— с мастера, а если он недоступен — с вторичных реплик;secondary— только с вторичных реплик;secondaryPreferred— с вторичных реплик, а если они отсутствуют, то с мастера;nearest— с хоста с наименьшей задержкой.
authSource— имя базы данных, в которой хранятся учетные данные пользователя. По умолчанию совпадает со значением параметра<имя_БД>.appName— имя приложения, отображаемое в логах.
Описание других доступных параметров подключения приведено в официальной документации
Строка параметров начинается со знака ?, разделителем является знак &.
Пример команды с параметрами подключения:
mongosh "mongodb+srv://user********:qwe********@c9qng7jhsgtg********.mdb.yandexcloud.kz\
/db********?authSource=admin&appName=debug"
Windows (PowerShell)
Перед подключением установите утилиту MongoDB Shell.
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' `
--tls `
--tlsCAFile $HOME\.mongodb\root.crt `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для шардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' `
--tls `
--tlsCAFile $HOME\.mongodb\root.crt `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
О том, как получить FQDN хоста, читайте в инструкции.
После подключения выполните команду db.
Для нешардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_Yandex_StoreDoc>:27018,...,<FQDN_хоста_N_Yandex_StoreDoc>:27018' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
Для шардированного кластера:
mongosh.exe --norc `
--host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' `
--username <имя_пользователя_БД> `
--password <пароль_пользователя_БД> `
<имя_БД>
О том, как получить FQDN хоста, читайте в инструкции.
После подключения выполните команду db.
mongosh.exe "mongodb+srv://<имя_пользователя_БД>:<пароль_пользователя_БД>`
@<идентификатор_кластера>.mdb.yandexcloud.kz/<имя_БД>"
Идентификатор кластера можно запросить со списком кластеров в каталоге.
После подключения выполните команду db.
При необходимости вы можете добавить к команде параметры подключения, например:
tls— включение TLS-шифрования соединения:trueилиfalse. По умолчанию шифрование включено.tlsCAFile— путь к файлу.pem, содержащему корневые сертификаты центра сертификации.readPreference— с каких хостов выполнять чтение:primary— только с первичной реплики (мастера);primaryPreferred— с мастера, а если он недоступен — с вторичных реплик;secondary— только с вторичных реплик;secondaryPreferred— с вторичных реплик, а если они отсутствуют, то с мастера;nearest— с хоста с наименьшей задержкой.
authSource— имя базы данных, в которой хранятся учетные данные пользователя. По умолчанию совпадает со значением параметра<имя_БД>.appName— имя приложения, отображаемое в логах.
Описание других доступных параметров подключения приведено в официальной документации
Строка параметров начинается со знака ?, разделителем является знак &.
Пример команды с параметрами подключения:
mongosh.exe "mongodb+srv://user********:qwe********@c9qng7jhsgtg********.mdb.yandexcloud.kz`
/db********?authSource=admin&appName=debug"
Подключение с аутентификацией через IAM
Вы можете подключиться к кластеру Yandex StoreDoc с помощью аутентификации через IAM. Для аутентификации используйте аккаунт на Яндексе, федеративный или локальный аккаунт.
Подключение выполняется через MongoDB Shell. О том, как установить утилиту MongoDB Shell, читайте в инструкции.
Перед подключением настройте группы безопасности, а также включите публичный доступ к хостам кластера, если подключение выполняется через интернет.
Чтобы подключиться к кластеру с помощью аутентификации через IAM:
-
Настройте аутентификацию:
Консоль управления-
Перейдите на страницу каталога
. -
Перейдите в сервис Yandex StoreDoc.
-
Выберите кластер.
-
Назначьте аккаунту в Yandex Cloud роль
managed-mongodb.clusters.connectorна кластер:-
Выберите вкладку Права доступа.
-
В правом верхнем углу страницы нажмите кнопку Назначить роли.
-
В поле Кому выдать доступ выберите аккаунт.
Чтобы найти нужный аккаунт, введите в это поле адрес почты, к которому привязан аккаунт.
-
Нажмите кнопку
Добавить роль и выберите рольmanaged-mongodb.clusters.connector. -
Нажмите кнопку Сохранить.
-
-
Создайте пользователя Yandex StoreDoc:
-
Выберите вкладку
Пользователи. -
В правом верхнем углу страницы нажмите кнопку Создать пользователя.
-
Выберите способ авторизации IAM.
-
Выберите аккаунт в Yandex Cloud с ролью
managed-mongodb.clusters.connector. -
Выберите базы данных и настройте для них роли:
-
Нажмите кнопку
Добавить базу данных и выберите базу данных. -
Назначьте роли для выбранной базы данных.
Чтобы назначить роль, нажмите кнопку
и выберите роль.
-
-
Нажмите кнопку Создать.
-
-
-
Получите IAM-токен и поместите его в переменную окружения
IAM_TOKEN:- Инструкция для аккаунта на Яндексе.
- Инструкция для федеративного аккаунта.
- Инструкция для локального аккаунта.
-
Подключитесь к кластеру, выполнив команду:
Для нешардированного кластера:
mongosh --norc \ --tls \ --tlsCAFile ~/.mongodb/root.crt \ --host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27018,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27018' \ --username "<имя_пользователя_БД>" \ --password "$IAM_TOKEN" \ --authenticationDatabase '$external' \ --authenticationMechanism PLAIN \ <имя_БД>Для шардированного кластера:
mongosh --norc \ --tls \ --tlsCAFile ~/.mongodb/root.crt \ --host '<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...,<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017' \ --username "<имя_пользователя_БД>" \ --password "$IAM_TOKEN" \ --authenticationDatabase '$external' \ --authenticationMechanism PLAIN \ <имя_БД>Где
--username— имя пользователя базы данных, которое совпадает с адресом почты аккаунта в Yandex Cloud.О том, как получить FQDN хоста, читайте в инструкции.
Подключение из графических IDE
Подключения проверялись в следующем окружении:
- MacOS Big Sur 11.3.
- JetBrains DataGrip:
2021.1. - DBeaver Enterprise:
21.0.
Подключаться из графических IDE можно только к хостам кластера в публичном доступе с использованием SSL-сертификата.
Чтобы избежать ошибок при подключении, сохраните сертификат
DataGrip
- Создайте источник данных:
- Выберите в меню File → New → Data Source → MongoDB.
- На вкладке General:
-
Укажите параметры подключения:
-
User, Password — имя и пароль пользователя БД;
-
URL — строка подключения.
Для нешардированного кластера:
mongodb://<FQDN_хоста_1_Yandex_StoreDoc>:27018,..,<FQDN_хоста_N_Yandex_StoreDoc>:27018/<имя_БД>Для шардированного кластера:
mongodb://<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017/<имя_БД>О том, как получить FQDN хоста, читайте в инструкции.
-
-
Нажмите ссылку Download, чтобы загрузить драйвер соединения.
-
- На вкладке SSH/SSL:
- Включите настройку Use SSL.
- В поле CA file укажите путь к файлу SSL-сертификата для подключения.
- Нажмите ссылку Test Connection для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку OK, чтобы сохранить источник данных.
DBeaver
Поддержка подключения к кластеру Yandex StoreDoc доступна только в коммерческих редакциях DBeaver
Чтобы подключиться к кластеру:
- Создайте новое соединение с БД:
- Выберите в меню База данных пункт Новое соединение.
- Выберите из списка БД MongoDB.
- Нажмите кнопку Далее.
- Настройте параметры подключения на вкладке Главное:
-
В блоке Адрес переключите Type на
URLи укажите строку подключения.Для нешардированного кластера:
mongodb://<FQDN_хоста_1_Yandex_StoreDoc>:27018,..,<FQDN_хоста_N_Yandex_StoreDoc>:27018/<имя_БД>Для шардированного кластера:
mongodb://<FQDN_хоста_1_MONGOINFRA_или_MONGOS>:27017,...<FQDN_хоста_N_MONGOINFRA_или_MONGOS>:27017/<имя_БД>О том, как получить FQDN хоста, читайте в инструкции.
-
В списке Устройство выберите значение
SCRAM-SHA-256(тип шифрования пароля при подключении). -
В блоке Полномочия укажите имя и пароль пользователя БД.
-
- На вкладке SSL:
- Включите настройку Использовать SSL.
- В поле Корневой сертификат укажите путь к сохраненному файлу SSL-сертификата.
- В блоке Настройки включите Пропустить валидацию имени хоста.
- Нажмите кнопку Тест соединения ... для проверки подключения. При успешном подключении будет выведен статус подключения, информация о СУБД и драйвере.
- Нажмите кнопку Готово, чтобы сохранить настройки соединения с БД.
Подготовка к подключению из Docker-контейнера
Чтобы подключаться к кластеру Yandex StoreDoc из Docker-контейнера с SSL, добавьте в Dockerfile строки:
RUN apt-get update && \
apt-get install wget --yes && \
mkdir --parents ~/.mongodb && \
wget "https://storage.yandexcloud.kz/cloud-certs/CA.pem" \
--output-document ~/.mongodb/root.crt && \
chmod 0644 ~/.mongodb/root.crt
Чтобы подключаться без SSL, дополнительно настраивать Dockerfile не нужно.
После запуска Docker-контейнера перейдите в него и установите утилиту mongosh. Она понадобится для подключения к кластеру.