Crea un'istanza del pool di lettura replicata in modo asincrono utilizzando l'orchestratore RPM

Seleziona una versione della documentazione:

Per aumentare la velocità effettiva di lettura e la disponibilità del cluster di database, puoi creare un'istanza del pool di lettura asincrona. Un'istanza del pool di lettura fornisce un clone di sola lettura dell'istanza del database, garantendo l'accesso ai dati anche se l'istanza del database non è disponibile.

Puoi definire la configurazione dell'istanza del pool di lettura nel file manifest dell'istanza del database. Ogni istanza del pool di lettura richiede la creazione di un file manifest univoco. Puoi eseguire il deployment di più istanze del pool di lettura, con un massimo di 20 nodi del pool di lettura in totale per cluster di database.

Ogni istanza del pool di lettura occupa la stessa quantità di spazio di archiviazione dell'istanza che replica.

Creare un'istanza del pool di lettura con replica asincrona

Per creare un'istanza del pool di lettura con replica asincrona di AlloyDB Omni, completa i seguenti passaggi:

  1. Crea il manifest dell'istanza del database per definire il tipo di istanza del pool di lettura:

    DBInstance:
      metadata:
        name: READ_POOL_INSTANCE_NAME
      spec:
        instanceType: ReadPool
        nodeCount: READ_POOL_NODE_COUNT
        readPoolPort: READ_POOL_PORT
        dbcParent:
          name: DB_CLUSTER_NAME
    

    Sostituisci quanto segue:

    • READ_POOL_INSTANCE_NAME: un nome per questa risorsa, ad esempio read-pool-instance-1.

    • DB_CLUSTER_NAME: il nome del cluster di database a cui appartiene l'istanza.

    • READ_POOL_NODE_COUNT: (facoltativo) il numero di nodi in un'istanza del pool di lettura. Questo determina la capacità di calcolo complessiva dell'istanza. Puoi avere un massimo di 20 nodi del pool di lettura in totale per cluster di database.

    • READ_POOL_PORT: (facoltativo) la porta del bilanciatore del carico (VIP) per instradare il traffico di lettura a questa istanza del pool di lettura. Il valore predefinito è 5434.

  2. Applica la specifica DBInstance.

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPECIFICATION_PATH" -r "DBINSTANCE_SPECIFICATION"

    Sostituisci le seguenti variabili:

    • DEPLOYMENT_SPECIFICATION_PATH: il percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: il percorso del file manifest DBInstance creato nel passaggio precedente.

    Ansible

    ansible-playbook DBINSTANCE_PLAYBOOK -i "DEPLOYMENT_SPECIFICATION_PATH" \
          -e resource_spec="DBINSTANCE_SPECIFICATION"

    Sostituisci le seguenti variabili:

    • DBINSTANCE_PLAYBOOK: il percorso del playbook creato per la specifica DBInstance.

    • DEPLOYMENT_SPECIFICATION_PATH: il percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.

    • DBINSTANCE_SPECIFICATION: il percorso del file manifest DBInstance creato nel passaggio precedente.

Verificare lo stato dell'istanza

Per verificare la disponibilità dell'istanza del pool di lettura, recupera lo stato della risorsa DBInstance:

alloydbctl

alloydbctl get -d "DEPLOYMENT_SPECIFICATION_PATH" -t DBInstance -n "READ_POOL_INSTANCE_NAME" -o yaml

Sostituisci le seguenti variabili:

  • DEPLOYMENT_SPECIFICATION_PATH: il percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: il nome dell'istanza del pool di lettura specificato nel manifest.

Ansible

Esegui il playbook google.alloydbomni_orchestrator.status. Per ulteriori informazioni, consulta Recuperare lo stato del cluster.

ansible-playbook STATUS_PLAYBOOK_PATH -i "DEPLOYMENT_SPECIFICATION_PATH" \
      -e resource_type="DBInstance" -e resource_name="READ_POOL_INSTANCE_NAME"

Sostituisci le seguenti variabili:

  • STATUS_PLAYBOOK_PATH: il percorso del playbook creato per recuperare lo stato del cluster.

  • DEPLOYMENT_SPECIFICATION_PATH: il percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.

  • READ_POOL_INSTANCE_NAME: il nome dell'istanza del pool di lettura specificato nel manifest.

Controlla la sezione .status.conditions della risposta per quanto segue:

  • Se lo stato della condizione Available è true, indica che l'istanza del pool di lettura può gestire le query, ma potrebbe non replicare i dati dall'istanza del database.
  • Se lo stato della condizione Streaming è true, indica che l'istanza del pool di lettura è connessa all'istanza del database e sta eseguendo attivamente lo streaming delle modifiche.

Quando l'istanza del database non è raggiungibile, l'istanza del pool di lettura continua a gestire le query. In questo caso, lo stato di disponibilità sarà true, mentre lo stato di streaming sarà false.

Dopo aver configurato l'istanza del pool di lettura, tutti gli inserimenti, gli aggiornamenti e le eliminazioni delle righe nell'istanza del database principale diventano leggibili nell'istanza del pool di lettura.

Connettersi all'istanza del pool di lettura

Una volta che l'istanza del pool di lettura diventa Available, il bilanciatore del carico configura automaticamente un frontend di sola lettura dedicato che instrada il traffico ai nodi del pool di lettura.

Per visualizzare l'endpoint di connessione, controlla status.endpoints nell'output di stato DBInstance. L'endpoint di sola lettura, ad esempio VIP_IP:5434, distribuisce le query di sola lettura in entrata tra tutti i nodi integri del pool di lettura.

Per connetterti all'istanza del pool di lettura, utilizza lo strumento client psql con l'indirizzo IP e la porta dell'endpoint:

psql -h VIP_IP -p READ_POOL_PORT -U postgres

Sostituisci quanto segue:

  • VIP_IP: l'indirizzo IP dell'endpoint di sola lettura.
  • READ_POOL_PORT: la porta dell'endpoint di sola lettura.

Se tenti di eseguire operazioni di scrittura su questo endpoint, le operazioni non riescono immediatamente con un errore che indica che non puoi eseguire inserimenti in una transazione di sola lettura.

Gestire l'istanza del pool di lettura

L'orchestratore RPM supporta la scalabilità dinamica e l'eliminazione delle istanze del pool di lettura senza tempi di inattività del cluster.

Scalare un'istanza del pool di lettura

Per aggiungere o rimuovere nodi da un pool di lettura esistente, aggiorna il campo nodeCount nel file manifest DBInstance.

  1. Apri il file manifest DBInstance e modifica il valore nodeCount in modo che rifletta il numero di nodi selezionato.

  2. Applica il manifest aggiornato utilizzando il metodo di deployment che preferisci, il comando alloydbctl apply o il playbook Ansible.

L'orchestratore RPM esegue automaticamente il provisioning o la rimozione dei nodi delle repliche di lettura e il bilanciatore del carico si aggiorna dinamicamente per instradare il traffico ai nodi disponibili nel pool.

Eliminare un'istanza del pool di lettura

Per eliminare un'istanza del pool di lettura, utilizza il comando alloydbctl delete:

alloydbctl delete -t DBInstance -n READ_POOL_INSTANCE_NAME

Sostituisci READ_POOL_INSTANCE_NAME con il nome dell'istanza del pool di lettura che vuoi eliminare.

Quando elimini un'istanza del pool di lettura, l'orchestratore arresta il servizio di replica di lettura ed esegue la pulizia dei nodi. Il bilanciatore del carico rimuove automaticamente il routing senza causare deadlock di promozione o influire sul traffico verso le istanze principali o di standby.