Подключение к MongoDB ReplicaSet на Kubernetes - PullRequest
0 голосов
/ 29 апреля 2020

Я развернул MongoDB ReplicaSet в Kubernetes, используя Helm и диаграмму stable/mongodb-replicaset

В Kubernetes я могу подключиться к MongoDB, используя строку подключения, которая является чем-то вроде

mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl

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

Есть ли обходной путь к этому?

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

Любая помощь по этому вопросу приветствуется.

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Диаграмма Хелма stable/mongodb-replicaset развертывает также 2 безголовых службы:

  1. <release name>-mongodb-replicaset
  2. <release name>-mongodb-replicaset-client

DNS-запись <release name>-mongodb-replicaset возвращает адрес всех реплик, поэтому для подключения к репликасу строка подключения имеет вид

"mongodb+srv://<release name>-mongodb-replicaset.namespace.svc.cluster.local/?tls=false&ssl=false"

Обратите внимание, что для tls и ssl установлено значение false для тестирование, поскольку они были включены по умолчанию.

0 голосов
/ 29 апреля 2020

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

В зависимости от драйвера это может или не может подключиться к реплике set (в противоположность этому узлу), который обычно имеет два решения:

  1. Добавить параметр replicaSet к URI.
  2. Укажите адреса первых двух узлов.

Кроме того, вы можете настроить SRV-записи и использовать SRV URI, как работает MongoDB Atlas. Это относится ко всем топологиям (включая сегментированные кластеры, к которым обнаружение набора реплик не относится).

...