AlloyDB Omni에서 클러스터 노드 관리

문서 버전을 선택합니다.

이 페이지에서는 RPM 오케스트레이터를 사용하여 기존 AlloyDB Omni 클러스터에서 데이터베이스 노드를 추가하거나 삭제하는 방법을 설명합니다.

기존 클러스터에 대기 노드를 추가하여 읽기 워크로드를 확장하거나 고가용성을 높일 수 있습니다. 또한 대상 유지보수 또는 영구 폐기를 위해 특정 데이터베이스 노드를 삭제하여 클러스터 용량을 줄일 수 있습니다.

시작하기 전에

데이터베이스 노드 추가

클러스터에 새 대기 데이터베이스 노드를 추가하려면 인벤토리라고도 하는 배포 사양과 데이터베이스 클러스터 리소스 사양을 모두 업데이트해야 합니다.

  1. 배포 사양을 업데이트하려면 deployment_spec.yaml 파일을 열고 primary_instance_nodes 그룹 아래에 새 노드의 IP 주소 또는 호스트 이름을 추가합니다.

    alloydbomni:
      children:
        primary_instance_nodes:
          hosts:
            db-node-1:
            db-node-2:
            NEW_NODE:
    

    NEW_NODE를 추가하는 새 대기 노드의 IP 주소 또는 호스트 이름으로 바꿉니다.

  2. 리소스 사양을 업데이트하려면 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: 클러스터의 새로운 총 대기 노드 수(증가됨)입니다.
  3. 다음 방법 중 하나를 사용하여 업데이트된 리소스 사양을 적용합니다. RPM 오케스트레이터는 새 노드를 자동으로 프로비저닝합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Ansible

    Ansible을 사용하여 변경사항을 적용하려면 다음 단계를 완료하세요.

    1. 다음 콘텐츠가 포함된 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 키의 경로입니다.
    2. 만든 플레이북을 실행합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" add.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

    다음 변수를 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.

특정 데이터베이스 노드 삭제

클러스터에서 특정 대기 노드를 삭제하려면 배포 사양에서 삭제하고 대기 수를 줄여야 합니다.

  1. 배포 사양을 업데이트하려면 deployment_spec.yaml 파일을 열고 primary_instance_nodes 그룹에서 대상 노드의 IP 주소 또는 호스트 이름을 삭제합니다.

  2. 리소스 사양을 업데이트하려면 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: 클러스터의 새로운 총 대기 노드 수(감소됨)입니다.
  3. 다음 방법 중 하나를 사용하여 업데이트된 매니페스트를 적용합니다.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    Ansible

    Ansible을 사용하여 변경사항을 적용하려면 다음 단계를 완료하세요.

    1. 다음 콘텐츠가 포함된 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 키의 경로입니다.
    2. 플레이북을 실행합니다.

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" remove.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

    다음 변수를 바꿉니다.

    • DEPLOYMENT_SPEC_PATH: 배포 사양 디렉터리의 경로입니다.
    • DBCLUSTER_SPECIFICATION: 수정한 DBCluster 매니페스트의 경로입니다.
  4. 선택사항: 삭제된 노드의 구성요소를 정리합니다.

    alloydbctl

    AlloyDB Omni 구성요소를 수동으로 제거하여 삭제된 노드를 정리합니다.

    Ansible

    Ansible 오케스트레이터는 VM에 다음 구성요소가 있는 경우 자동으로 정리합니다.

    • AlloyDB Omni
    • AlloyDB Omni 모니터링
    • 노드 관리자
    • pgBackRest
    • PgBouncer
    • Keepalived