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:
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_NAMESostituisci quanto segue:
READ_POOL_INSTANCE_NAME: un nome per questa risorsa, ad esempioread-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.
Applica la specifica
DBInstance.alloydbctlalloydbctl 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 manifestDBInstancecreato 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 specificaDBInstance.DEPLOYMENT_SPECIFICATION_PATH: il percorso della specifica di deployment creata in Installare i componenti di AlloyDB Omni.DBINSTANCE_SPECIFICATION: il percorso del file manifestDBInstancecreato 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 yamlSostituisci 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 postgresSostituisci 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.
Apri il file manifest
DBInstancee modifica il valorenodeCountin modo che rifletta il numero di nodi selezionato.Applica il manifest aggiornato utilizzando il metodo di deployment che preferisci, il comando
alloydbctl applyo 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_NAMESostituisci 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.