AlloyDB Omni auf einer VM installieren

Auf dieser Seite wird beschrieben, wie Sie eine einzelne Instanz von AlloyDB Omni auf einer beliebigen Linux-VM installieren, die Container-Laufzeiten unterstützt. Wenn Sie eine Multi-Instanz-Konfiguration von AlloyDB Omni benötigen, lesen Sie den Hilfeartikel Hochverfügbarkeit und Datenausfallsicherheit.

Hinweise

Führen Sie die folgenden Schritte aus, bevor Sie AlloyDB Omni auf Ihrer VM installieren:

  1. Lesen Sie den Hilfeartikel AlloyDB Omni-Installation auf einer VM planen.
  2. Lesen Sie den Artikel AlloyDB Omni mit oder ohne Root ausführen und führen Sie je nach ausgewählter Umgebung alle erforderlichen Schritte für die Ausführung mit oder ohne Root aus.

AlloyDB Omni mit oder ohne Root ausführen

Sie können AlloyDB Omni entweder mit Docker oder Podman ausführen. Beide Container-Engines können als Root- oder nicht als Root-Container ausgeführt werden. „Rootful“ bezieht sich auf die Ausführung von Docker oder Podman als Root-Nutzer, während „rootless“ die Ausführung als Nicht-Root-Nutzer oder Nutzer ohne Berechtigungen bedeutet.

Der ausgewählte Modus hängt von den Anforderungen und Einstellungen für die Umgebung ab. Wenn Einfachheit für Sie wichtig ist, ist rootful die richtige Wahl. Wenn Sie die Sicherheit eines nicht privilegierten Nutzers benötigen, ist die rootlose Ausführung möglicherweise die richtige Wahl.

Wenn Sie eine Umgebung mit Root-Berechtigungen ausführen möchten, 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 also zwei Möglichkeiten, die Nutzerzuordnung zu verwalten:

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

In Umgebungen ohne Root wird postgres einer untergeordneten UID und einer untergeordneten GID zugeordnet, auf die der Hostnutzer und die Nutzergruppe zugreifen können (wie in den Dateien /etc/subuid und /etc/subgid definiert). Sie müssen also die Nutzerzuordnung nicht verwalten.

(Ohne Root) Bereiche für untergeordnete UIDs und GIDs konfigurieren

Wenn für Ihren nicht privilegierten Nutzer in Ihrem Linux-Image noch keine Unter-UID- und Unter-GID-Bereiche konfiguriert sind, müssen Sie sie so konfigurieren, dass AlloyDB Omni ohne Root ausgeführt wird.

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

    apt-get install -y uidmap
    
  2. Fügen Sie einen subuid-Eintrag für den Nutzer ohne Root-Berechtigungen hinzu.

    echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid
    

    Ersetzen Sie die folgenden Variablen:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
    • SUB_UID_RANGE_START: Die untere Zahl des Bereichs der 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. Der Wert muss mindestens 999 sein.
  3. Fügen Sie einen subgid-Eintrag für den Nutzer ohne Root-Berechtigungen hinzu.

    echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid
    

    Ersetzen Sie die folgenden Variablen:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
    • SUB_GID_RANGE_START: Die untere Zahl des Bereichs der Unter-GIDs, die Sie für Ihren Nutzer registrieren möchten.
    • SUB_GID_RANGE_COUNT: Anzahl der untergeordneten GIDs, die Sie für den Nutzer registrieren möchten. Der Wert muss mindestens 999 sein.
  4. Wenn Sie Docker verwenden, führen Sie den folgenden Befehl als ROOTLESS_USER aus.

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  5. Wenn Sie Podman verwenden, lassen Sie Ihre Nutzer Dienste ausführen, auch wenn sie nicht angemeldet sind.

    loginctl enable-linger ROOTLESS_USER
    

    Ersetzen Sie die folgende Variable:

    • ROOTLESS_USER: Nutzer, als der Sie AlloyDB Omni ausführen möchten.
  6. Öffnen Sie eine neue Shell, damit die Änderungen an der untergeordneten UID und der untergeordneten GID wirksam werden.

Verzeichnis erstellen, in dem AlloyDB Omni Daten speichert

Wenn Sie ein Speichersystem verwenden, das nicht 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

mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Ersetzen Sie die folgenden Variablen:

  • DATA_DIR: Pfad zum Hostverzeichnis, in dem Ihre Daten gespeichert sind.

Zweckbestimmtes Gerät

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

    mkdir -p MOUNT_POINT
    

    Ersetzen Sie die folgende Variable:

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

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

    Ersetzen Sie die folgende Variable:

    • DEVICE_PATH: Pfad, der dem Laufwerk vom Betriebssystem zugewiesen wird.
  3. Erstellen Sie ein Dateisystem auf dem Laufwerk. Wir empfehlen die Verwendung des ext4-Dateisystems für AlloyDB Omni.

    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 zur Laufwerkpartition, auf der die Daten des Containers gespeichert werden.
  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" | tee -a /etc/fstab
    systemctl daemon-reload
    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: Pfad zum Stammverzeichnis, der Ihre AlloyDB Omni-Instanz enthalten sollte.
  5. Erstellen Sie ein Datenverzeichnis im containerspezifischen Dateisystem.

    Rootful

    mkdir -p DATA_DIR
    

    Rootless

    mkdir -p DATA_DIR
    chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR

    Ersetzen Sie die folgenden Variablen:

    • DATA_DIR: Pfad zum Hostverzeichnis, in dem Ihre Daten gespeichert sind.
    • ROOTLESS_USER: Wenn Sie eine Umgebung ohne Root verwenden, ist dies der Nutzer, dem das Verzeichnis gehören soll.
    • ROOTLESS_GROUP: Wenn Sie eine Umgebung ohne Root verwenden, ist dies die Gruppe, der das Verzeichnis zugewiesen werden soll.

Container erstellen

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

Ersetzen Sie die folgenden Variablen:

  • CONTAINER_NAME: Der Name, den Sie für das Verzeichnis unter Verzeichnis erstellen, in dem AlloyDB Omni Daten speichert verwendet haben.
  • NEW_PASSWORD: Passwort, das dem postgres-Nutzer des neuen Containers nach der Erstellung zugewiesen wurde.
  • DATA_DIR: Pfad zum Hostverzeichnis, in dem Ihre Daten gespeichert sind.
  • HOST_PORT: TCP-Port auf dem Hostcomputer, unter 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.

Mit Instanz verbinden

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

Lokale Verbindungen

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

Ersetzen Sie die folgende Variable:

Remote-Verbindung

psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN

Ersetzen Sie die folgenden Variablen:

  • HOST_PORT: TCP-Port, den Sie unter Container erstellen verwendet haben.
  • IP_ADDRESS_OR_FQDN: IP-Adresse oder vollständig 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