子网之间的 Azure postgres 数据库专用连接

问题描述

我尝试将子网 sub_A 中的应用程序连接到在子网 sub_B 中有私有端点的 postgresql 数据库,但仍然无法连接。

我做了很多尝试,我能够从 sub_B 中的 VM 连接到数据库,所以我希望问题来自 sub_A,但这里是我在数据库服务器上配置的 vmnet 配置 sub_A 和 sub_B 的 vmnet 规则.

我使用服务端点“Microsoft.sql”配置这两个子网

当我尝试通过私有端点连接数据库时,我仍然收到错误 error: FATAL: Client from Azure Virtual Networks is not allowed to access the server using Private IP. Please make sure your Virtual Network is correctly configured.

你能帮我告诉我我错过了什么吗?

解决方法

在这种情况下,请确保 DNS 记录设置正确。

如果您的应用程序托管在应用程序服务上,则可以enable VNet Integration,并且需要添加以下应用程序设置以使用 Azure DNS 专用区域。

WEBSITE_DNS_SERVER with value 168.63.129.16
WEBSITE_VNET_ROUTE_ALL with value 1

如果你有一个应用托管在 Azure 虚拟机上,你可以比较子网 A 和子网 B 中虚拟机的 DNS 记录。从子网 A,你需要确保你可以从 PostgreSQL 数据库解析到私有 IP 地址FQDN。子网 A 和子网 B 之间不应被网络阻塞。

例如,从 SubnetA,验证私有链接指向 PostgreSQL 资源并且正在执行必要的解析。

C:\Users\azureadmin>nslookup demoprivatelinkserver.postgres.database.azure.com.
Server:  UnKnown
Address:  168.63.129.16

Non-authoritative answer:
Name:    demoprivatelinkserver.postgres.database.azure.com
Address:  10.1.3.4

有关详细信息,您可以阅读this blog,或者如果您需要进一步的帮助,请告诉我。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...