使用 CLI 创建和管理 Azure Database for PostgreSQL(单一服务器)的专用链接
适用于:Azure Database for PostgreSQL - 单一服务器
重要
Azure Database for PostgreSQL - 单一服务器即将停用。 我们强烈建议升级到 Azure Database for PostgreSQL 灵活服务器。 有关迁移到 Azure Database for PostgreSQL - 灵活服务器的详细信息,请参阅 Azure Database for PostgreSQL 单一服务器会发生什么情况?。
专用终结点是 Azure 中专用链接的构建基块。 它使 Azure 资源(例如虚拟机 (VM))能够以私密方式来与专用链接资源通信。 本文介绍如何使用 Azure CLI 在 Azure 虚拟网络和带有 Azure 专用终结点的 Azure Database for PostgreSQL 单一服务器中创建 VM。
注意
专用链接功能仅适用于“常规用途”或“内存优化”定价层中的 Azure Database for PostgreSQL 服务器。 请确保数据库服务器位于其中一个定价层中。
先决条件
若要逐步执行本操作方法指南,需要:
本快速入门需要使用 Azure CLI 版本 2.0.28 或更高版本。 若要查找已安装的版本,请运行 az --version
。 有关安装或升级信息,请参阅安装 Azure CLI。
创建资源组
在创建任何资源之前,必须创建一个资源组以托管虚拟网络。 使用 az group create 创建资源组。 此示例在 chinaeast2 位置创建一个名为 myResourceGroup 的资源组 :
az group create --name myResourceGroup --location chinaeast2
创建虚拟网络
使用 az network vnet create 创建虚拟网络。 此示例创建名为 myVirtualNetwork 的默认虚拟网络,它具有一个名为 mySubnet 的子网:
az network vnet create \
--name myVirtualNetwork \
--resource-group myResourceGroup \
--subnet-name mySubnet
禁用子网专用终结点策略
Azure 会将资源部署到虚拟网络中的子网,因此,你需要创建或更新子网,以禁用专用终结点网络策略。 使用 az network vnet subnet update 更新名为 mySubnet 的子网配置:
az network vnet subnet update \
--name mySubnet \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--disable-private-endpoint-network-policies true
创建 VM
使用 az vm create 创建 VM。 出现提示时,请提供要用作 VM 登录凭据的密码。 此示例创建名为 myVm 的 VM:
az vm create \
--resource-group myResourceGroup \
--name myVm \
--image Win2019Datacenter
记下 VM 的公共 IP 地址。 在下一步中,此地址将用于从 Internet 连接到 VM。
创建 Azure Database for PostgreSQL(单一服务器)
使用 az postgres server create 命令创建 Azure Database for PostgreSQL。 请记住,PostgreSQL 服务器名称必须在 Azure 中是唯一的,因此请将占位符值替换为你上面使用的唯一值:
# Create a server in the resource group
[!INCLUDE [applies-to-postgresql-single-server](../includes/applies-to-postgresql-single-server.md)]
[!INCLUDE [azure-database-for-postgresql-single-server-deprecation](../includes/azure-database-for-postgresql-single-server-deprecation.md)]
az postgres server create \
--name mydemoserver \
--resource-group myresourcegroup \
--location chinaeast2 \
--admin-user mylogin \
--admin-password <server_admin_password> \
--sku-name GP_Gen5_2
创建专用终结点
为虚拟网络中的 PostgreSQL 服务器创建专用终结点:
az network private-endpoint create \
--name myPrivateEndpoint \
--resource-group myResourceGroup \
--vnet-name myVirtualNetwork \
--subnet mySubnet \
--private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforPostgreSQL/servers" --query "id" -o tsv) \
--group-id postgresqlServer \
--connection-name myConnection
配置专用 DNS 区域
为 PostgreSQL 服务器域创建专用 DNS 区域,并创建一个与虚拟网络关联的链接。
az network private-dns zone create --resource-group myResourceGroup \
--name "privatelink.postgres.database.chinacloudapi.cn"
az network private-dns link vnet create --resource-group myResourceGroup \
--zone-name "privatelink.postgres.database.chinacloudapi.cn"\
--name MyDNSLink \
--virtual-network myVirtualNetwork \
--registration-enabled false
#Query for the network interface ID
networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv)
az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json
# Copy the content for privateIPAddress and FQDN matching the Azure database for PostgreSQL name
[!INCLUDE [applies-to-postgresql-single-server](../includes/applies-to-postgresql-single-server.md)]
[!INCLUDE [azure-database-for-postgresql-single-server-deprecation](../includes/azure-database-for-postgresql-single-server-deprecation.md)]
#Create DNS records
az network private-dns record-set a create --name myserver --zone-name privatelink.postgres.database.chinacloudapi.cn --resource-group myResourceGroup
az network private-dns record-set a add-record --record-set-name myserver --zone-name privatelink.postgres.database.chinacloudapi.cn --resource-group myResourceGroup -a <Private IP Address>
注意
客户 DNS 设置中的 FQDN 未解析为已配置的专用 IP。 你必须为已配置的 FQDN 设置一个 DNS 区域,如此处所示。
注意
在某些情况下,Azure Database for PostgreSQL 和 VNet 子网位于不同的订阅中。 在这些情况下,必须确保以下配置:
- 请确保两个订阅都注册了 Microsoft.DBforPostgreSQL 资源提供程序。 有关详细信息,请参阅资源提供程序。
从 Internet 连接到 VM
从 Internet 连接到 VM myVm,如下所示:
在门户的搜索栏中,输入 myVm。
选择“连接”按钮。 选择“连接”按钮后,“连接到虚拟机”随即打开。
选择“下载 RDP 文件”。 Azure 会创建远程桌面协议 ( .rdp) 文件,并将其下载到计算机。
打开 downloaded.rdp 文件。
出现提示时,选择“连接”。
输入在创建 VM 时指定的用户名和密码。
注意
可能需要选择“更多选择”“使用其他帐户”,以指定在创建 VM 时输入的凭据。
选择“确定”。
你可能会在登录过程中收到证书警告。 如果收到证书警告,请选择“确定”或“继续” 。
VM 桌面出现后,将其最小化以返回到本地桌面。
从 VM 对 PostgreSQL 服务器进行私密访问
在 myVM 的远程桌面中,打开 PowerShell。
输入
nslookup mydemopostgresserver.privatelink.postgres.database.chinacloudapi.cn
。将收到类似于下面的消息:
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: mydemopostgresserver.privatelink.postgres.database.chinacloudapi.cn Address: 10.1.3.4
使用任何可用的客户端测试 PostgreSQL 服务器的专用链接连接。 以下示例使用 Azure 数据工作室来执行该操作。
在“新建连接”中,输入或选择以下信息:
设置 值 服务器类型 选择“PostgreSQL”。 服务器名称 选择“mydemopostgresserver.privatelink.postgres.database.chinacloudapi.cn” 用户名 输入用户名 username@servername,该用户名是在创建 PostgreSQL 服务器期间提供的。 密码 输入创建 PostgreSQL 服务器期间提供的密码。 SSL 选择“必需”。 选择“连接”。
浏览左侧菜单中的数据库。
(可选)创建或查询 postgreSQL 服务器中的信息。
关闭与 myVm 的远程桌面连接。
清理资源
如果不再需要资源组及其所有资源,可以使用 az group delete 将其删除:
az group delete --name myResourceGroup --yes
后续步骤
- 详细了解什么是 Azure 专用终结点