데이터베이스 인스턴스의 매니페스트 파일에서 읽기 풀 인스턴스 구성을 정의할 수 있습니다. 각 읽기 풀 인스턴스에는 고유한 매니페스트 파일을 만들어야 합니다. 데이터베이스 클러스터당 총 읽기 풀 노드가 최대 20개인 읽기 풀 인스턴스를 여러 개 배포할 수 있습니다.
각 읽기 풀 인스턴스는 복제하는 인스턴스와 동일한 양의 스토리지를 차지합니다.
비동기 복제 읽기 풀 인스턴스 만들기
AlloyDB Omni 비동기 복제 읽기 풀 인스턴스를 만들려면 다음 단계를 완료하세요.
읽기 풀 인스턴스 유형을 정의하는 데이터베이스 인스턴스 매니페스트를 만듭니다.
DBInstance: metadata: name: READ_POOL_INSTANCE_NAME spec: instanceType: ReadPool nodeCount: READ_POOL_NODE_COUNT readPoolPort: READ_POOL_PORT dbcParent: name: DB_CLUSTER_NAME다음을 바꿉니다.
READ_POOL_INSTANCE_NAME: 이 리소스 이름(예:read-pool-instance-1)DB_CLUSTER_NAME: 인스턴스가 속한 데이터베이스 클러스터의 이름입니다.READ_POOL_NODE_COUNT: (선택사항) 읽기 풀 인스턴스의 노드 수입니다. 이는 인스턴스의 전체 컴퓨팅 용량을 결정합니다. 데이터베이스 클러스터당 총 읽기 풀 노드가 최대 20개일 수 있습니다.READ_POOL_PORT: (선택사항) 읽기 트래픽을 이 읽기 풀 인스턴스로 라우팅하는 부하 분산기 (VIP)의 포트입니다. 기본값은5434입니다.
DBInstance사양을 적용합니다.alloydbctlalloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"다음 변수를 바꿉니다.
DEPLOYMENT_SPECIFICATION_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.DBINSTANCE_SPECIFICATION: 이전 단계에서 만든DBInstance매니페스트 파일의 경로입니다.
Ansible
ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \ -e resource_spec="DBINSTANCE_SPECIFICATION"다음 변수를 바꿉니다.
DBINSTANCE_PLAYBOOK:DBInstance사양을 위해 만든 플레이북의 경로입니다.DEPLOYMENT_SPECIFICATION_PATH: AlloyDB Omni 구성요소 설치에서 만든 배포 사양의 경로입니다.DBINSTANCE_SPECIFICATION: 이전 단계에서 만든DBInstance매니페스트 파일의 경로입니다.
인스턴스 상태 확인
읽기 풀 인스턴스의 가용성을 확인하려면 DBInstance 리소스의 상태를 가져옵니다.
alloydbctl
alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml다음 변수를 바꿉니다.
Ansible
google.alloydbomni_orchestrator.status 플레이북을 실행합니다. 자세한 내용은 클러스터 상태 가져오기를 참조하세요.
ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
-e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"다음 변수를 바꿉니다.
응답의 .status.conditions 섹션에서 다음을 확인합니다.
Available조건의 상태가true이면 읽기 풀 인스턴스가 쿼리를 처리할 수 있지만 데이터베이스 인스턴스에서 데이터를 복제하지 않을 수 있음을 나타냅니다.Streaming조건의 상태가true이면 읽기 풀 인스턴스가 데이터베이스 인스턴스에 연결되어 있고 변경사항을 적극적으로 스트리밍하고 있음을 나타냅니다.
데이터베이스 인스턴스에 연결할 수 없는 경우 읽기 풀 인스턴스가 계속 쿼리를 처리합니다. 이 경우 가용성 상태는 true이고 스트리밍 상태는 false입니다.
읽기 풀 인스턴스를 설정하면 기본 데이터베이스 인스턴스의 행에 대한 모든 삽입, 업데이트, 삭제가 읽기 풀 인스턴스에서 읽을 수 있게 됩니다.
읽기 풀 인스턴스에 연결
읽기 풀 인스턴스가 Available이 되면 부하 분산기가 트래픽을 읽기 풀 노드로 라우팅하는 전용 읽기 전용 프런트엔드를 자동으로 구성합니다.
연결 엔드포인트를 보려면 DBInstance 상태 출력에서 status.endpoints를 확인합니다. 읽기 전용 엔드포인트(예: VIP_IP:5434)는 수신되는 읽기 전용 쿼리를 읽기 풀의 모든 정상 노드에 분산합니다.
읽기 풀 인스턴스에 연결하려면 엔드포인트의 IP 주소와 포트가 있는 psql 클라이언트 도구를 사용합니다.
psql -h VIP_IP -p READ_POOL_PORT -U postgres다음을 바꿉니다.
VIP_IP: 읽기 전용 엔드포인트의 IP 주소입니다.READ_POOL_PORT: 읽기 전용 엔드포인트의 포트입니다.
이 엔드포인트에 대해 쓰기 작업을 시도하면 읽기 전용 트랜잭션에서 삽입을 실행할 수 없음을 나타내는 오류와 함께 작업이 즉시 실패합니다.
읽기 풀 인스턴스 관리
RPM 오케스트레이터는 클러스터 다운타임 없이 읽기 풀 인스턴스의 동적 확장 및 삭제를 지원합니다.
읽기 풀 인스턴스 확장
기존 읽기 풀에서 노드를 추가하거나 삭제하려면 DBInstance 매니페스트 파일에서 nodeCount 필드를 업데이트합니다.
DBInstance매니페스트 파일을 열고 선택한 노드 수를 반영하도록nodeCount값을 수정합니다.선호하는 배포 방법인
alloydbctl apply명령어 또는 Ansible 플레이북을 사용하여 업데이트된 매니페스트를 적용합니다.
RPM 오케스트레이터는 읽기 복제본 노드를 자동으로 프로비저닝하거나 삭제하고 부하 분산기는 풀의 사용 가능한 노드로 트래픽을 라우팅하도록 동적으로 업데이트됩니다.
읽기 풀 인스턴스 삭제
읽기 풀 인스턴스를 삭제하려면 alloydbctl delete 명령어를 사용합니다.
alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAMEREAD_POOL_INSTANCE_NAME을 삭제하려는 읽기 풀 인스턴스의 이름으로 바꿉니다.
읽기 풀 인스턴스를 삭제하면 오케스트레이터가 읽기 복제본 서비스를 중지하고 노드를 정리합니다. 부하 분산기는 승격 교착 상태를 일으키거나 기본 또는 대기 인스턴스의 트래픽에 영향을 미치지 않고 라우팅을 자동으로 삭제합니다.