AlloyDB Omni mit Containern installieren

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite wird beschrieben, wie Sie AlloyDB Omni auf einer einzelnen Instanz auf einer beliebigen Linux-VM installieren, die Containerlaufzeiten unterstützt. Wenn Sie eine Konfiguration mit mehreren Instanzen von AlloyDB Omni benötigen, lesen Sie den Abschnitt Hochverfügbarkeit und Datenresilienz.

Hinweis

Prüfen Sie vor der Installation von AlloyDB Omni, ob Sie die folgenden Anforderungen erfüllen.

Installation vorbereiten

Bevor Sie AlloyDB Omni auf Ihrer VM installieren, gehen Sie so vor:

  1. Lesen Sie AlloyDB Omni-Installation auf einer VM planen.
  2. Lesen Sie den Abschnitt AlloyDB Omni mit oder ohne Root-Berechtigungen ausführen und führen Sie die erforderlichen Schritte für die Ausführung mit oder ohne Root-Berechtigungen aus, je nachdem, welche Umgebung Sie auswählen.

Download- oder Installationsoption auswählen

Wählen Sie eine der folgenden Download- und Installationsoptionen aus:

Medien Downloadorte und Installationsanleitungen Bereitstellung für
Debian-Image DockerHub (Tags)
  • Docker, Podman. Sie können diese Containerisierungstools als Container auf jeder VM ausführen.
UBI-Image (Red Hat) Red Hat Ecosystem Catalog
  • Red Hat-Umgebung. Führen Sie das als Container aus.

AlloyDB Omni mit oder ohne Root-Berechtigungen ausführen

Sie können AlloyDB Omni mit Docker oder Podman ausführen. Sie können diese Container-Engines als Rootful oder Rootless ausführen. „Rootful“ bezieht sich auf die Ausführung von Docker oder Podman als Root-Nutzer, während „Rootless“ sich auf die Ausführung dieser Container-Images als Nicht-Root-Nutzer oder Nutzer ohne Berechtigungen bezieht.

Der von Ihnen gewählte Modus hängt von den Anforderungen und Präferenzen ab, die Sie für die Umgebung haben. Wenn Einfachheit wichtig ist, ist Rootful möglicherweise die richtige Wahl für Sie. Wenn Sie die Sicherheit eines nicht privilegierten Nutzers benötigen, ist die Rootless-Option möglicherweise die richtige Wahl.

Wenn Sie sich für eine Root-Umgebung entscheiden, müssen Sie festlegen, wie die Nutzerzuordnung zwischen dem Container und Ihrem Hostcomputer verwaltet werden soll. In der Praxis führt AlloyDB Omni Prozesse als Nutzer postgres aus, der die UID und GID 999 hat. Sie haben zwei Möglichkeiten, die Nutzerzuordnung zu verwalten:

  • Nichts unternehmen. postgres wird weiterhin keinem Nutzer auf Ihrem Hostcomputer zugeordnet.
  • Erstellen Sie einen Nutzer und eine Nutzergruppe mit der UID und GID 999, damit postgres diesem Nutzer und dieser Nutzergruppe zugeordnet wird.

In Rootless-Umgebungen wird postgres einer Sub-UID und Sub-GID zugeordnet, auf die der Hostnutzer und die Nutzergruppe Zugriff haben (wie in den Dateien /etc/subuid und /etc/subgid definiert). Sie müssen die Nutzerzuordnung also nicht verwalten.

(Rootless) Sub-UID- und Sub-GID-Bereiche konfigurieren

  1. Wenn Sie RHEL, CentOS oder Fedora verwenden, gehen Sie so vor:

    1. Installieren Sie das Befehlszeilen-Dienstprogramm iptables mit dem Befehl sudo dnf install -y iptables.
    2. Installieren Sie für alle RHEL-Versionen vor 9 das Paket fuse-overlayfs mit dem Befehl sudo dnf install -y fuse-overlayfs.
  2. Wenn für Ihr Linux-Image keine Sub-UID- und Sub-GID-Bereiche für Ihren nicht privilegierten Nutzer konfiguriert sind, müssen Sie diese Bereiche konfigurieren, um AlloyDB Omni ohne Root-Rechte auszuführen.

  3. Wenn Sie ein Debian-System verwenden, installieren Sie die Binärdateien newuidmap und newgidmap.

    sudo apt-get install -y uidmap
    
  4. Fügen Sie einen subuid-Eintrag für den Rootless-Nutzer hinzu.

    echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" | sudo tee -a /etc/subuid
    

    Ersetzen Sie die folgenden Variablen:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
    • SUB_UID_RANGE_START: Die niedrigere Zahl des Bereichs von Unter-UIDs, die Sie für Ihren Nutzer registrieren möchten.
    • SUB_UID_RANGE_COUNT: Anzahl der untergeordneten UIDs, die Sie für Ihren Nutzer registrieren möchten. Dieser Wert muss mindestens 999 sein.
  5. Fügen Sie einen subgid-Eintrag für den Rootless-Nutzer hinzu.

    echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" | sudo tee -a /etc/subgid
    

    Ersetzen Sie die folgenden Variablen:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
    • SUB_GID_RANGE_START: Niedrigere Zahl des Bereichs von Unter-GIDs, die Sie für Ihren Nutzer registrieren möchten.
    • SUB_GID_RANGE_COUNT: Anzahl der untergeordneten GIDs, die Sie für Ihren Nutzer registrieren möchten. Dieser Wert muss mindestens 999 sein.
  6. Wenn Ihre AlloyDB Omni-Instanz ausgeführt werden soll, während Ihr Nutzer nicht angemeldet ist, führen Sie den folgenden Befehl aus.

    sudo loginctl enable-linger ROOTLESS_USER
    

    Ersetzen Sie die folgende Variable:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
  7. Wenn Sie Docker verwenden, führen Sie den folgenden Befehl als ROOTLESS_USER aus:

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  8. Öffnen Sie eine neue Shell, damit die Änderungen an der Sub-UID und Sub-GID wirksam werden.

Verzeichnis erstellen, in dem AlloyDB Omni Daten speichert

Wenn Sie ein Speichersystem verwenden, das mehr als nur AlloyDB Omni ausführt, können Sie das AlloyDB Omni-Verzeichnis im vorhandenen Dateisystem Ihres Geräts erstellen. Andernfalls können Sie ein neues Dateisystem auf Ihrem dedizierten Gerät erstellen.

Vorhandenes Dateisystem

Docker

sudo mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

sudo mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Ersetzen Sie die folgenden Variablen:

  • DATA_DIR: Der Pfad des Hostverzeichnisses, in dem Ihre Daten gespeichert sind.

Zweckbestimmtes Gerät

  1. Erstellen Sie auf dem Host ein Verzeichnis, in dem das Laufwerk bereitgestellt werden soll.

    sudo mkdir -p MOUNT_POINT
    

    Ersetzen Sie die folgende Variable:

    • MOUNT_POINT: Verzeichnispfad auf oberster Ebene, der Ihre AlloyDB Omni-Instanz enthalten soll.
  2. Erstellen Sie eine GPT-Partitionstabelle mit einer einzelnen Partition auf dem Laufwerk.

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

    Ersetzen Sie die folgende Variable:

    • DEVICE_PATH: Pfad, der dem Laufwerk vom Betriebssystem zugewiesen wurde.
  3. Erstellen Sie ein Dateisystem auf dem Laufwerk. Wir empfehlen, das ext4-Dateisystem für AlloyDB Omni zu verwenden.

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

    Ersetzen Sie die folgenden Variablen:

    • FS_LABEL: Label für das Dateisystem. Die maximale Länge eines ext4-Dateisystemlabels beträgt 16 Zeichen.
    • PARTITION_PATH: Pfad für die Laufwerkspartition, die zum Speichern der Containerdaten verwendet wird.
  4. Stellen Sie das Gerät bereit und erstellen Sie einen Eintrag in der Datei /etc/fstab, damit das Laufwerk nach einem Neustart bereitgestellt wird.

    echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | sudo tee -a /etc/fstab
    sudo systemctl daemon-reload
    sudo mount MOUNT_POINT

    Ersetzen Sie die folgenden Variablen:

    • FS_LABEL: Label für das Dateisystem. Die maximale Länge eines ext4-Dateisystemlabels beträgt 16 Zeichen.
    • MOUNT_POINT: Verzeichnispfad auf oberster Ebene, der Ihre AlloyDB Omni-Instanz enthalten soll.
  5. Erstellen Sie ein Datenverzeichnis im containerspezifischen Dateisystem.

    Rootful

    sudo mkdir -p DATA_DIR
    

    Rootless

    sudo mkdir -p DATA_DIR
    sudo chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR

    Ersetzen Sie die folgenden Variablen:

    • DATA_DIR: Der Pfad des Hostverzeichnisses, in dem Ihre Daten gespeichert sind.
    • ROOTLESS_USER: Wenn Sie eine Umgebung ohne Root-Nutzer verwenden, ist dies der Nutzer, der der Inhaber des Verzeichnisses sein soll.
    • ROOTLESS_GROUP: Wenn Sie eine Umgebung ohne Root-Zugriff verwenden, ist dies die Gruppe, die Eigentümer des Verzeichnisses sein soll.

Container erstellen

Docker

sudo 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

sudo 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

Ersetzen Sie die folgenden Variablen:

  • CONTAINER_NAME: Der Name, den Sie für das Verzeichnis in Verzeichnis erstellen, in dem AlloyDB Omni Daten speichert verwendet haben.
  • NEW_PASSWORD: Das Passwort, das dem postgres-Nutzer des neuen Containers nach der Erstellung zugewiesen wurde.
  • DATA_DIR: Der Pfad des Hostverzeichnisses, in dem Ihre Daten gespeichert sind.
  • HOST_PORT: Der TCP-Port auf dem Hostcomputer, auf dem der Container seinen eigenen Port 5432 veröffentlichen soll. Wenn Sie auch den PostgreSQL-Standardport auf dem Hostcomputer verwenden möchten, geben Sie 5432 an.
  • IMAGE_TAG: Verwenden Sie 16.3.0 für das neueste Debian-Image oder 16.3.0-ubi für das neueste UBI-Image.

Mit Instanz verbinden

Je nach Umgebung können Sie entweder lokal oder remote eine Verbindung zu Ihrer AlloyDB Omni-Instanz herstellen.

Lokal verbinden

Docker

sudo docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

sudo podman exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Ersetzen Sie die folgende Variable:

Remote-Verbindung herstellen

psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN

Ersetzen Sie die folgenden Variablen:

  • HOST_PORT: Der TCP-Port, den Sie unter Container erstellen verwendet haben.
  • IP_ADDRESS_OR_FQDN: IP-Adresse oder voll qualifizierter Domainname des Hosts, auf dem AlloyDB Omni ausgeführt wird.

Nachdem Sie diesen Befehl ausgeführt haben, werden Sie nach dem Passwort des postgres-Kontos gefragt. Geben Sie das Passwort ein, das Sie unter Container erstellen verwendet haben.

Nächste Schritte