Azure Cosmos DB for PostgreSQL에서 프라이빗 액세스로 클러스터에 연결
적용 대상: Azure Cosmos DB for PostgreSQL(PostgreSQL에 대한 Citus 데이터베이스 확장 기반)
이 자습서에서는 VM(가상 머신)과 Azure Cosmos DB for PostgreSQL 클러스터를 만들고 이들 간에 프라이빗 액세스를 설정합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 계정이 없으면 무료 계정을 만듭니다.
- 코드를 로컬에서 실행하려면 Azure CLI가 설치되어 있어야 합니다. Azure Cloud Shell에서 코드를 실행할 수도 있습니다.
가상 네트워크 만들기
먼저 클러스터와 VM을 보관할 리소스 그룹과 가상 네트워크를 설정합니다.
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 클라이언트를 실행하는 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 Portal에서 Azure Cosmos DB for PostgreSQL 클러스터를 만듭니다.
포털에서 왼쪽 상단 모서리에 있는 리소스 만들기를 선택합니다.
리소스 만들기 페이지에서 데이터베이스를 선택한 다음 Azure Cosmos DB를 선택합니다.
API 옵션 선택 페이지의 PostgreSQL 타일에서 만들기를 선택합니다.
Azure Cosmos DB for PostgreSQL 클러스터 만들기 페이지에서 다음 정보를 작성합니다.
리소스 그룹: 새로 만들기를 선택한 다음 link-demo를 입력합니다.
클러스터 이름: link-demo-sg를 입력합니다.
참고 항목
클러스터 이름은 DNS 항목을 만들므로 Azure 전체에서 전역적으로 고유해야 합니다.
link-demo-sg
를 사용할 수 없는 경우 다른 이름을 입력하고 그에 따라 다음 단계를 조정합니다.위치: 미국 동부를 선택합니다.
암호: 암호를 입력하고 확인합니다.
다음: 네트워킹을 선택합니다.
네트워킹 탭에서 연결 방법으로 프라이빗 액세스를 선택합니다.
프라이빗 엔드포인트 만들기 화면에서 다음 값을 입력하거나 선택합니다.
- 리소스 그룹:
link-demo
- 위치:
(US) East US
- 이름:
link-demo-sg-c-pe1
- 대상 하위 리소스:
coordinator
- 가상 네트워크:
link-demo-net
- 서브넷:
link-demo-subnet
- 프라이빗 DNS 영역과 통합: 예
- 리소스 그룹:
확인을 선택합니다.
프라이빗 엔드포인트를 만든 후 검토 + 만들기를 선택한 다음 만들기를 선택하여 클러스터를 만듭니다.
VM에서 프라이빗으로 클러스터에 액세스
프라이빗 링크를 사용하면 VM이 클러스터에 연결할 수 있고 외부 호스트가 연결하는 것을 방지할 수 있습니다. 이 단계에서는 VM의 psql 데이터베이스 클라이언트가 클러스터의 코디네이터 노드와 통신할 수 있는지 확인합니다.
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
참고 항목
연결 문자열 클러스터 암호 또는 Microsoft Entra ID 토큰으로 바꿉 {your_password}
니다. 자세한 내용은 인증 옵션을 참조하세요.
출력에 Citus의 버전 번호가 표시되어야 합니다. 이렇게 하면 psql에서 명령을 실행할 수 있으며 프라이빗 링크가 작동합니다.
리소스 정리
VM과 클러스터 간에 프라이빗 링크를 만드는 방법을 살펴보았습니다. 이제 리소스를 프로비전 해제할 수 있습니다.
리소스 그룹을 삭제하면 내부의 리소스가 프로비전 해제됩니다.
az group delete --resource-group link-demo
# press y to confirm
다음 단계
- 프라이빗 액세스에 대해 자세히 알아보기
- 프라이빗 엔드포인트에 대해 알아보기
- 가상 네트워크에 대해 알아보기
- 프라이빗 DNS 영역에 대해 알아보기