【问题标题】:Azure postgres database private connection between subnet子网之间的 Azure postgres 数据库专用连接
【发布时间】:2021-01-08 12:35:07
【问题描述】:

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

我做了很多尝试,我能够从 sub_B 中的 VM 连接到数据库,所以我认为问题来自 sub_A 但这里是我在数据库服务器上配置的 ma 配置 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.

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

【问题讨论】:

    标签: azure azure-virtual-network azure-postgresql


    【解决方案1】:

    在这种情况下,请确保 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 地址全域名。子网 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 或让我知道您是否需要进一步的帮助。

    【讨论】:

    • 您好,感谢您的回答,但两个子网中的私有 DNS 没有问题,它正确解析为双方的私有 IP,我可以使用 telnet 从 sub_A 打开端口 5432 上的套接字.但是当我尝试为我的应用程序使用 psql 或 wrapper python 时,postgresql 服务器会中断连接并显示此错误消息
    • 您在子网 A 中的 Azure VM 上是否有应用程序?子网 A 和 B 是否具有相同的 NSG 配置?您如何使用 psql 或 wrapper python 为您的应用程序连接 postgresql 服务器?
    • 您可以使用 psql 或 wrapper python 使用来自 sub_A 的私有端点 IP 地址连接到数据库吗?
    • 没有为两个子网配置 NSG 配置,应用程序在 AKS pod 上运行,所以尝试我只是尝试使用 psql -h mydb.privatelink.postgres.database.azure.com -U myuser@mydb db 我无法从子网 A 连接任何东西,但从子网 B(其中私有点是位于)我连接没有问题
    • 您的 AKS pod 的网络模式是什么?
    猜你喜欢
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多