在 Azure Cosmos DB for PostgreSQL 中连接到具有专用访问的群集

适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

本教程创建虚拟机 (VM) 和 Azure Cosmos DB for PostgreSQL 群集,并在它们之间建立专用访问

先决条件

创建虚拟网络

首先,设置资源组和虚拟网络以保存群集和 VM。

az group create \
	--name link-demo \
	--location chinanorth3

az network vnet create \
	--resource-group link-demo \
	--name link-demo-net \
	--address-prefix 10.0.0.0/16

az network nsg create \
	--resource-group link-demo \
	--name link-demo-nsg

az network vnet subnet create \
	--resource-group link-demo \
	--vnet-name link-demo-net \
	--name link-demo-subnet \
	--address-prefixes 10.0.1.0/24 \
	--network-security-group link-demo-nsg

创建虚拟机

为了演示,创建运行 Debian Linux 和 psql PostgreSQL 客户端的 VM。

# provision the VM

az vm create \
	--resource-group link-demo \
	--name link-demo-vm \
	--vnet-name link-demo-net \
	--subnet link-demo-subnet \
	--nsg link-demo-nsg \
	--public-ip-address link-demo-net-ip \
	--image Debian11 \
	--admin-username azureuser \
	--generate-ssh-keys

# install psql database client

az vm run-command invoke \
	--resource-group link-demo \
	--name link-demo-vm \
	--command-id RunShellScript \
	--scripts \
		"sudo touch /home/azureuser/.hushlogin" \
		"sudo DEBIAN_FRONTEND=noninteractive apt-get update" \
		"sudo DEBIAN_FRONTEND=noninteractive apt-get install -q -y postgresql-client"

Azure 门户中创建 Azure Cosmos DB for PostgreSQL 群集。

  1. 在门户的左上角选择“创建资源”。

  2. 在“创建资源”页上选择“数据库”,然后选择“Azure Cosmos DB”。

  3. 在“选择 API 选项”页上,选择“PostgreSQL”磁贴上的“创建”。

  4. 在“创建 Azure Cosmos DB for PostgreSQL 群集”页上,填写以下信息:

    • 资源组:选择“新建”,然后输入“link-demo”。

    • 群集名称:输入“link-demo-sg”。

      注意

      群集名称在 Azure 中必须是多区域唯一的,因为它会创建一个 DNS 条目。 如果 link-demo-sg 不可用,请输入其他名称并相应地调整以下步骤。

    • 位置:选择“中国北部 3”。

    • 密码:输入并确认密码。

  5. 选择“下一页:网络”。

  6. 在“网络”选项卡上,对于“连接方法”,选择“专用访问”。

  7. 在“创建专用终结点”屏幕上,输入或选择以下值:

    • 资源组link-demo
    • 位置China North3
    • 名称link-demo-sg-c-pe1
    • 目标子资源coordinator
    • 虚拟网络link-demo-net
    • 子网link-demo-subnet
    • 与专用 DNS 区域集成:是
  8. 选择“确定”。

  9. 创建专用终结点后,选择“查看 + 创建”,然后选择“创建”以创建群集。

以私密方式从 VM 访问群集

使用专用链接可以将 VM 连接到群集,但外部主机无法执行此操作。 在此步骤中,需要检查 VM 上的 psql 数据库客户端是否可以与群集的协调器节点通信。 在代码中,将 {your_password} 替换为群集密码。

# replace {your_password} in the string with your actual password

PG_URI='host=c-link-demo-sg.12345678901234.postgres.cosmos.chinacloudapi.cn port=5432 dbname=citus user=citus password={your_password} sslmode=require'

# Attempt to connect to cluster with psql in the VM

az vm run-command invoke \
	--resource-group link-demo \
	--name link-demo-vm \
	--command-id RunShellScript \
	--scripts "psql '$PG_URI' -c 'SHOW citus.version;'" \
	--query 'value[0].message' \
	| xargs printf

输出中应显示 Citus 的版本号。 如果显示,则 psql 可以执行该命令,专用链接将正常运行。

清理资源

你已了解如何在 VM 和群集之间创建专用链接。 现在可以取消设置资源。

删除资源组,其中的资源将被取消设置:

az group delete --resource-group link-demo

# press y to confirm

后续步骤