在 VM 上安裝 AlloyDB Omni

選取說明文件版本:

本頁說明如何在支援容器執行階段的任何 Linux VM 上,執行 AlloyDB Omni 的單一執行個體安裝作業。如需 AlloyDB Omni 的多執行個體設定,請參閱高可用性和資料復原能力

事前準備

安裝 AlloyDB Omni 前,請確認您符合下列需求。

規劃安裝作業

在 VM 上安裝 AlloyDB Omni 前,請先完成下列工作:

  1. 請參閱「規劃在 VM 上安裝 AlloyDB Omni」。
  2. 請參閱「執行 AlloyDB Omni (需要或不需要根目錄)」,並根據所選環境完成必要步驟。

選擇下載或安裝選項

選擇下列其中一個下載和安裝選項:

媒體 下載位置和安裝指南 部署至
Debian 映像檔 DockerHub (標記)
  • DockerPodman。您可以在任何虛擬機器 (VM) 中,以容器形式執行這些容器化工具。
UBI 映像檔 (Red Hat) Red Hat 生態系統目錄
  • Red Hat 環境。以容器形式執行。

以有根或無根模式執行 AlloyDB Omni

您可以使用 Docker 或 Podman 執行 AlloyDB Omni。 您可以執行這些容器引擎,無論是否具備根存取權皆可。「Rootful」是指以超級使用者身分執行 Docker 或 Podman,而「rootless」是指以非超級使用者或無權限使用者身分執行這些容器映像檔。

選擇模式時,請考量環境需求和偏好設定。如果簡單易用是你的首要考量,那麼 Rootful 或許就是適合你的工具。如果您需要無權限使用者的安全性,無根可能就是正確的選擇。

如果您決定執行具備根權限的環境,則必須決定如何管理容器與主機之間的對應使用者。實際上,AlloyDB Omni 會以 postgres 使用者身分執行程序,該使用者具有 999 的 UID 和 GID。也就是說,您有兩種管理使用者對應的方式:

  • 不採取任何行動。postgres不會對應至主機上的任何使用者。
  • 使用 999 的 UID 和 GID 建立使用者和使用者群組,以便 postgres 對應至該使用者和使用者群組。

在無根環境中,postgres 會對應至主機使用者和使用者群組可存取的子 UID 和子 GID (如 /etc/subuid/etc/subgid 檔案中所定義)。這表示您不需要管理使用者對應。

(無根) 設定子 UID 和子 GID 範圍

  1. 如果您使用 RHEL、CentOS 或 Fedora,請按照下列步驟操作:

    1. 執行 sudo dnf install -y iptables 指令,安裝 iptables 指令列公用程式。
    2. 如果 RHEL 版本早於 9,請執行 sudo dnf install -y fuse-overlayfs 指令,安裝 fuse-overlayfs 套件。
  2. 如果 Linux 映像檔未為無權限使用者設定子 UID 和子 GID 範圍,您必須設定這些範圍,才能執行 AlloyDB Omni 無根模式。

  3. 如果使用 Debian 系統,請安裝 newuidmapnewgidmap 二進位檔。

    apt-get install -y uidmap
    
  4. 為無根使用者新增 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。
  5. 為無根使用者新增 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。
  6. 如要讓 AlloyDB Omni 執行個體在使用者未登入時執行,請執行下列指令。

    loginctl enable-linger ROOTLESS_USER
    

    請替換下列變數:

    • ROOTLESS_USER:要用來執行 AlloyDB Omni 的使用者。
  7. 如果您使用 Docker,請以 ROOTLESS_USER 執行下列指令:

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  8. 開啟新的殼層,讓子 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
    

    無根

    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:IMAGE_TAG

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:IMAGE_TAG

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:IMAGE_TAG

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:IMAGE_TAG

請替換下列變數:

  • CONTAINER_NAME:您在「建立 AlloyDB Omni 儲存資料的目錄」中使用的目錄名稱。
  • NEW_PASSWORD:新容器建立後,系統會為容器的 postgres 使用者指派密碼。
  • DATA_DIR:儲存資料的主機目錄路徑。
  • HOST_PORT:容器應將自己的通訊埠 5432 發布至主機的 TCP 通訊埠。如要在主機上使用 PostgreSQL 預設通訊埠,請指定 5432
  • IMAGE_TAG:使用 16.3.0 取得最新版 Debian 映像檔,或使用 16.3.0-ubi 取得最新版 UBI 映像檔。

連線至執行個體

視環境而定,您可以在本機遠端連線至 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帳戶的密碼。輸入您在「建立容器」中使用的密碼。

後續步驟