как подключить набор реплик mongodb, созданный с помощью Helm-диаграмм в кластере k8s

Я использую диаграмму управления стабильным mongodb-replicaset для создания mongodb внутри моего кластера k8s, размещенного в Azure. mongodb имеет три реплики. stable-mongodb-replicaset действует как поддиаграмма.


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

URL, который я использую для подключения:

"mongodb://myuser:mydbpwd@skeleton-mongodb-replicaset-client:27001/skeleton?authSource=admin&replicaSet=rs0"

вывод сервиса mongodb

введите описание изображения здесь

[1;30m2019-04-28 14:34:34,483 [0;39m => [34mINFO [0;39m [ [32mlocalhost-startStop-1 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Cluster created with settings {hosts=[skeleton-mongodb-replicaset-client:27001], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[1;30m2019-04-28 14:34:34,485 [0;39m => [34mINFO [0;39m [ [32mlocalhost-startStop-1 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Adding discovered server skeleton-mongodb-replicaset-client:27001 to client view of cluster
[1;30m2019-04-28 14:34:34,984 [0;39m => [34mINFO [0;39m [ [32mcluster-ClusterId{value='5cc5b9fab13658000122961a', description='null'}-skeleton-mongodb-replicaset-client:27001 [0;39m] [33mcom.mongodb.diagnostics.logging.SLF4JLogger [0;39m: Exception in monitor thread while connecting to server skeleton-mongodb-replicaset-client:27001
com.mongodb.MongoSocketOpenException: Exception opening socket
        at com.mongodb.connection.netty.NettyStream$2.operationComplete(NettyStream.java:158)
        at com.mongodb.connection.netty.NettyStream$2.operationComplete(NettyStream.java:145)
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:511)
        at io.netty.util.concurrent.DefaultPromise.notifyListeners0(DefaultPromise.java:504)
        at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:483)

мы используем драйвер org.mongodb: mongodb-driver-async версии 3.6.4, в то время как версия mongodb, которую мы используем, - 4.0


person Ganesh Pol    schedule 29.04.2019    source источник
comment
Вы специально используете порт 27001 вместо 27017?   -  person yanivoliver    schedule 29.04.2019


Ответы (1)


Безголовый сервис используется для управления сетевым доменом. При создании каждого модуля он получает соответствующий поддомен DNS, имеющий форму: $ ( podname). $ (управляющий домен службы) Поэтому для подключения к набору реплик вам нужно использовать: "mongodb: // myuser: mydbpwd @ skeleton-mongodb-replicaset-0. skeleton-mongodb-replicaset: 27001, скелет-mongodb-replicaset-1 .skeleton-mongodb-replicaset: 27001, скелет-mongodb-replicaset-2 .skeleton-mongodb- набор реплик: 27001 /? authSource = admin & replicaSet = rs0 "

И ко второму вопросу @yanivoliver - почему нестандартный порт?

person antweiss    schedule 30.04.2019
comment
Фактически вы даже можете использовать только одно имя хоста, например: mongodb://myuser:mydbpwd@skeleton-mongodb-replicaset-0.skeleton-mongodb-replicaset:27001/?authSource=admin&replicaSet=rs0 - person antweiss; 30.04.2019