Personalizzare l'installazione di AlloyDB Omni

Seleziona una versione della documentazione:

Questa pagina descrive come personalizzare l'installazione di AlloyDB Omni, di cui viene eseguito il deployment tramite un'immagine container che supporta diverse forme di personalizzazione. Questa pagina mostra alcune personalizzazioni comuni.

Abilitare e disabilitare la telemetria di AlloyDB Omni

La telemetria AlloyDB Omni implementa un agente client leggero che viene eseguito solo nell'immagine container AlloyDB Omni. Questo agente raccoglie periodicamente un insieme di metriche di base pseudonimizzate e le invia a un endpoint gestito da Google.

Poiché AlloyDB Omni è un prodotto scaricabile offerto senza costi, questa telemetria fornisce a Google metriche essenziali sulle informazioni che non consentono l'identificazione personale (non-PII) relative agli ambienti di adozione e deployment generici delle istanze in esecuzione. Questi dati aiutano a definire lo sviluppo del prodotto e l'assegnazione delle priorità di assistenza.

Le metriche raccolte includono:

  • ID installazione univoco (UUID pseudonimizzato)
  • Versione AlloyDB Omni e versione principale di PostgreSQL
  • Informazioni sul sistema host, come numero di CPU, RAM e uptime

Disattiva i report sulla telemetria

Per impedire l'esecuzione dell'agente di telemetria e la generazione di report sulle metriche di utilizzo, imposta il parametro di configurazione PostgreSQL omni_enable_telemetry su off. Puoi disattivare l'agente di telemetria impostando il flag di telemetria nel file postgresql.conf o impostando il flag in fase di runtime utilizzando ALTER SYSTEM.

Imposta il flag di telemetria nel file postgresql.conf

Per modificare il file di configurazione PostgreSQL nella directory dei dati persistenti del container, segui questi passaggi:

  1. Individua il file postgresql.conf nella directory di dati del database ($PGDATA).
  2. Disattiva la telemetria di AlloyDB Omni.

    omni_enable_telemetry = off
    
  3. Per applicare la modifica, riavvia il container AlloyDB Omni. L'agente di telemetria interrompe la raccolta e l'invio delle metriche di utilizzo a Google.

Imposta il flag di telemetria in fase di runtime utilizzando ALTER SYSTEM

Per impostare il flag di telemetria e rendere persistente la modifica dopo i riavvii, segui questi passaggi:

  1. Connettiti all'istanza AlloyDB Omni utilizzando psql:

    psql -h HOST -U USER -d DATABASE
    

    Effettua le seguenti sostituzioni:

    • HOST: il nome host o l'indirizzo IP della tua istanza AlloyDB Omni, ad esempio 127.0.0.1.
    • USER: l'utente del database a cui vuoi connetterti, ad esempio postgres.
    • DATABASE: il database a cui vuoi connetterti, ad esempio postgres.
  2. Esegui questo comando:

    ALTER SYSTEM SET omni_enable_telemetry = 'off';
    
  3. Ricarica la configurazione o riavvia l'istanza. In alcune configurazioni dei container, potrebbe essere necessario riavviare l'istanza per assicurarsi che la modifica venga rilevata completamente dal worker in background.

    SELECT pg_reload_conf();
    

    L'agente di telemetria interrompe la raccolta e l'invio delle metriche di utilizzo a Google.

Attiva i report sulla telemetria

Se in precedenza hai disattivato la telemetria di AlloyDB Omni, puoi riattivarla impostando il flag omni_enable_telemetry su on. Puoi attivare l'agente di telemetria impostando il flag nel file postgresql.conf o impostando il flag in fase di runtime utilizzando ALTER SYSTEM.

Imposta il flag di telemetria nel file postgresql.conf

  1. Individua il file postgresql.conf nella directory dei dati del database ($PGDATA).
  2. Imposta la seguente riga:

    omni_enable_telemetry = on
    
  3. Per applicare la modifica, riavvia il container AlloyDB Omni.

Imposta il flag di telemetria in fase di runtime utilizzando ALTER SYSTEM

  1. Connettiti all'istanza AlloyDB Omni utilizzando psql.
  2. Esegui questo comando:

    ALTER SYSTEM SET omni_enable_telemetry = 'on';
    
  3. Per applicare la modifica, riavvia il container AlloyDB Omni.

    docker restart CONTAINER_NAME
    

    Esegui la seguente sostituzione:

    • CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempio my-omni-1.

Controlla lo stato della telemetria AlloyDB Omni

Puoi controllare lo stato dell'agente di telemetria AlloyDB Omni, incluso se è abilitato o in esecuzione. Puoi anche controllare l'attività dell'agente di telemetria.

Controlla se l'agente di telemetria è abilitato o disabilitato

Per controllare lo stato dell'impostazione della telemetria, segui questi passaggi:

  1. Connettiti all'istanza.
  2. Esegui questo comando:
SHOW omni_enable_telemetry;

L'output restituisce on o off, a seconda che tu abbia disattivato o attivato la telemetria AlloyDB Omni.

Controlla se l'agente di telemetria è in esecuzione

Per verificare se l'agente di telemetria è in esecuzione, esegui questo comando nell'host container:

docker top CONTAINER_NAME

Sostituisci quanto segue:

  • CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempio my-omni-1.

Se la telemetria è abilitata e in esecuzione, l'output contiene una riga con il testo postgres: omni telemetry worker.

Controllare l'attività dell'agente di telemetria

Per controllare l'attività dell'agente di telemetria, esegui questo comando nell'host del container:

docker logs CONTAINER_NAME 2>&1 | grep telemetry

Esegui la seguente sostituzione:

  • CONTAINER_NAME: il nome del tuo container AlloyDB Omni, ad esempio my-omni-1.

Se l'agente di telemetria è in esecuzione, i log contengono messaggi simili ai seguenti:

LOG:  [telemetry_agent_worker.cc:143]  Started telemetry worker
LOG:  [telemetry_agent_worker.cc:161]  Running telemetry reporting agent
telemetry_agent: Uploading telemetry data to https://cloud.google.com/log.

Montare una directory di dati esterni

Per impostazione predefinita, il comando in Guida rapida: installa AlloyDB Omni archivia i dati del database in un'area gestita da Docker o Podman. Questo è comodo per iniziare, ma rende difficile trovare e utilizzare la directory di dati. In alternativa, puoi configurare un montaggio di associazione per mappare la directory di dati a una posizione nota sul disco.

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

Sostituisci le seguenti variabili:

  • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
  • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
  • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
  • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
  • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.

Montaggio di una directory di dati esterna quando si utilizza SELinux

Se SELinux è abilitato e la modalità è impostata su enforcing, il tentativo di montare una directory di dati esterna genera errori di autorizzazione. Per montare una directory di dati esterna quando utilizzi SELinux, completa le seguenti istruzioni:

Docker

  1. Se il container AlloyDB Omni è in esecuzione, arrestalo.
    docker stop CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  2. Imposta la modalità di SELinux su permissive. In questo modo puoi eseguire il container e identificare i dettagli relativi all'accesso richiesto per montare una directory di dati esterna.
    setenforce 0
  3. Esegui il contenitore con una directory di dati esterna.
    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
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.
  4. Se non è già installato, installa policycoreutils-python-utils tramite il gestore di pacchetti. Questo pacchetto fornisce le utilità necessarie per gestire le policy SELinux.
  5. Per la directory dei dati esterni, imposta il contesto SELinux appropriato.
    semanage fcontext -a -t container_file_t "DATA_DIR"
    restorecon -Rv "DATA_DIR"
    Sostituisci la seguente variabile:
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
  6. Utilizza ausearch per ottenere informazioni sui requisiti di autorizzazione aggiuntivi.
    ausearch -c 'postgres' --raw > postgres.avc
  7. Crea un profilo di sicurezza SELinux in base al tuo container AlloyDB Omni e alle informazioni sui permessi ausearch.
    docker inspect CONTAINER_NAME | udica --append-rules postgres.avc CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  8. Carica il modulo SELinux.
    semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  9. Attiva mmap.
    setsebool -P domain_can_mmap_files 1
  10. Arresta e rimuovi il container AlloyDB Omni.
    docker stop CONTAINER_NAME && docker rm CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  11. Imposta la modalità di SELinux su enforcing.
    setenforce 1
  12. Ricrea il container AlloyDB Omni.
    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    google/alloydbomni:IMAGE_TAG
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.

Docker

  1. Se il container AlloyDB Omni è in esecuzione, interrompilo.
    docker stop CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  2. Imposta la modalità di SELinux su permissive. In questo modo puoi eseguire il container e identificare i dettagli relativi all'accesso richiesto per montare una directory di dati esterna.
    sudo setenforce 0
  3. Esegui il contenitore con una directory di dati esterna.
    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
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.
  4. Se non è già installato, installa policycoreutils-python-utils tramite il gestore di pacchetti. Questo pacchetto fornisce le utilità necessarie per gestire le policy SELinux.
  5. Se la directory dei dati esterni non si trova nella directory home, imposta il contesto SELinux appropriato.
    sudo semanage fcontext -a -t container_file_t "DATA_DIR"
    sudo restorecon -Rv "DATA_DIR"
    Sostituisci la seguente variabile:
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
  6. Utilizza ausearch per ottenere informazioni sui requisiti di autorizzazione aggiuntivi.
    sudo ausearch -c 'postgres' --raw > postgres.avc
  7. Crea un profilo di sicurezza SELinux in base alle informazioni sul container AlloyDB Omni e sulle autorizzazioni ausearch.
    docker inspect CONTAINER_NAME | sudo udica --append-rules postgres.avc CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  8. Carica il modulo SELinux.
    sudo semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  9. Attiva mmap.
    sudo setsebool -P domain_can_mmap_files 1
  10. Arresta e rimuovi il container AlloyDB Omni.
    docker stop CONTAINER_NAME && docker rm CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  11. Imposta la modalità di SELinux su enforcing.
    sudo setenforce 1
  12. Ricrea il container AlloyDB Omni.
    docker run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    google/alloydbomni:IMAGE_TAG
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.

Podman

  1. Se il container AlloyDB Omni è in esecuzione, interrompilo.
    podman stop CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  2. Imposta la modalità di SELinux su permissive. In questo modo puoi eseguire il container e identificare i dettagli relativi all'accesso richiesto per montare una directory di dati esterna.
    setenforce 0
  3. Esegui il container con una directory di dati esterna.
    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
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.
  4. Se non è già installato, installa policycoreutils-python-utils tramite il gestore di pacchetti. Questo pacchetto fornisce le utilità necessarie per gestire le policy SELinux.
  5. Per la directory dei dati esterni, imposta il contesto SELinux appropriato.
    semanage fcontext -a -t container_file_t "DATA_DIR"
    restorecon -Rv "DATA_DIR"
    Sostituisci la seguente variabile:
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
  6. Utilizza ausearch per ottenere informazioni sui requisiti di autorizzazione aggiuntivi.
    ausearch -c 'postgres' --raw > postgres.avc
  7. Crea un profilo di sicurezza SELinux in base al tuo container AlloyDB Omni e alle informazioni sui permessi ausearch.
    podman inspect CONTAINER_NAME | udica --append-rules postgres.avc CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  8. Carica il modulo SELinux.
    semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  9. Attiva mmap.
    setsebool -P domain_can_mmap_files 1
  10. Arresta e rimuovi il container AlloyDB Omni.
    podman stop CONTAINER_NAME && docker rm CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  11. Imposta la modalità di SELinux su enforcing.
    setenforce 1
  12. Ricrea il container AlloyDB Omni.
    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    docker.io/google/alloydbomni:IMAGE_TAG
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.

Podman

  1. Se il container AlloyDB Omni è in esecuzione, interrompilo.
    podman stop CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  2. Imposta la modalità di SELinux su permissive. In questo modo puoi eseguire il container e identificare i dettagli relativi all'accesso richiesto per montare una directory di dati esterna.
    sudo setenforce 0
  3. Esegui il contenitore con una directory di dati esterna.
    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
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi9 per l'immagine UBI più recente.
  4. Se non è già installato, installa policycoreutils-python-utils tramite il gestore di pacchetti. Questo pacchetto fornisce le utilità necessarie per gestire le policy SELinux.
  5. Per la directory dei dati esterni, imposta il contesto SELinux appropriato.
    sudo semanage fcontext -a -t container_file_t "DATA_DIR"
    sudo restorecon -Rv "DATA_DIR"
    Sostituisci la seguente variabile:
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
  6. Utilizza ausearch per ottenere informazioni sui requisiti di autorizzazione aggiuntivi.
    sudo ausearch -c 'postgres' --raw > postgres.avc
  7. Crea un profilo di sicurezza SELinux in base al tuo container AlloyDB Omni e alle informazioni sui permessi ausearch.
    podman inspect CONTAINER_NAME | sudo udica --append-rules postgres.avc CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  8. Carica il modulo SELinux.
    sudo semodule -i CONTAINER_NAME.cil /usr/share/udica/templates/{base_container.cil,net_container.cil}
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  9. Attiva mmap.
    sudo setsebool -P domain_can_mmap_files 1
  10. Arresta e rimuovi il container AlloyDB Omni.
    podman stop CONTAINER_NAME && docker rm CONTAINER_NAME
    Sostituisci la seguente variabile:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  11. Imposta la modalità di SELinux su enforcing.
    sudo setenforce 1
  12. Ricrea il container AlloyDB Omni.
    podman run -d --name CONTAINER_NAME \
    -e POSTGRES_PASSWORD=NEW_PASSWORD \
    -v DATA_DIR:/var/lib/postgresql/data \
    -p HOST_PORT:5432 \
    --restart=always \
    --security-opt label=type:CONTAINER_NAME.process \
    docker.io/google/alloydbomni:IMAGE_TAG
    
    Sostituisci le seguenti variabili:
    • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio: my-omni-1.
    • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
    • DATA_DIR: il percorso della directory host in cui sono archiviati i dati.
    • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
    • IMAGE_TAG: utilizza 16.9.0 per l'ultima immagine Debian o 16.9.0-ubi9 per l'ultima immagine UBI.

Abilita ulimit

I parametri ulimit specificano i limiti di processo che il contenitore Docker o Podman può utilizzare. Per prestazioni ottimali, ti consigliamo di impostare i seguenti ulimit:

  • nice=-20:-20: AlloyDB Omni regola le priorità dei processi per consentire l'esecuzione dei processi PostgreSQL critici con una priorità più alta. La priorità più alta assegna ai processi un'allocazione maggiore delle CPU disponibili. Per modificare le priorità dei processi, specifica --ulimit=nice=-20:-20, che rimuove le limitazioni per il container AlloyDB Omni.

  • memlock=-1:-1: AlloyDB Omni esegue la gestione automatica della memoria. L'impostazione --ulimit=memlock=-1:-1 consente al database di controllare meglio il modo in cui le pagine di memoria vengono scambiate, il che può comportare un rendimento migliore.

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--ulimit=nice=-20:-20 --ulimit=memlock=-1:-1 \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sostituisci le seguenti variabili:

  • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
  • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
  • IMAGE_TAG: utilizza AlloyDB Omni per l'immagine Debian più recente o AlloyDB Omni-ubi per l'immagine UBI più recente.

Specifica un driver di logging

Per impostazione predefinita, Docker e Podman non eseguono rotazioni dei log. Questo può consumare molto spazio su disco e, alla fine, portare all'esaurimento dello spazio su disco. Per utilizzare un driver di logging diverso, puoi specificare il campo --log-driver. Ad esempio, per accedere a journald:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--log-driver=journald \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sostituisci le seguenti variabili:

  • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
  • HOST_PORT: porta TCP sulla macchina host su cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
  • IMAGE_TAG: utilizza 16.9.0 per l'ultima immagine Debian o 16.9.0-ubi per l'ultima immagine UBI.

Per saperne di più sui driver di logging, consulta la documentazione di Docker Configura i driver di logging e la documentazione di Podman podman-run.

Monta un volume di memoria condivisa

Se prevedi di utilizzare il motore colonnare di AlloyDB con AlloyDB Omni, ti consigliamo di rendere disponibile la memoria condivisa per il container AlloyDB Omni. Il metodo per farlo varia a seconda del sistema operativo host, come mostrato negli esempi seguenti.

Linux

Per rendere disponibile la memoria condivisa per il container, monta /dev/shm:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v /dev/shm:/dev/shm \
-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 /dev/shm:/dev/shm \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sostituisci le seguenti variabili:

  • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  • NEW_PASSWORD: password assegnata all'utente postgres del nuovo container dopo la sua creazione.
  • HOST_PORT: porta TCP sulla macchina host su cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
  • IMAGE_TAG: utilizza 16.9.0 per l'ultima immagine Debian o 16.9.0-ubi per l'ultima immagine UBI.

macOS

Per rendere disponibile la memoria condivisa per il container, includi il flag --shm-size:

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
--shm-size=SHARED_MEMORY_SIZE \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:IMAGE_TAG

Sostituisci le seguenti variabili:

  • CONTAINER_NAME: il nome che hai utilizzato per il container. Ad esempio, my-omni-1.
  • NEW_PASSWORD: password assegnata all'utente postgres del nuovo contenitore dopo la sua creazione.
  • SHARED_MEMORY_SIZE: le dimensioni da impostare per /dev/shm sul container, nel formato descritto in Esecuzione dei container. Ad esempio, per specificare un gigabyte, utilizza il valore 1g.
  • HOST_PORT: la porta TCP sulla macchina host a cui il container deve pubblicare la propria porta 5432. Per utilizzare la porta predefinita di PostgreSQL anche sulla macchina host, specifica 5432.
  • IMAGE_TAG: utilizza 16.9.0 per l'immagine Debian più recente o 16.9.0-ubi per l'immagine UBI più recente.

Ti consigliamo di impostare la dimensione della memoria condivisa su un numero di megabyte pari ad almeno 250 volte il valore del flag google_job_scheduler.max_parallel_workers_per_job del tuo database. Per saperne di più sul motore colonnare, consulta Configura il motore colonnare in AlloyDB Omni.

Ad esempio, se il flag di database google_job_scheduler.max_parallel_workers_per_job è impostato sul valore predefinito 2, valuta la possibilità di aggiungere un flag --shm-size=500m o superiore all'avvio del server di database.

Per ulteriori informazioni sul flag --shm-size, consulta Esecuzione dei container.

Attiva le estensioni

L'elenco delle estensioni disponibili in AlloyDB Omni è disponibile in Estensioni del database supportate. Sebbene PostGIS e Orafce non siano inclusi in AlloyDB Omni, possono essere installati seguendo le istruzioni:

Le estensioni installate vengono abilitate utilizzando le istruzioni CREATE EXTENSION standard di PostgreSQL, come descritto in Abilita un'estensione.