所以我有一个azure应用服务,我希望它能够连接到mongo db atlas。对于我们的atlas设置,在azure上的托管环境(以及它所在的vnet)和mongo db集群之间有一个对等连接。
mongo集群设置为“仅通过对等连接”,我们无法更改。这意味着我们不能用任何旧的公共ip地址连接到数据库-它必须来自它所监视的vnet。vm(在对等vnet中)能够访问db,没有问题。
我试着用应用服务连接到db,连接字符串与vm相同。它返回了一个错误:
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集成。我为app服务创建了一个专用子网,并在mongo中列出了ip范围。但是,在使用这个vnet集成之后,我仍然无法连接到db。我也得到了一个非常相似的错误,但略有不同。
{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应用程序服务连接到数据库吗?
1条答案
按热度按时间bbuxkriu1#
是否有防火墙或网络安全组?网络对等状态是什么?如果它显示« 启动 » 那么这就意味着它还没有完成。网络对等必须在两端进行。如果它显示« 有联系的 », 然后我会寻找防火墙或网络安全组。
看到这个了吗https://docs.atlas.mongodb.com/security-vpc-peering/#vpc-窥视