Microsoft/Azure

Azure Database for PostgreSQL 복제 (Replication)

megapain 2020. 12. 8. 01:11

참고 자료

더보기

Create and manage read replicas in Azure Database for PostgreSQL - Single Server from the Azure portal - https://docs.microsoft.com/en-us/azure/postgresql/howto-read-replicas-portal

Pricing tiers in Azure Database for PostgreSQL - Single Server - https://docs.microsoft.com/en-us/azure/postgresql/concepts-pricing-tiers

 

Azure Database for PostgreSQL의 복제(Replica) 기능을 테스트해 봅니다.

테스트 구성도 및 시나리오는 아래와 같습니다.

Azure Database for PostgreSQL 복제 테스트

  • Korea Central에 Azure Database for PostgreSQL을 배포하고 Japan East로 복제합니다. 
  • 복제만 구성하면 뭔가 심심(?)한 것 같으니, 복제본 DB에 Private Endpoint를 구성해서 연결해봅니다.
  • 복제본(Secondary) DB를 Primary로 바꾸어 봅니다.

 

사전 준비

  • Korea Central과 Japan East에 가상 네트워크와 VM은 이미 생성해 놓았다고 가정합니다. (지역은 중요하지 않습니다. 같은 지역으로도 복제를 구성할 수 있습니다.)
  • VM은 Windows Server 2019이며, pgAdmin Tool을 미리 설치해둡니다. (www.pgadmin.org/download/pgadmin-4-windows/)

 

Azure Database for PostgreSQL 배포 (Primary DB)

Azure Database for PostgreSQL을 배포하는 절차는 아래와 같습니다.

Azure 포털 - Azure Database for PostgreSQL - +Add

 

Single server - [Create]

Azure database for PostgreSQL deployment option

 

Basics

  • Resource Group : KRC-PostgreSQL
  • Server name : krcdh
  • Data source : None
  • Location : Korea Central
  • Version : 11
  • Compute+storage : General Purpose (4 vCores, 100 GB storage)

 

Review+Create - [Create]

 

배포 완료

Primary DB 배포 완료

 

PostgreSQL 복제 구성 (Replication)

Korea Central의 Primary DB를 Japan East로 복제합니다. 복제 구성 절차는 아래와 같습니다.

대상 PostgreSQL - Replication - +Add Replica

PostgreSQL - Add Replica

 

복제본(Secondary) DB 구성

  • Server name : jpedh
  • Location : Japan East
  • [OK]

 

복제 구성 완료까지 약 5분 정보 소요됩니다.

PostgreSQL 복제 완료
Secondary DB

 

Private Endpoint 배포

복제를 테스트하기 위한 준비는 끝났습니다만, 이정도만 테스트하기엔 아쉬우니, Azure Database for PostgreSQL용 Private Endpoint를 배포하고 Private IP 주소로 연결하도록 구성해 보겠습니다.

기본적으로 Azure Database for PostgreSQL은 서버의 FQDN(예. jpedh.postgres.database.azure.com)으로 접속해야 합니다. 즉 인터넷으로 접속해야 합니다.

PostgreSQL FQDN

 

Private Endpoint를 사용하면 Azure VM이 Azure Database for PostgreSQL에 연결 할 때 FQDN이 아니라 Azure 가상 네트워크의 Private IP 주소로 연결할 수 있습니다. 아래 그림에서와 같이, Private Endpoint 구성 전에 FQDN 으로 연결하면 인터넷을 통해 PostgreSQL에 연결합니다. Private Endpoint를 구성한 이후에는 PostgreSQL에 연결된 Private IP 주소로 연결할 수 있습니다. (Azure Private DNS를 구성하면, FQDN으로도 인터넷이 아니라 Private IP 주소로 연결할 수 있습니다만, 이번 글에서는 설명하지 않습니다.)

Private Endpoint를 통한 연결

 

Azure Database for PostgreSQL용 Private Endpoint를 구성하는 절차는 아래와 같습니다.

대상 PostgreSQL(jpedh) - Private endpoint connections - +Private endpoint

Private Endpoint 배포

 

Basics

  • Name : Private Endpoint 이름 (예. jpedh-PE)
  • Region : Japan East

Private Endpoint - Basics

 

Resource

  • Connection method : Connect to an Azure resource in my directory
  • Resource type : Microsoft.DBforPostgreSQL/servers
  • Resource : jpedh
  • Target sub-resource : postgresqlServer

Private Endpoint - Resource

 

Configuration

  • Virtual network : JPE-VNET
  • Subnet : JPE-DB-Subnet (Private Endpoint용 NIC가 생성될 Subnet)
  • Integrate with private DNS Zone : No

Private Endpoint - Configuration

 

Review+Create - [Create]

 

배포 완료까지 약 1분 정도 소요됩니다.

Private Endpoint 배포 완료

 

 배포된 Private Endpoint의 DNS Configuration에서 Private IP 주소를 확인할 수 있습니다.

Private Endpoint - IP 주소

 

Private Endpoint를 통해 PostgreSQL에 연결

복제본 DB (jpedh)에 Private Endpoint로 연결해 봅니다.

테스트 환경의 Japan East VM에 사전에 pgAdmin Tool을 설치해 놓았습니다. pgAdmin Tool을 실행합니다.

Servers를 오른쪽 클릭 - Create - Server

pgAdmin

 

General

  • Name 에 PostgreSQL 이름을 입력합니다. (jpedh)

 

Connection

  • Host name/address : Private Endpoint의 IP 주소 입력
  • Port : 5432
  • Maintenance database : postgres
  • Username / Password : PostgreSQL 생성할 때 사용한 계정 정보 입력

 

SSL

  • SSL mode : Require
  • [Save]

 

정상적으로 연결되는 것을 확인할 수 있습니다.

 

복제 테스트

Primary DB (krcdh)에 새로운 Database를 하나 만들어서 Secondary DB(jpedh)로 복제 되는지 확인해봅니다.

Primary DB (krcdh)에서 pgAdmin Tool을 실행합니다. Databases를 오른쪽 클릭 후 Create - Database를 클릭합니다.

 

General 탭의 Database 입력란에 새로 생성할 Database 이름(예. dhdb2)을 입력하고 [Save] 를 클릭합니다.

 

새 Database가 생성된 것을 확인합니다.

 

Secondary DB(jpedh)를 새로 고침하여 Database가 복제된 것을 확인합니다.

 

복제본 DB를 Primary DB로 전환

복제본 DB는 Read only 이기 때문에, 쓰기 작업 (예. DB 생성)을 시도하면 아래와 같이 실패합니다.

복제본 DB - 쓰기 실패

 

Primary DB 장애 상황 시 복제본 DB를 Primary DB로 만들어야 합니다.

복제본 DB를 Primary DB로 바꾸는 절차는 간단합니다. 복제를 중단하기만 하면 됩니다.

PostgreSQL - Stop Replication

 

[OK]

 

복제가 중지되기 까지 약 5분에서 10분 정도 소요됩니다.

복제가 중지된 후 쓰기 작업(예. DB 생성)이 정상적으로 동작하는 것을 확인할 수 있습니다.

 

-끝-