VM に AlloyDB Omni をインストールする

このページでは、コンテナ ランタイムをサポートする任意の Linux VM に AlloyDB Omni の単一インスタンス インストールを行う方法について説明します。AlloyDB Omni のマルチインスタンス構成が必要な場合は、高可用性とデータ復元力をご覧ください。

始める前に

VM に AlloyDB Omni をインストールする前に、次の操作を行います。

  1. VM への AlloyDB Omni のインストールを計画するをご覧ください。
  2. AlloyDB Omni をルート有りまたはルートレスで実行するを読み、選択した環境に応じて、ルート有りまたはルートレスに必要な手順を完了します。

AlloyDB Omni をルート有りまたはルートレスで実行する

AlloyDB Omni は、Docker または Podman を使用して実行できます。これらのコンテナ エンジンはどちらも、rootful または rootless として実行できます。Rootful は、Docker または Podman を root ユーザーとして実行することを指します。rootless は、root 以外のユーザー(特権のないユーザー)として実行することを指します。

選択するモードは、環境の要件と設定によって異なります。シンプルさが重要であれば、rootful が適しています。特権のないユーザーのセキュリティが必要な場合は、rootless が適しています。

ルートフル環境を実行する場合は、コンテナとホストマシン間のユーザー マッピングを管理する方法を決定する必要があります。実際には、AlloyDB Omni は UID と GID が 999postgres ユーザーとしてプロセスを実行します。つまり、ユーザー マッピングを管理するには、次の 2 つの方法があります。

  • 何もしない。postgres は引き続き、ホストマシン上のどのユーザーにもマッピングされません。
  • UID と GID が 999 のユーザーとユーザー グループを作成して、postgres がそのユーザーとユーザー グループにマッピングされるようにします。

rootless 環境の場合、postgres は、ホストユーザーとユーザー グループがアクセスできるサブ UID とサブ GID にマッピングされます(/etc/subuid ファイルと /etc/subgid ファイルで定義されているように)。つまり、ユーザーのマッピングを管理する必要はありません。

(rootless)サブ UID とサブ GID の範囲を構成する

Linux イメージに、権限のないユーザー用にサブ UID とサブ GID の範囲がまだ構成されていない場合は、AlloyDB Omni を rootless で実行するように構成する必要があります。

  1. Debian システムの場合は、newuidmap バイナリと newgidmap バイナリをインストールします。

    apt-get install -y uidmap
    
  2. 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 以上にする必要があります。
  3. 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 以上にする必要があります。
  4. ユーザーがログインしていないときに AlloyDB Omni インスタンスを実行する場合は、次のコマンドを実行します。

    loginctl enable-linger ROOTLESS_USER
    

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

    • ROOTLESS_USER: AlloyDB Omni を実行するユーザー。
  5. Docker を使用している場合は、ROOTLESS_USER として次のコマンドを実行します。

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  6. 新しいシェルを開いて、サブ UID とサブ GID の変更を有効にします。

AlloyDB Omni がデータを保存するディレクトリを作成する

AlloyDB Omni の実行以外の処理を行うストレージ システムを使用している場合は、デバイスの既存のファイル システムに AlloyDB Omni ディレクトリを作成できます。それ以外の場合は、専用デバイスに新しいファイル システムを作成できます。

既存のファイル システム

Docker

mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

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

  • DATA_DIR: データが保存されているホスト ディレクトリ パス。

専用デバイス

  1. ディスクをマウントするホストにディレクトリを作成します。

    mkdir -p MOUNT_POINT
    

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

    • MOUNT_POINT: AlloyDB Omni インスタンスを含むトップレベル ディレクトリ パス。
  2. ディスク デバイスに単一のパーティションを持つ gpt パーティション テーブルを作成します。

    parted -s DEVICE_PATH mklabel gpt
    parted -s DEVICE_PATH mkpart primary 0% 100%

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

    • DEVICE_PATH: オペレーティング システムによってディスク デバイスに割り当てられたパス。
  3. ディスク デバイスにファイル システムを作成します。AlloyDB Omni には ext4 ファイル システムを使用することをおすすめします。

    mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH
    

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

    • FS_LABEL: ファイル システムのラベル。ext4 ファイル システム ラベルの最大長は 16 文字です。
    • PARTITION_PATH: コンテナのデータの保存に使用されるディスク パーティションのパス。
  4. デバイスをマウントし、/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 インスタンスを含むトップレベル ディレクトリ パス。
  5. コンテナ固有のファイル システムにデータ ディレクトリを作成します。

    Rootful

    mkdir -p DATA_DIR
    

    Rootless

    mkdir -p DATA_DIR
    chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR

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

    • DATA_DIR: データが保存されているホスト ディレクトリ パス。
    • ROOTLESS_USER: ルートレス環境を使用している場合、これはディレクトリを所有するユーザーです。
    • 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

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

リモートで接続する

psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN

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

  • HOST_PORT: コンテナを作成するで使用した TCP ポート。
  • IP_ADDRESS_OR_FQDN: AlloyDB Omni が実行されているホストの IP アドレスまたは完全修飾ドメイン名。

このコマンドを実行すると、postgres アカウントのパスワードを入力するよう求められます。コンテナを作成するで使用したパスワードを入力します。

次のステップ