事前準備
安裝 AlloyDB Omni 前,請確認您符合下列需求。
規劃安裝作業
在 VM 上安裝 AlloyDB Omni 前,請先完成下列工作:
- 請參閱「規劃在 VM 上安裝 AlloyDB Omni」。
- 請參閱「執行 AlloyDB Omni (需要或不需要根目錄)」,並根據所選環境完成必要步驟。
選擇下載或安裝選項
選擇下列其中一個下載和安裝選項:
媒體 | 下載位置和安裝指南 | 部署至 |
---|---|---|
Debian 映像檔 | DockerHub (標記) | |
UBI 映像檔 (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 範圍
如果您使用 RHEL、CentOS 或 Fedora,請按照下列步驟操作:
- 執行
sudo dnf install -y iptables
指令,安裝iptables
指令列公用程式。 - 如果 RHEL 版本早於 9,請執行
sudo dnf install -y fuse-overlayfs
指令,安裝fuse-overlayfs
套件。
- 執行
如果 Linux 映像檔未為無權限使用者設定子 UID 和子 GID 範圍,您必須設定這些範圍,才能執行 AlloyDB Omni 無根模式。
如果使用 Debian 系統,請安裝
newuidmap
和newgidmap
二進位檔。apt-get install -y uidmap
為無根使用者新增
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。
為無根使用者新增
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
無根
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
請替換下列變數:
CONTAINER_NAME
:您在「建立 AlloyDB Omni 儲存資料的目錄」中使用的目錄名稱。
遠端連線
psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN
請替換下列變數:
執行這項指令後,系統會要求您輸入postgres
帳戶的密碼。輸入您在「建立容器」中使用的密碼。