繁体   English   中英

通过 vnet 对等连接将 Azure 应用服务连接到 MongoDB Atlas

[英]Connecting Azure app service to MongoDB Atlas across vnet peering connection

所以我有一个 Azure 应用服务,我希望它能够连接到 mongo db atlas。 对于我们的 Atlas 设置,我们在 azure 上的托管环境(以及它所在的 vnet)和我们的 mongo db 集群之间存在对等连接

mongo 集群设置为“仅通过对等连接”,我们无法更改。 这意味着我们无法使用任何旧的公共 ip 地址连接到我们的数据库 - 它必须来自与之对等的 vnet。 虚拟机(来自对等互连的 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 集成 我按照应用服务的描述创建了一个专用子网,并将 mongo 中的 ip 范围列入白名单。 但是,在使用此 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 应用程序服务连接到数据库有任何帮助吗?

是否有任何防火墙或网络安全组? 网络对等连接状态是什么? 如果显示“已启动”,则表示尚未完成。 网络对等必须在每一端完成。 如果它显示“已连接”,那么我会寻找防火墙或网络安全组。

请参阅此https://docs.atlas.mongodb.com/security-vpc-peering/#vpc-peering

不知道这是否适用于您的情况,但这个问题是我搜索类似问题时第一个也是唯一一个出现的问题。

就我而言,我有一个部署在 Azure 上的 MongoDB Atlas 和一个在 AKS 中运行的应用程序。 我按照文档设置了对等互连,但仍然无法从 AKS 中的应用程序容器连接到 MongoDB。 原来问题是不正确的连接字符串。

直接连接和通过对等网络连接时,Atlas 具有不同的 URL:

# Direct connection
mongo "mongodb+srv://<cluster>.<something>.mongodb.net/<dbname>"

# Peered connection (note the -pri)
mongo "mongodb+srv://<cluster>-pri.<something>.mongodb.net/<dbname>"

作为附加说明,我使用 AKS 中使用的 Azure VN 子网的 CIDR 配置了 Atlas Network Access IP 地址列表。 (在Virtual Network > Subnets > IPv4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM