Создание группы серверов с закрытым доступом в Базе данных Azure для PostgreSQL — Гипермасштабирование (Citus)

Область применения: База данных Azure для PostgreSQL с Гипермасштабированием (Citus)

В этом руководстве создается виртуальная машина и группа серверов Гипермасштабирования (Citus), а затем между ними устанавливается закрытый доступ.

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

Сначала мы настроим группу ресурсов и виртуальную сеть. Она будет содержать нашу группу серверов и виртуальную машину.

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 и клиент PostgreSQL psql.

# provision the VM

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
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 debian \
	--admin-username azureuser \
	--generate-ssh-keys

# install psql database client

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
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"
  1. Щелкните Создать ресурс в верхнем левом углу окна портала Azure.

  2. На странице создания выберите Базы данных, а на странице Базы данных щелкните Azure Database for PostgreSQL (База данных Azure для PostgreSQL).

  3. Чтобы выполнить развертывание, выберите Создать в разделе Группа серверов с Гипермасштабированием (Citus).

  4. Заполните форму для создания сервера, указав следующую информацию:

    • Группа ресурсов: link-demo
    • Имя группы серверов: link-demo-sg
    • РасположениеEast US.
    • Пароль: (по вашему выбору)

    Примечание

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

  5. Выберите Настроить группу серверов, выберите план Базовый, а затем щелкните Сохранить.

  6. По завершении выберите Next: Networking (Далее: сеть) в нижней части экрана.

  7. Выберите Закрытый доступ.

  8. Появится экран Создать частную конечную точку. Введите следующие значения, а затем нажмите кнопку ОК:

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

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

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

# save db URI

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
#
# obtained from Settings -> Connection Strings in the Azure portal

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
#
# replace {your_password} in the string with your actual password

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
PG_URI='host=c.link-demo-sg.postgres.database.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require'

# attempt to connect to server group with psql in the virtual machine

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]
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 сможет выполнить команду и приватный канал будет работать.

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

Мы рассмотрели, как создать приватный канал между виртуальной машиной и группой серверов Гипермасштабирования (Citus). Теперь мы можем отозвать ресурсы.

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

az group delete --resource-group link-demo

# press y to confirm

[!INCLUDE[applies-to-postgresql-hyperscale](../includes/applies-to-postgresql-hyperscale.md)]

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