クラスタを作成する

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

データベース クラスタを作成して、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
  • 環境を使用している場合は、ENVIRONMENT_TYPEgcp に設定します。 Google Cloud 次に、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 です。詳細については、 the 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 を使用してハンドブックを実行します。resource_type として DBCluster を指定し、削除するクラスタの名前を 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"

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