このページでは、コンテナ ランタイムをサポートする任意の Linux VM に AlloyDB Omni の単一インスタンス インストールを行う方法について説明します。AlloyDB Omni のマルチインスタンス構成が必要な場合は、高可用性とデータの復元力をご覧ください。
始める前に
VM に AlloyDB Omni をインストールする前に、次の操作を行います。
- VM への AlloyDB Omni のインストールを計画するを読みます。
- AlloyDB Omni を rootful または rootless で実行するを読み、選択した環境に応じて、rootful または rootless に必要な手順を完了します。
AlloyDB Omni を rootful または rootless で実行する
AlloyDB Omni は、Docker または Podman を使用して実行できます。これらのコンテナ エンジンはどちらも、rootful または rootless として実行できます。rootful は、Docker または Podman を root ユーザーとして実行することを指します。rootless は、root 以外のユーザー(特権のないユーザー)として実行することを指します。
選択するモードは、環境の要件と設定によって異なります。シンプルさが重要であれば、rootful が適しています。権限のないユーザーのセキュリティが必要な場合は、ルートレスが適しています。
rootful 環境を実行する場合は、コンテナとホストマシン間のユーザー マッピングを管理する方法を決定する必要があります。実際には、AlloyDB Omni は postgres ユーザーとしてプロセスを実行します。このユーザーの UID と GID は 999 です。つまり、ユーザー マッピングを管理するには、次の 2 つの方法があります。
- 何もしない。postgresは引き続き、ホストマシン上のどのユーザーにもマッピングされません。
- UID と GID が 999のユーザーとユーザー グループを作成して、postgresがそのユーザーとユーザー グループにマッピングされるようにする。
rootless 環境の場合、postgres は、ホストユーザーとユーザー グループがアクセスできるサブ UID とサブ GID にマッピングされます(/etc/subuid ファイルと /etc/subgid ファイルで定義されているように)。つまり、ユーザーのマッピングを管理する必要はありません。
(rootless)サブ UID とサブ GID の範囲を構成する
Linux イメージに、権限のないユーザー用にサブ UID とサブ GID の範囲がまだ構成されていない場合は、AlloyDB Omni を rootless で実行するように構成する必要があります。
- Debian システムの場合は、 - newuidmapバイナリと- newgidmapバイナリをインストールします。- apt-get install -y uidmap 
- rootless ユーザーの - subuidエントリを追加します。- echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid - 次の変数を置き換えます。 - ROOTLESS_USER: AlloyDB Omni を実行するユーザー。
- SUB_UID_RANGE_START: ユーザーに登録するサブ UID の範囲の下限。
- SUB_UID_RANGE_COUNT: ユーザーに登録するサブ UID の数。この値は 999 以上にする必要があります。
 
- rootless ユーザーの - subgidエントリを追加します。- echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid - 次の変数を置き換えます。 - ROOTLESS_USER: AlloyDB Omni を実行するユーザー。
- SUB_GID_RANGE_START: ユーザーに登録するサブ GID の範囲の下限。
- SUB_GID_RANGE_COUNT: ユーザーに登録するサブ GID の数。この値は 999 以上にする必要があります。
 
- ユーザーがログインしていないときに AlloyDB Omni インスタンスを実行する場合は、次のコマンドを実行します。 - loginctl enable-linger ROOTLESS_USER - 次の変数を置き換えます。 - ROOTLESS_USER: AlloyDB Omni を実行するユーザー。
 
- Docker を使用している場合は、ROOTLESS_USER として次のコマンドを実行します。 - /usr/bin/dockerd-rootless-setuptool.sh install 
- 新しいシェルを開いて、サブ UID とサブ GID の変更を有効にします。 
AlloyDB Omni がデータを保存するディレクトリを作成する
AlloyDB Omni の実行以外の処理を行うストレージ システムを使用している場合は、デバイスの既存のファイル システムに AlloyDB Omni ディレクトリを作成できます。それ以外の場合は、専用デバイスに新しいファイル システムを作成できます。
既存のファイル システム
Docker
mkdir -p DATA_DIR
Docker
mkdir -p DATA_DIRPodman
mkdir -p DATA_DIR
Podman
mkdir -p DATA_DIR次の変数を置き換えます。
- DATA_DIR: データが保存されているホスト ディレクトリ パス。
専用デバイス
- ディスクをマウントするホストにディレクトリを作成します。 - mkdir -p MOUNT_POINT - 次の変数を置き換えます。 - MOUNT_POINT: AlloyDB Omni インスタンスを含む最上位ディレクトリ パス。
 
- ディスク デバイスに単一のパーティションを持つ gpt パーティション テーブルを作成します。 - parted -s DEVICE_PATH mklabel gpt- parted -s DEVICE_PATH mkpart primary 0% 100%- 次の変数を置き換えます。 - DEVICE_PATH: オペレーティング システムによってディスク デバイスに割り当てられたパス。
 
- ディスク デバイスにファイル システムを作成します。AlloyDB Omni には - ext4ファイル システムを使用することをおすすめします。- mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH - 次の変数を置き換えます。 - FS_LABEL: ファイル システムのラベル。- ext4ファイル システム ラベルの最大長は 16 文字です。
- PARTITION_PATH: コンテナのデータの保存に使用されるディスク パーティションのパス。
 
- デバイスをマウントし、 - /etc/fstabファイルにエントリを作成して、再起動後にディスクがマウントされるようにします。- echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | tee -a /etc/fstab- systemctl daemon-reload- mount MOUNT_POINT- 次の変数を置き換えます。 - FS_LABEL: ファイル システムのラベル。- ext4ファイル システム ラベルの最大長は 16 文字です。
- MOUNT_POINT: AlloyDB Omni インスタンスを含む最上位ディレクトリ パス。
 
- コンテナ固有のファイル システムにデータ ディレクトリを作成します。 - Rootful- mkdir -p DATA_DIR - Rootless- mkdir -p DATA_DIR- chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR- 次の変数を置き換えます。 - DATA_DIR: データが保存されているホスト ディレクトリ パス。
- ROOTLESS_USER: rootless 環境を使用している場合、このユーザーがディレクトリを所有します。
- ROOTLESS_GROUP: ルートレス環境を使用している場合、このグループがディレクトリを所有します。
 
コンテナを作成する
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
次の変数を置き換えます。
- CONTAINER_NAME: AlloyDB Omni がデータを保存するディレクトリを作成するでディレクトリに使用した名前。
- NEW_PASSWORD: 新しいコンテナの- postgresユーザーに作成後に割り当てられるパスワード。
- DATA_DIR: データが保存されているホスト ディレクトリ パス。
- HOST_PORT: コンテナが固有のポート- 5432を公開する、ホストマシン上の TCP ポート。ホストマシン上の PostgreSQL のデフォルト ポートも使用するには、- 5432を指定します。
インスタンスに接続する
環境に応じて、AlloyDB Omni インスタンスにローカルまたはリモートで接続できます。
ローカルで接続する
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Docker
docker exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
Podman
podman exec -it CONTAINER_NAME psql -U postgres
次の変数を置き換えます。
- CONTAINER_NAME: AlloyDB Omni がデータを保存するディレクトリを作成するでディレクトリに使用した名前。
リモートから接続する
psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN
次の変数を置き換えます。
- HOST_PORT: コンテナを作成するで使用した TCP ポート。
- IP_ADDRESS_OR_FQDN: AlloyDB Omni が実行されているホストの IP アドレスまたは完全修飾ドメイン名。
このコマンドを実行すると、postgres アカウントのパスワードを入力するよう求められます。コンテナを作成するで使用したパスワードを入力します。