クラスタを作成する

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

AlloyDB Omni の使用を開始するには、データベース クラスタを作成します。

制限事項

次の制限が適用されます。

  • AlloyDB Omni はポート 5432 で実行されます。カスタムポートの構成はサポートされていません。

  • クラスタを作成する前に、すべてのデータベース パラメータ構成が正しいことを確認してください。クラスタを作成した後は、データベース パラメータを変更できません。

始める前に

クラスタを作成する前に、次の操作を行います。

  • AlloyDB Omni オーケストレーターをインストールする

  • AlloyDB Omni コンポーネントをインストールする

  • TLS 証明書を構成する

  • オーケストレータ内にプロビジョニングされたすべてのデータベース ノードの PG_DATA_DIR に外部ボリューム(DataDisk)をマウントします。

  • Ansible の代わりに alloydbctl を使用する場合は、必要な policycoreutils-python-utils パッケージがすべての VM にインストールされていることを確認してください。このパッケージをインストールするには、次のコマンドを実行します。

    sudo dnf install policycoreutils-python-utils
  • Google Cloud 環境を使用している場合は、ENVIRONMENT_TYPEgcp に設定します。次に、root ユーザーとして gcloud auth login を実行して、gcloud CLI アカウントを認証する必要があります。また、認証済みアカウントには次の権限が必要です。

    • compute.instances.get
    • compute.instances.list
    • compute.instances.updateNetworkInterface

クラスタ仕様を準備する

クラスタを作成するには、AlloyDB Omni がクラスタの構成方法を認識している必要があります。必要な仕様を作成するには、DBCluster 形式で YAML ファイルを作成します。

Secret:
  metadata:
    name: db-pw-DBCLUSTER_NAME
  spec:
    type: Opaque
    data:
      DBCLUSTER_NAME: BASE64_PASSWORD
---
DBCluster:
  metadata:
    name: DBCLUSTER_NAME
  spec:
    databaseVersion: 18.1.0
    mode: ""
    availability:
      numberOfStandbys: NUM_STANDBY_NODES
      enableAutoFailover: true
      enableAutoHeal: true
      autoFailoverTriggerThreshold: AUTOFAILOVER_TRIGGER_THRESHOLD
      autoHealTriggerThreshold: AUTOHEAL_TRIGGER_THRESHOLD
      healthcheckPeriodSeconds: HEALTHCHECK_PERIOD
      replayReplicationSlotsOnStandbys: false
    primarySpec:
      adminUser:
        passwordRef:
          name: db-pw-DBCLUSTER_NAME
      resources:
        cpu: CPU_LIMIT
        memory: MEMORY_LIMIT
        disks:
        - name: DataDisk
          path: PG_DATA_DIR
      parameters:
        max_connections: "MAX_CONNECTIONS"
        max_wal_size: "MAX_WAL_SIZE"
        max_worker_processes: "MAX_WORKER_PROCESSES"
        log_connections: "LOG_CONNECTIONS"
        log_disconnections: "LOG_DISCONNECTS"
        log_hostname: "LOG_HOSTNAME"
        log_statement: "LOG_STATEMENT"
        huge_pages: "HUGE_PAGES"
        tcp_keepalives_idle: "TCP_KEEPALIVES_IDLE"
        tcp_keepalives_interval: "TCP_KEEPALIVES_INTERVAL"
        tcp_keepalives_count: "TCP_KEEPALIVES_COUNT"
      dbLoadBalancerOptions:
        DB_LOAD_BALANCER_TYPE:
          loadBalancerIP: "VIRTUAL_IP"
          loadBalancerType: "internal"
          loadBalancerInterface: "VIRTUAL_IP_INTERFACE"

次の変数を置き換えます。

  • DBCLUSTER_NAME: データベース クラスタの名前。例: my-dbcluster

  • BASE64_PASSWORD: postgres 管理者ユーザーに使用される base64 エンコードされたパスワード。

  • NUM_STANDBY_NODES: クラスタ内のスタンバイ ノードの数。例: 2

  • (省略可)AUTOFAILOVER_TRIGGER_THRESHOLD: フェイルオーバーが発生するまでにヘルスチェックが失敗する回数。デフォルト値は 3 です。最小値は 0 ですが、値が 0 に設定されている場合、AlloyDB Omni はデフォルト値を使用します。

    ヘルスチェックが AUTOFAILOVER_TRIGGER_THRESHOLD 回失敗した場合、またはヘルスチェックの累積時間が HEALTHCHECK_PERIOD * AUTOFAILOVER_TRIGGER_THRESHOLD 秒に達した場合、自動フェイルオーバーが発生します。

  • (省略可)AUTOHEAL_TRIGGER_THRESHOLD: 自動修復が開始されるまでにヘルスチェックが失敗する回数。デフォルト値は 3 です。最小値は 0 ですが、値が 0 に設定されている場合、AlloyDB Omni はデフォルト値を使用します。

    ヘルスチェックが AUTOHEAL_TRIGGER_THRESHOLD 回失敗した場合、またはヘルスチェックの累積時間が HEALTHCHECK_PERIOD * AUTOHEAL_TRIGGER_THRESHOLD 秒に達した場合、自動復旧が行われます。

  • (省略可)HEALTHCHECK_PERIOD: 各ヘルスチェック間の待機時間(秒数)。デフォルト値は 30 です。最小値は 1 です。最大値は 86400(1 日)です。

  • CPU_LIMIT: データベース コンテナに割り当てる CPU の数。例: 4

  • MEMORY_LIMIT: データベース コンテナに割り当てるメモリ量。例: 32Gi500Mi

  • PG_DATA_DIR: データベース データが保存されるディレクトリのホストパス。

  • (省略可)MAX_CONNECTIONS: PostgreSQL データベースへの同時接続の最大数。デフォルト値は 50 です。サポートされている最小値も 50 です。詳細については、PostgreSQL max_connections リファレンスをご覧ください。

  • (省略可)MAX_WAL_SIZE: 自動チェックポイント間にログ先行書き込み(WAL)が拡張する最大サイズ。デフォルト値は 1GB です。詳細については、PostgreSQL max_wal_size リファレンスをご覧ください。

  • (省略可)MAX_WORKER_PROCESSES: 単一の Gather または Gather Merge で起動できるワーカーの最大数。デフォルト値は 64 です。詳細については、PostgreSQL max_worker_processes リファレンスをご覧ください。

  • (省略可)LOG_CONNECTIONS: PostgreSQL サーバーへの接続をロギングするかどうかを決定します。デフォルト値は on です。詳細については、PostgreSQL log_connections リファレンスをご覧ください。

  • (省略可)LOG_DISCONNECTS: PostgreSQL セッションの終了がログに記録されるかどうかを決定します。デフォルト値は on です。詳細については、PostgreSQL log_disconnections リファレンスをご覧ください。

  • (省略可)LOG_HOSTNAME: 接続ホストの IP に加えてホスト名をログに記録するかどうかを決定します。デフォルト値は on です。詳細については、PostgreSQL log_hostname リファレンスをご覧ください。

  • (省略可)LOG_STATEMENT: どの SQL ステートメントをロギングするかを決定します。デフォルト値は none です。詳細については、PostgreSQL log_statement リファレンスをご覧ください。

  • (省略可)HUGE_PAGES: メインの共有メモリ領域に大容量ページがリクエストされるかどうかを決定します。デフォルト値は off です。詳細については、PostgreSQL huge_pages リファレンスをご覧ください。

  • (省略可)TCP_KEEPALIVES_IDLE: OS がクライアントに TCP keepalive メッセージを送信しようとするまでの、ネットワーク アクティビティがない時間(秒単位)。デフォルト値は 10 です。詳細については、PostgreSQL tcp_keepalives_idle リファレンスをご覧ください。

  • (省略可)TCP_KEEPALIVES_INTERVAL: クライアントによって確認応答されていない TCP keepalive メッセージを再送信するまでの時間(秒単位)。デフォルト値は 10 です。詳細については、PostgreSQL tcp_keepalives_interval リファレンスをご覧ください。

  • (省略可)TCP_KEEPALIVES_COUNT: サーバーとクライアントの接続が非アクティブと見なされるまでに失われる可能性がある TCP keepalive メッセージの数。デフォルト値は 10 です。詳細については、PostgreSQL tcp_keepalives_count リファレンスをご覧ください。

  • (省略可)ENVIRONMENT_TYPE: クラスタが設定される環境(onprem または gcp)を決定します。

  • (省略可)VIRTUAL_IP: ロードバランサで使用される仮想 IP アドレス。dbLoadBalancerOptions を定義する場合は必須です。詳細については、高可用性を管理するをご覧ください。

  • (省略可)VIRTUAL_IP_INTERFACE: VIRTUAL_IP が構成されているネットワーク インターフェース。デフォルト値は eth0 です。

クラスタを作成する

クラスタを作成するには、環境に一致するタブを選択し、手順に沿って操作します。

Ansible

クラスタを作成するには、次の手順を完了します。

  1. データベース クラスタの仕様のプレイブックを作成します。

    - name: Create DBCluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.bootstrap
    
    

    次の変数を置き換えます。

    • ANSIBLE_USER: Ansible が AlloyDB Omni ノードへのログインに使用する OS ユーザー。

    • ANSIBLE_SSH_PRIVATE_KEY_FILE: Ansible が SSH を使用して AlloyDB Omni ノードに接続するために使用する秘密鍵。

  2. ハンドブックを実行します。

    ansible-playbook DBCLUSTER_PLAYBOOK -i "DEPLOYMENT_SPEC" \
          -e resource_spec="DBCLUSTER_SPECIFICATIONS"

    次の変数を置き換えます。

alloydbctl

クラスタを作成するには、次のコマンドを実行します。

alloydbctl apply -d "DEPLOYMENT_SPEC" -r "DBCLUSTER_SPECIFICATIONS"

次の変数を置き換えます。

クラスタの削除

クラスタを削除するには、環境に一致するタブを選択し、手順に沿って操作します。

Ansible

Ansible を使用してクラスタを削除するには、次の操作を行います。

  1. teardown.yaml という名前のプレイブックを作成します。

    - name: Tear down AlloyDB Omni cluster
      hosts: localhost
      vars:
        ansible_become: true
        ansible_user: ANSIBLE_USER
        ansible_ssh_private_key_file: ANSIBLE_SSH_PRIVATE_KEY_FILE
      roles:
      - role: google.alloydbomni_orchestrator.delete
    
  2. ansible-playbook を使用してハンドブックを実行します。DBClusterresource_type として指定し、削除するクラスタの名前を resource_name として指定する必要があります。

    ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
      -e `resource_type`=`DBCluster` -e `resource_name`="DBCLUSTER_NAME"

クラスタの状態の不整合(ノードにアクセスできないなど)が原因で削除プロセスが失敗した場合は、コマンドに -e force=true を追加して、クラスタの強制削除を試みることができます。これにより、オーケストレーターは、破棄プロセス中のエラーを無視し、できるだけ多くのリソースを削除しようとします。

  ansible-playbook -i "DEPLOYMENT_SPEC" teardown.yaml \
    -e resource_type=DBCluster -e resource_name="DBCLUSTER_NAME" -e force=true

alloydbctl

alloydbctl を使用してクラスタを削除するには、次のコマンドを実行します。

alloydbctl delete -d "DEPLOYMENT_SPEC" \
      --resource_type DBCluster --resource_name "DBCLUSTER_NAME"

次の変数を置き換えます。