AlloyDB Omni でクラスタノードを管理する

ドキュメントのバージョンを選択してください。

このページでは、RPM オーケストレーターを使用して、既存の AlloyDB Omni クラスタでデータベース ノードを追加または削除する方法について説明します。

既存のクラスタにスタンバイ ノードを追加して、読み取りワークロードをスケーリングしたり、高可用性を向上させたりできます。また、特定のデータベース ノードを削除して、対象を絞ったメンテナンスや、永続的なデコミッションを行い、クラスタ容量を削減することもできます。

始める前に

  • クラスタが正常な状態で、status.phase が Ready であることを確認します。
  • 新しいノードを追加する場合は、システム要件を満たしていること、必要な AlloyDB Omni コンポーネントがインストールされていることを確認します。

データベース ノードを追加する

クラスタに新しいスタンバイ データベース ノードを追加するには、Deployment の仕様(インベントリとも呼ばれます)とデータベース クラスタ リソース仕様の両方を更新する必要があります。

  1. Deployment の仕様を更新するには、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: Deployment の仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。

特定のデータベース ノードを削除する

クラスタから特定のスタンバイ ノードを削除するには、Deployment の仕様から削除し、スタンバイ数を減らす必要があります。

  1. Deployment の仕様を更新するには、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: Deployment の仕様ディレクトリのパス。
    • DBCLUSTER_SPECIFICATION: 変更した DBCluster マニフェストのパス。
  4. 省略可: 削除されたノードのコンポーネントをクリーンアップします。

    alloydbctl

    AlloyDB Omni コンポーネントを手動でアンインストールして、削除されたノードをクリーンアップします。

    Ansible

    Ansible オーケストレーターは、VM に次のコンポーネントが存在する場合、それらを自動的にクリーンアップします。

    • AlloyDB Omni
    • AlloyDB Omni モニター
    • ノード マネージャー
    • pgBackRest
    • PgBouncer
    • Keepalived