Согласно предоставленному вами официальному документу.
Убедитесь, что приложение может подключиться к каждому узлу кластера, используя его общедоступный или частный IP-адрес. Чтобы обеспечить подключение, у вас есть два варианта:
Разместите приложение в той же сети, что и кластер MongoDB, чтобы оно могло обращаться к каждому узлу, используя его частный IP-адрес. Это рекомендуемая конфигурация для производственных сред. Разместите приложение в другой сети и назначьте общедоступные IP-адреса с соответствующими правилами брандмауэра узлам кластера (если они еще не назначены по умолчанию), чтобы приложение могло обращаться к каждому узлу, используя его общедоступный IP-адрес. Эта конфигурация не рекомендуется для производственных сред.
Таким образом, при тестировании в той же виртуальной сети Azure можно использовать частный IP-адрес (пример 10.0.0.6). Я тестирую в своей лаборатории, я использую python с этим примером.
import pymongo
client = pymongo.MongoClient("mongodb://root:<passsword>@10.0.0.6:27017,10.0.0.4:27017,10.0.0.5:27017/?replicaSet=replicaset")
db = client.test
>>> db.name
u'test'
>>> db.my_collection
Collection(Database(MongoClient(host=['10.0.0.5:27017', '10.0.0.6:27017', '10.0.0.4:27017'], document_class=dict, tz_aware=False, connect=True, replicaset='replicaset'), u'test'), u'my_collection')
>>> db.my_collection.insert_one({"x": 10}).inserted_id
ObjectId('5987cc0b9e90d52dd1860ac3')
Обновлять:
Если вы хотите подключить свои узлы mongodb, вам нужно пропинговать частный IP-адрес. Это дизайнерское поведение.
Если вы хотите использовать mongodb из своего приложения или локально, вам необходимо создать VPN-подключение типа «сеть-сеть» или VPN-соединение «точка-сеть».
person
Shui shengbao
schedule
07.08.2017
10.x.x.x
на самом деле является частным диапазоном IP-адресов, я бы предложил на самом деле предоставить общедоступные адреса для каждого узла, чтобы что-то за пределами сети могло его достичь. Либо так, либо вам нужно настроить правила маршрутизации, которые разрешают доступ с клиентского узла к каждому из этих экземпляров. Похоже на вопрос к serverfault.com или, возможно, в службу поддержки Azure. Но не вопрос программирования, для чего и существует StackOverflow. - person Neil Lunn   schedule 05.08.2017