이 페이지에서는 AlloyDB Omni의 고가용성 구성을 설정하는 방법을 설명합니다. 이 페이지에서는 고가용성 구성에서 새 AlloyDB Omni 인스턴스를 만드는 방법만 다룹니다. 기존 인스턴스를 고가용성으로 변환하는 방법을 다루지 않습니다.
시작하기 전에
고가용성 및 데이터 복원력을 읽습니다.
아직 프로젝트가 없으면 Google Cloud 프로젝트를 만듭니다.
프로젝트에 결제가 사용 설정되어 있는지 확인합니다.
Google Cloud 콘솔에서 Cloud Shell을 엽니다.
Google Cloud 콘솔에서 다음 소스 저장소를 클론합니다.
git clone https://github.com/GoogleCloudPlatform/cloud-solutions.git
설치
이 가이드에서는 AlloyDB Omni가 포함된 3노드 Patroni 클러스터와 구성 스토어로 3노드 클러스터 etcd를 배포합니다. 장애 조치가 클라이언트에 영향을 미치지 않도록 클러스터 앞단에 HAProxy를 관리형 인스턴스 그룹으로 배치하여 유동 IP 주소를 제공합니다.
이 설정의 초기 구성은 다음 다이어그램에 나와 있습니다.
그림 1. HAProxy가 클라이언트와 기본 노드 간 연결을 관리하는 구성
서비스 중단이 발생하면 구성이 다음 다이어그램처럼 변경됩니다.
그림 2. 실패한 기본 노드가 대기 노드로 대체된 업데이트된 구성
데이터베이스에 연결하는 클라이언트 수가 문제가 되고 동시 데이터베이스 연결 수가 많아 성능 문제가 발생하는 경우에는 애플리케이션 측 연결 풀링을 추가하는 것이 좋습니다. 이렇게 할 수 없으면 PgBouncer와 같은 도구를 사용하여 데이터베이스 측 연결 풀링을 추가하면 됩니다.
배포
Cloud Shell에서 Cloud 솔루션 저장소를 클론한 후 terraform 디렉터리로 이동합니다.
cd cloud-solutions/projects/alloydbomni-ha-patroni-etcd/terraform
terraform.tfvars
파일을 만들고 수정합니다. 파일에서 다음 변수 값을 설정합니다.project_id = "PROJECT_ID" region = "REGION" zones = "ZONES" node_count = 3 cluster_name = "CLUSTER_NAME" replication_user_password = "REPLICATION_USER_PASSWORD" postgres_super_user_password = "PG_SUPER_USER_PASSWORD"
각 변수에 대한 설명은 GitHub의 변수 구성 파일을 참조하세요.
Terraform 스크립트를 실행하여 모든 리소스를 만듭니다.
terraform init && terraform apply
이 스크립트는 다음을 만들고 구성합니다.
etcd 클러스터용 노드 3개
Patroni 클러스터용 노드 3개
HAProxy용 노드 1개
동기식으로 Patroni 구성
3노드 클러스터에서 Patroni가 동기식 복제만 사용하게 하려면 Patroni 구성 파일의 부트스트랩 섹션에 synchronous_mode
, synchronous_node_count
, synchronous_commit
, synchronous_standby_names
와 같은 구성 항목을 추가합니다. Patroni 구성은 시작 스크립트 템플릿과 Patroni 노드의 /alloydb/config/patroni.yml
파일에 정의되어 있습니다. 동기식 복제를 사용하려면 Patroni 부트스트랩 구성이 다음과 같아야 합니다.
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
synchronous_mode: true
synchronous_node_count: 2
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
hot_standby: "on"
wal_keep_segments: 20
max_wal_senders: 8
max_replication_slots: 8
synchronous_commit: remote_apply
synchronous_standby_names: '*'
synchronous_mode
가 사용 설정되면 Patroni는 기본 및 다른 복제본 간에 동기식 복제를 사용합니다. synchronous_node_count
파라미터는 Patroni에서 동기식 대기 복제본 수를 관리하는 데 사용됩니다. Patroni는 synchronous_node_count
파라미터를 기반으로 동기 대기 복제본 수를 정확하게 관리하고 구성원이 참여하고 나갈 때 구성 스토어와 synchronous_standby_names
의 상태를 조정합니다. 동기식 복제에 대한 자세한 내용은 Patroni 문서의 복제 모드 섹션을 참조하세요.