Итак, у меня есть служба приложений Azure, и я хочу, чтобы она могла подключаться к атласу mon go db. Для нашей настройки Atlas существует одноранговое соединение между нашей управляемой средой на azure (и vnet, в которой все это находится) и нашим кластером mon go db.
Мон go кластер настроен с «Подключиться только через пиринг», который мы не можем изменить. Это означает, что мы не можем подключиться к нашей базе данных с любым старым IPL-адресом * publi c. Он должен быть получен с vnet, с которым он работает. VMS (изнутри peered vnet) могут получить доступ к БД без проблем.
Я попытался с помощью службы приложений подключиться к БД с помощью той же строки подключения, которая работала для виртуальной машины. Он вернул ошибку:
java.net.ConnectException: Connection refused (Connection refused)}}, {address=MYMONGOADDRESS.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.ConnectException: Connection refused (Connection refused)}}]
Это ожидается по причинам, указанным выше. Однако я настроил интеграцию vnet для службы приложений . Я создал выделенный su bnet, как описано для службы приложений, и внес в белый список диапазон ip в mon go. Однако я не смог подключиться к БД после использования этой vnet интеграции. Я также получил очень похожую ошибку, но немного другую.
{java.net.SocketTimeoutException: connect timed out}}, {address=MYMONGOADDRESS.mongodb.net:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket}, caused by {java.net.SocketTimeoutException: connect timed out}}]
Когда вместо соединения отказано, я не получаю тайм-аут соединения. Я повторил это несколько раз и получил один и тот же результат.
Кто-нибудь знает, почему эти ошибки различаются, и помогает в подключении к БД из моей службы приложений azure?