기존 클러스터에 대기 노드를 추가하여 읽기 워크로드를 확장하거나 고가용성을 높일 수 있습니다. 또한 대상 유지보수 또는 영구 폐기를 위해 특정 데이터베이스 노드를 삭제하여 클러스터 용량을 줄일 수 있습니다.
시작하기 전에
- 클러스터가 정상 상태이고
status.phase가Ready인지 확인합니다. - 새 노드를 추가하는 경우 시스템 요구사항을 충족하고 필요한 AlloyDB Omni 구성요소가 설치되어 있는지 확인합니다.
데이터베이스 노드 추가
클러스터에 새 대기 데이터베이스 노드를 추가하려면 인벤토리라고도 하는 배포 사양과 데이터베이스 클러스터 리소스 사양을 모두 업데이트해야 합니다.
배포 사양을 업데이트하려면
deployment_spec.yaml파일을 열고primary_instance_nodes그룹 아래에 새 노드의 IP 주소 또는 호스트 이름을 추가합니다.alloydbomni: children: primary_instance_nodes: hosts: db-node-1: db-node-2: NEW_NODE:NEW_NODE를 추가하는 새 대기 노드의 IP 주소 또는 호스트 이름으로 바꿉니다.리소스 사양을 업데이트하려면
DBCluster리소스 사양 파일을 열고 추가하는 노드 수만큼numberOfStandbys값을 늘립니다.DBCluster: metadata: name: DB_CLUSTER_NAME spec: # Other configurations omitted for brevity. # Modify the availability block in your existing DBCluster resource spec: availability: numberOfStandbys: NEW_STANDBY_COUNT # Remaining configurations omitted.다음 변수를 바꿉니다.
DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다.NEW_STANDBY_COUNT: 클러스터의 새로운 총 대기 노드 수(증가됨)입니다.
다음 방법 중 하나를 사용하여 업데이트된 리소스 사양을 적용합니다. RPM 오케스트레이터는 새 노드를 자동으로 프로비저닝합니다.
alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"Ansible
Ansible을 사용하여 변경사항을 적용하려면 다음 단계를 완료하세요.
다음 콘텐츠가 포함된
add.yml플레이북을 만듭니다.--- # Add AlloyDB Omni database nodes - name: Add AlloyDB Omni database nodes hosts: all become: true vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: PRIVATE_SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.add다음 변수를 바꿉니다.
ANSIBLE_USER: 모든 노드에 비밀번호 없이 액세스할 수 있고sudo권한이 있는 사용자입니다.PRIVATE_SSH_KEY_PATH: 비밀번호 없는 인증을 위한 비공개 SSH 키의 경로입니다.
만든 플레이북을 실행합니다.
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" add.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"
다음 변수를 바꿉니다.
DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.DBCLUSTER_SPECIFICATION: 수정한DBCluster매니페스트의 경로입니다.
특정 데이터베이스 노드 삭제
클러스터에서 특정 대기 노드를 삭제하려면 배포 사양에서 삭제하고 대기 수를 줄여야 합니다.
배포 사양을 업데이트하려면
deployment_spec.yaml파일을 열고primary_instance_nodes그룹에서 대상 노드의 IP 주소 또는 호스트 이름을 삭제합니다.리소스 사양을 업데이트하려면
DBCluster리소스 사양 파일을 열고numberOfStandbys값을 줄입니다.DBCluster: metadata: name: DB_CLUSTER_NAME spec: # Other configurations omitted for brevity. # Modify the availability block in your existing DBCluster resource spec: availability: numberOfStandbys: NEW_STANDBY_COUNT # Remaining configurations omitted.다음 변수를 바꿉니다.
DB_CLUSTER_NAME: 데이터베이스 클러스터의 이름입니다.NEW_STANDBY_COUNT: 클러스터의 새로운 총 대기 노드 수(감소됨)입니다.
다음 방법 중 하나를 사용하여 업데이트된 매니페스트를 적용합니다.
alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"Ansible
Ansible을 사용하여 변경사항을 적용하려면 다음 단계를 완료하세요.
다음 콘텐츠가 포함된
remove.yml플레이북을 만듭니다.--- # Scale-in database nodes from AlloyDB Omni cluster - name: Scale-In AlloyDB Omni Cluster (Logical Discovery & De-registration) hosts: all become: true vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: PRIVATE_SSH_KEY_PATH roles: - role: google.alloydbomni_orchestrator.remove다음 변수를 바꿉니다.
ANSIBLE_USER: 모든 노드에 비밀번호 없이 액세스할 수 있고sudo권한이 있는 사용자입니다.PRIVATE_SSH_KEY_PATH: 비밀번호 없는 인증을 위한 비공개 SSH 키의 경로입니다.
플레이북을 실행합니다.
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" remove.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"
다음 변수를 바꿉니다.
DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.DBCLUSTER_SPECIFICATION: 수정한DBCluster매니페스트의 경로입니다.
선택사항: 삭제된 노드의 구성요소를 정리합니다.
alloydbctlAlloyDB Omni 구성요소를 수동으로 제거하여 삭제된 노드를 정리합니다.
Ansible
Ansible 오케스트레이터는 VM에 다음 구성요소가 있는 경우 자동으로 정리합니다.
- AlloyDB Omni
- AlloyDB Omni 모니터링
- 노드 관리자
pgBackRestPgBouncerKeepalived