Gestire le connessioni ai database con gli endpoint di scrittura

Per disaccoppiare le tue applicazioni dall'indirizzo IP o dall'URI (Uniform Resource Identifier) specifico dell'istanza principale di AlloyDB per PostgreSQL durante i cambi, i failover tra regioni, i ripristini dei backup o le migrazioni, puoi configurare un endpoint di scrittura.

Un endpoint è una risorsa AlloyDB che fornisce un nome DNS (Domain Name System) stabile che le tue applicazioni possono utilizzare per connettersi a un'istanza AlloyDB. Questa astrazione semplifica la gestione delle connessioni durante gli eventi operativi, ad esempio ripristino di emergenza, i ripristini dei backup o le migrazioni, perché puoi reindirizzare il nome DNS dell'endpoint a un'istanza diversa senza modificare la configurazione dell'applicazione.

Gli endpoint AlloyDB supportano il tipo WRITE_ENDPOINT. Un endpoint di scrittura indirizza il traffico a una singola istanza principale di AlloyDB e gestisce il traffico di lettura e scrittura.

Sebbene il nome DNS funzioni come una risorsa globale, la risorsa endpoint stessa è a livello di regione. Tuttavia, ogni endpoint può collegarsi alle istanze a livello globale e il suo nome DNS viene risolto da qualsiasi località.

Vantaggi dell'utilizzo degli endpoint

L'utilizzo di un endpoint di scrittura offre i seguenti vantaggi:

  • Disaster ripristino di emergenza: se esegui un switchover o un failover tra regioni in un cluster secondario, AlloyDB aggiorna automaticamente l'endpoint in modo che punti alla nuova istanza principale. Le tue applicazioni possono quindi riconnettersi utilizzando lo stesso nome DNS dell'endpoint, riducendo l'obiettivo del tempo di ripristino (RTO).
  • Recupero dei backup semplificato: quando ripristini un'istanza da un backup, AlloyDB crea una nuova istanza con un nuovo indirizzo IP. Puoi aggiornare l'endpoint in modo che punti alla nuova istanza ripristinata. Questa funzionalità consente alle applicazioni di riprendere il funzionamento senza modifiche alla configurazione.
  • Migrazioni più semplici: durante le migrazioni, puoi cambiare un endpoint da un database di origine a un'istanza AlloyDB con un'interruzione minima dell'applicazione.

Limitazioni

  • Gli endpoint supportano solo le istanze configurate per l'utilizzo dell'accesso privato ai servizi (PSA). Gli endpoint non supportano le istanze configurate per l'utilizzo di Private Service Connect (PSC).
  • Il supporto per gli AlloyDB Language Connector e il proxy di autenticazione AlloyDB non è disponibile per gli endpoint di scrittura.
  • Le operazioni di modifica simultanee (ad esempio aggiornamenti simultanei o un'operazione di aggiornamento e una di eliminazione) sugli endpoint che puntano alla stessa istanza target non sono supportate e potrebbero non riuscire.

Prima di iniziare

  1. Installa e inizializza Google Cloud CLI.
  2. Abilita l'API Cloud DNS.
  3. Assicurati di avere un'istanza AlloyDB esistente che funga da destinazione per l'endpoint.
  4. Per ottenere le autorizzazioni necessarie per gestire gli endpoint, chiedi all'amministratore di concederti il ruolo IAM AlloyDB Admin (roles/alloydb.admin) nel progetto. Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire gli endpoint.

    Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti. Le autorizzazioni specifiche richieste sono:

    • alloydb.endpoints.create
    • alloydb.endpoints.update
    • alloydb.endpoints.get
    • alloydb.endpoints.list
    • alloydb.endpoints.delete

Per saperne di più, consulta Ruoli e autorizzazioni IAM di AlloyDB.

Puoi creare e gestire gli endpoint di scrittura utilizzando Google Cloud CLI.

Creazione di un endpoint

Per creare un endpoint di scrittura, utilizza Google Cloud CLI. Il tipo di endpoint deve essere WRITE_ENDPOINT e deve avere come target una singola istanza principale.

Console

  1. Nella console Google Cloud , vai alla pagina Endpoint.

    Vai a Endpoint

  2. Fai clic su Crea endpoint.

  3. Nel campo Nome endpoint, inserisci un ID per l'endpoint. Deve essere composto da lettere minuscole (a-z), numeri e trattini, deve iniziare con una lettera minuscola e terminare con una lettera minuscola o un numero.

  4. Seleziona una Regione.

  5. In Tipo di endpoint, seleziona Scrittura.

  6. Nel campo Istanza target, seleziona l'istanza principale a cui deve puntare questo endpoint.

  7. Fai clic su Crea.

gcloud

gcloud beta alloydb endpoints create ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --endpoint-type=ENDPOINT_TYPE \
    --target-instances=TARGET_INSTANCE_NAME

Sostituisci quanto segue:

  • ENDPOINT_ID: un identificatore univoco per l'endpoint. Questo ID deve essere univoco all'interno del progetto e della località specificati.
  • PROJECT_ID: il tuo ID progetto Google Cloud .
  • REGION_ID: l'ID della regione in cui vuoi creare l'endpoint, ad esempio us-central1.
  • ENDPOINT_TYPE: il tipo di risorsa endpoint. È supportato soltanto l'ID WRITE_ENDPOINT.
  • TARGET_INSTANCE_NAME: il nome completo della risorsa dell'istanza AlloyDB per PostgreSQL a cui punta l'endpoint. Il percorso completo della risorsa per un'istanza ha il seguente formato: projects/$PROJECT/locations/$LOCATION/clusters/$CLUSTER/instances/$INSTANCE.

Connettiti a un'istanza utilizzando un endpoint

Per connetterti alla tua istanza AlloyDB utilizzando un endpoint, devi prima ottenere il nome DNS generato automaticamente associato all'endpoint.

Ottieni il nome DNS

Puoi visualizzare il nome DNS di un endpoint utilizzando Google Cloud CLI.

Console

  1. Nella console Google Cloud , vai alla pagina Endpoint.

    Vai a Endpoint

  2. Trova l'endpoint a cui vuoi connetterti e copia il valore nella colonna Nome DNS.

gcloud

  1. Utilizza il comando gcloud beta alloydb endpoints describe:

    gcloud beta alloydb endpoints describe ENDPOINT_ID \
        --project=PROJECT_ID \
        --region=REGION_ID
    

    Sostituisci quanto segue:

    • ENDPOINT_ID: l'ID dell'endpoint
    • PROJECT_ID: il tuo ID progetto Google Cloud
    • REGION_ID: l'ID della regione in cui si trova l'endpoint
  2. Nell'output comando, individua il campo dnsName e copia il relativo valore.

Connettiti utilizzando psql

Una volta ottenuto il nome DNS, puoi utilizzarlo come host nella stringa di connessione o nello strumento client. Ad esempio, per connetterti utilizzando il client psql, esegui questo comando:

psql -h DNS_NAME -U USERNAME -d DATABASE_NAME

Sostituisci quanto segue:

  • DNS_NAME: il nome DNS dell'endpoint
  • USERNAME: l'utente del database con cui connettersi
  • DATABASE_NAME: il nome del database a cui connettersi

Per saperne di più sull'utilizzo di psql, consulta Connettiti utilizzando il client psql.

Aggiorna un endpoint

Per modificare l'istanza a cui punta un endpoint, ad esempio dopo un'operazione di ripristino, utilizza i seguenti comandi:

Console

  1. Nella console Google Cloud , vai alla pagina Endpoint.

    Vai a Endpoint

  2. Nella riga dell'endpoint che vuoi aggiornare, fai clic su Azioni e poi seleziona Modifica.

  3. Nel campo Istanza target, seleziona la nuova istanza principale a cui deve puntare questo endpoint.

  4. Fai clic su Aggiorna.

gcloud

gcloud beta alloydb endpoints update ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --target-instances=NEW_TARGET_INSTANCE_NAME

Sostituisci quanto segue:

  • ENDPOINT_ID: l'ID dell'endpoint da aggiornare
  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION_ID: l'ID della regione in cui si trova l'endpoint
  • NEW_TARGET_INSTANCE_NAME: il nome completo della risorsa delle nuove istanze target

Elenca endpoint

Per elencare tutti gli endpoint in un determinato progetto e in una determinata regione, utilizza il seguente comando:

Console

  1. Nella console Google Cloud , vai alla pagina Endpoint.

    Vai a Endpoint

    La pagina elenca tutti gli endpoint nel progetto attuale.

gcloud

gcloud beta alloydb endpoints list --project=PROJECT_ID \
    --region=REGION_ID

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION_ID: l'ID della regione in cui si trova l'endpoint

Visualizza dettagli endpoint

Per visualizzare i dettagli di un endpoint specifico, utilizza il seguente comando Google Cloud CLI:

gcloud

gcloud beta alloydb endpoints describe ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

Sostituisci quanto segue:

  • ENDPOINT_ID: l'ID dell'endpoint da descrivere
  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION_ID: l'ID della regione in cui si trova l'endpoint

Nella console Google Cloud , puoi visualizzare i dettagli dell'endpoint nella pagina Endpoint.

Eliminazione di un endpoint

Per eliminare un endpoint, utilizza i seguenti comandi:

Console

  1. Nella console Google Cloud , vai alla pagina Endpoint.

    Vai a Endpoint

  2. Nella riga dell'endpoint che vuoi eliminare, fai clic su Azioni e poi seleziona Elimina.

  3. Per confermare, digita l'ID endpoint e fai clic su Elimina.

gcloud

gcloud beta alloydb endpoints delete ENDPOINT_ID \
    --project=PROJECT_ID \
    --region=REGION_ID

Sostituisci quanto segue:

  • ENDPOINT_ID: l'ID dell'endpoint da eliminare
  • PROJECT_ID: il tuo ID progetto Google Cloud
  • REGION_ID: l'ID della regione in cui si trova l'endpoint

Comportamento dell'endpoint di scrittura durante il cambio o il failover tra regioni

Sebbene il nome DNS di un endpoint si risolva nell'IP di un'istanza specifica al momento della creazione, questi endpoint sono dinamici. In caso di attività di replica tra regioni, come un switchover o un failover tra regioni (anteprima), gli endpoint di scrittura AlloyDB mantengono la connettività continua senza intervento manuale. Quando un cluster secondario viene promosso a nuovo cluster principale, l'endpoint aggiorna automaticamente il proprio record DNS in modo che punti alla nuova istanza principale. Questo comportamento elimina la riconfigurazione manuale delle stringhe di connessione dell'applicazione, riducendo in modo significativo la complessità operativa e i tempi di inattività per soddisfare un obiettivo del tempo di ripristino (RTO).

Al termine dell'operazione e della propagazione DNS, l'applicazione può riconnettersi alla nuova istanza principale utilizzando lo stesso nome DNS dell'endpoint.

Evita scritture in conflitto durante il failover

L'utilizzo di un endpoint di scrittura durante un failover tra regioni aiuta a evitare scritture in conflitto indirizzando automaticamente il nuovo traffico di scrittura lontano dal cluster principale originale e verso quello nuovo. Per saperne di più sul comportamento degli endpoint di scrittura durante il failover, consulta Utilizza gli endpoint di scrittura per evitare lo split brain.

Passaggi successivi