Подключение к кластеру с частным доступом в Azure Cosmos DB для PostgreSQL

ПРИМЕНИМО К: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus для PostgreSQL)

В этом руководстве создаются виртуальная машина и кластер Azure Cosmos DB для PostgreSQL, а также устанавливается частный доступ между ними.

Предварительные требования

Создание виртуальной сети

Сначала настройте группу ресурсов и виртуальную сеть для хранения кластера и виртуальной машины.

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

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.

# 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 Cosmos DB для PostgreSQL в портал Azure.

  1. На портале выберите Создать ресурс в верхнем левом углу.

  2. На странице Создание ресурса выберите Базы данных, а затем — Azure Cosmos DB.

  3. На странице Выбор параметра API на плитке PostgreSQL выберите Создать.

  4. На странице Создание кластера Azure Cosmos DB для PostgreSQL укажите следующие сведения:

    • Группа ресурсов: выберите Создать, а затем введите link-demo.

    • Имя кластера: введите link-demo-sg.

      Примечание

      Имя кластера должно быть глобально уникальным в Azure, так как оно создает запись DNS. Если link-demo-sg параметр недоступен, введите другое имя и соответствующим образом измените следующие действия.

    • Расположение: выберите Восточная часть США.

    • Пароль. Введите и подтвердите пароль.

  5. По завершении выберите Next: сеть.

  6. На вкладке Сеть в поле Метод подключения выберите Частный доступ.

  7. На экране Создание частной конечной точки введите или выберите следующие значения:

    • Группа ресурсов: link-demo
    • Расположение(US) East US.
    • Имя: link-demo-sg-c-pe1
    • Целевой подресурс: coordinator
    • Виртуальная сеть: link-demo-net
    • Подсеть: link-demo-subnet
    • Интеграция с частной зоной DNS: да.
  8. Щелкните ОК.

  9. После создания частной конечной точки выберите Проверка и создание , а затем щелкните Создать , чтобы создать кластер.

Частный доступ к кластеру с виртуальной машины

Приватный канал позволяет виртуальной машине подключаться к кластеру и не позволяет внешним узлам это сделать. На этом шаге вы убедитесь, что клиент базы данных psql на виртуальной машине может взаимодействовать с узлом-координатором кластера. В коде замените {your_password} паролем кластера.

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

PG_URI='host=c-link-demo-sg.12345678901234.postgres.cosmos.azure.com 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 сможет выполнить команду и приватный канал будет работать.

Очистка ресурсов

Вы узнали, как создать приватный канал между виртуальной машиной и кластером. Теперь вы можете отозвать ресурсы.

Удалите группу ресурсов, и ресурсы внутри нее будут отозваны:

az group delete --resource-group link-demo

# press y to confirm

Дальнейшие действия