このページでは、コンテナ ランタイムをサポートする任意の Linux VM に AlloyDB Omni の単一インスタンス インストールを行う方法について説明します。AlloyDB Omni のマルチインスタンス構成が必要な場合は、高可用性とデータ復元力をご覧ください。
始める前に
VM に AlloyDB Omni をインストールする前に、次の操作を行います。
- VM への AlloyDB Omni のインストールを計画するをご覧ください。
- AlloyDB Omni をルート有りまたはルートレスで実行するを読み、選択した環境に応じて、ルート有りまたはルートレスに必要な手順を完了します。
AlloyDB Omni をルート有りまたはルートレスで実行する
AlloyDB Omni は、Docker または Podman を使用して実行できます。これらのコンテナ エンジンはどちらも、rootful または rootless として実行できます。Rootful は、Docker または Podman を root ユーザーとして実行することを指します。rootless は、root 以外のユーザー(特権のないユーザー)として実行することを指します。
選択するモードは、環境の要件と設定によって異なります。シンプルさが重要であれば、rootful が適しています。特権のないユーザーのセキュリティが必要な場合は、rootless が適しています。
ルートフル環境を実行する場合は、コンテナとホストマシン間のユーザー マッピングを管理する方法を決定する必要があります。実際には、AlloyDB Omni は UID と GID が 999
の postgres
ユーザーとしてプロセスを実行します。つまり、ユーザー マッピングを管理するには、次の 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_DIR
Podman
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_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
アカウントのパスワードを入力するよう求められます。コンテナを作成するで使用したパスワードを入力します。