AlloyDB Omni のインストールをカスタマイズする

AlloyDB Omni は Docker イメージを介してデプロイされるため、さまざまな形のカスタマイズが可能です。このページでは、よく使用されるカスタマイズをいくつか紹介します。

デフォルト構成を使用して AlloyDB Omni をすぐに使用するには、クイックスタート: AlloyDB Omni をご覧ください。

始める前に

次の表に、AlloyDB Omni に推奨されるハードウェアとソフトウェアの構成を示します。

OS/プラットフォーム 推奨されるハードウェア構成 推奨されるソフトウェア構成
Linux
  • AVX2 をサポートする x86-64 または Arm (*) CPU
  • AlloyDB Omni に割り当てられた CPU ごとに 8 GB の RAM
  • 20 GB 以上のディスク容量
  • Debian ベースの OS(Ubuntu など)、RHEL 8 または 9
  • Linux カーネル バージョン 6.1 以降、または MADV_COLLAPSE ディレクティブと MADV_POPULATE_WRITE ディレクティブをサポートする 5.3 より前の Linux カーネル バージョン
  • Cgroupsv2 が有効
  • Docker Engine 25.0.0 以降または Podman 5.0.0 以降
  • macOS
  • AVX2 をサポートする Intel CPU または M チップ
  • AlloyDB Omni に割り当てられた CPU ごとに 8 GB の RAM
  • 20 GB 以上のディスク容量
  • Docker Desktop 4.30 以降
  • (*) Arm のサポートはプレビュー版です。

    AlloyDB Omni はコンテナで実行されます。AlloyDB Omni をインストールする前に、DockerPodman などのコンテナ ランタイムをマシンにインストールします。

    Podman コマンドは、無効な Security-Enhanced Linux(SELinux)で実行されるルートレス コンテナ用に用意されています。

    外部データ ディレクトリをマウントする

    デフォルトでは、クイックスタート: AlloyDB Omni をインストールするのコマンドは、データベース データを Docker によって管理される領域に保存します。これは、使い始める際には便利ですが、データ ディレクトリを見つけて使用するのは困難です。代わりに、データ ディレクトリをディスクの既知の場所にマッピングするように、バインディング マウントを設定できます。

    Docker

      docker run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    次のように置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリにこの新しい AlloyDB Omni コンテナを割り当てる名前(例: my-omni)。

    • NEW_PASSWORD: 新しいコンテナの postgres ユーザーに作成後に割り当てられるパスワード。

    • DATA_DIR: AlloyDB Omni がデータ ディレクトリに使用するファイル システム パス。

    • HOST_PORT: コンテナがポート 5432 を公開するホストマシンの TCP ポート。ホストマシンでも PostgreSQL のデフォルト ポートを使用するには、5432 を指定します。

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    次のように置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリにこの新しい AlloyDB Omni コンテナを割り当てる名前(例: my-omni)。

    • NEW_PASSWORD: 新しいコンテナの postgres ユーザーに作成後に割り当てられるパスワード。

    • DATA_DIR: AlloyDB Omni がデータ ディレクトリに使用するファイル システム パス。

    • HOST_PORT: コンテナがポート 5432 を公開するホストマシンの TCP ポート。ホストマシンでも PostgreSQL のデフォルト ポートを使用するには、5432 を指定します。

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      -v DATA_DIR:/var/lib/postgresql/data \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    次のように置き換えます。

    • CONTAINER_NAME: ホストマシンのコンテナ レジストリにこの新しい AlloyDB Omni コンテナを割り当てる名前(例: my-omni)。

    • NEW_PASSWORD: 新しいコンテナの postgres ユーザーに作成後に割り当てられるパスワード。

    • DATA_DIR: AlloyDB Omni がデータ ディレクトリに使用するファイル システム パス。

    • HOST_PORT: コンテナがポート 5432 を公開するホストマシンの TCP ポート。ホストマシンでも PostgreSQL のデフォルト ポートを使用するには、5432 を指定します。

    ulimits を有効にする

    ulimit パラメータは、Docker コンテナが使用できるプロセスの上限を指定します。パフォーマンスを最適化するには、次の ulimit を設定することをおすすめします。

    • nice=-20:-20: AlloyDB Omni は、重要な PostgreSQL プロセスを優先して実行できるように、プロセスの優先度を調整します。優先度が高いプロセスには、使用可能な CPU の割り当てが多くなります。プロセスの優先度を調整するには、--ulimit=nice=-20:-20 を指定します。これにより、AlloyDB Omni コンテナの制限が解除されます。

    • memlock=-1:-1: AlloyDB Omni は自動メモリ管理を行います。--ulimit=memlock=-1:-1 を設定すると、データベースでメモリページの入れ替え方法をより適切に制御できるため、パフォーマンスが向上します。

    Docker

      docker run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    ロギング ドライバを指定する

    デフォルトでは、Docker はログのローテーションを行いません。これにより、ディスク容量が大量に消費され、最終的にディスク容量が不足する可能性があります。別のロギング ドライバを使用するように Docker を構成できます。たとえば、journald にログを記録するには:

    Docker

      docker run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --log-driver=journald \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    Podman

      podman run --name CONTAINER_NAME \
      -e POSTGRES_PASSWORD=NEW_PASSWORD \
      --log-driver=journald \
      -p HOST_PORT:5432 -d google/alloydbomni:15

    Docker とロギング ドライバの詳細については、Docker のドキュメント ロギング ドライバを構成するをご覧ください。

    PostgreSQL を使用してロギングを構成することもできます。詳細については、PostgreSQL のドキュメントのエラー レポートとロギングをご覧ください。

    共有メモリ ボリュームをマウントする

    AlloyDB Omni で AlloyDB カラム型エンジンを使用する場合は、AlloyDB Omni コンテナで共有メモリを使用できるようにすることをおすすめします。次の例に示すように、この方法はホスト オペレーティング システムによって異なります。

    Linux

    共有メモリをコンテナで使用できるようにするには、/dev/shm をマウントします。

    Docker

        docker run --name CONTAINER_NAME \
          -e POSTGRES_PASSWORD=NEW_PASSWORD \
          -p HOST_PORT:5432 \
          -v /dev/shm:/dev/shm \
          -d google/alloydbomni:15

    Podman

        podman run --name CONTAINER_NAME \
          -e POSTGRES_PASSWORD=NEW_PASSWORD \
          -p HOST_PORT:5432 \
          -v /dev/shm:/dev/shm \
          -d google/alloydbomni:15

    macOS

    共有メモリをコンテナで使用できるようにするには、--shm-size フラグを指定します。

    Docker

      docker run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        --shm-size=SHARED_MEMORY_SIZE \
        -d google/alloydbomni:15

    SHARED_MEMORY_SIZE は、コンテナの実行で説明されている形式で、コンテナの /dev/shm に設定するサイズに置き換えます。たとえば、1 ギガバイトを指定するには、値 1g を使用します。

    Podman

      podman run --name CONTAINER_NAME \
        -e POSTGRES_PASSWORD=NEW_PASSWORD \
        -p HOST_PORT:5432 \
        --shm-size=SHARED_MEMORY_SIZE \
        -d google/alloydbomni:15

    SHARED_MEMORY_SIZE は、コンテナの実行で説明されている形式で、コンテナの /dev/shm に設定するサイズに置き換えます。たとえば、1 ギガバイトを指定するには、値 1g を使用します。

    共有メモリサイズは、データベースの google_job_scheduler.max_parallel_workers_per_job フラグの値の 250 倍以上のメガバイト数に設定することをおすすめします。カラム型エンジンの詳細については、AlloyDB Omni でカラム型エンジンを構成するをご覧ください。

    たとえば、google_job_scheduler.max_parallel_workers_per_job データベース フラグがデフォルト値の 2 に設定されている場合は、データベース サーバーを起動するときに --shm-size=500m 以上のフラグを追加することを検討してください。

    --shm-size フラグの詳細については、コンテナの実行をご覧ください。