Gestire le connessioni ai database con gli endpoint di scrittura

Questa pagina descrive come utilizzare gli endpoint di scrittura di AlloyDB per PostgreSQL per semplificare la gestione delle connessioni ai database per le tue applicazioni.

Un endpoint è una risorsa AlloyDB che fornisce un nome di servizio DNS (Domain Name Service) stabile che le tue applicazioni possono utilizzare per connettersi a un'istanza AlloyDB. Utilizzando un endpoint, disaccoppi l'applicazione dall'indirizzo IP o dall'URI (Uniform Resource Identifier) specifico di un'istanza. Questa astrazione semplifica la gestione delle connessioni durante gli eventi operativi, ad esempio ripristino di emergenza, i ripristinamenti dei backup o le migrazioni, perché puoi reindirizzare il nome DNS dell'endpoint a un'altra istanza 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 sia il traffico di lettura sia quello di scrittura.

Sebbene il nome DNS funzioni come risorsa globale, la risorsa endpoint stessa è regionale. Anche così, ogni endpoint può collegarsi a istanze a livello globale e il relativo 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 uno switchover o un failover tra regioni a un cluster secondario, AlloyDB aggiorna automaticamente l'endpoint in modo che punti alla nuova istanza principale. Le applicazioni possono quindi riconnettersi utilizzando lo stesso nome DNS dell'endpoint, riducendo l'obiettivo del tempo di ripristino (RTO).
  • Ripristino dei backup senza interruzioni: 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 all'istanza appena ripristinata. In questo modo, le applicazioni possono riprendere l'operazione senza modifiche alla configurazione.
  • Migrazioni più semplici: durante le migrazioni, puoi passare 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 di accesso ai servizi privati (PSA). Gli endpoint non supportano le istanze configurate per l'utilizzo di Private Service Connect (PSC).
  • Il supporto per i connettori di linguaggio AlloyDB e il proxy di autenticazione AlloyDB non è disponibile per l'endpoint di scrittura.
  • Le operazioni di modifica simultanea (ad esempio aggiornamenti simultanei o un'operazione di aggiornamento ed eliminazione) sugli endpoint che puntano alla stessa istanza target non sono supportate e potrebbero causare errori.

Prima di iniziare

  1. Installa e inizializza Google Cloud CLI.
  2. Abilita l'API Cloud DNS.
  3. Assicurati di avere un'istanza AlloyDB esistente da utilizzare come target per l'endpoint.
  4. Per ottenere le autorizzazioni necessarie per gestire gli endpoint, chiedi all' amministratore di concederti il ruolo IAM (Identity and Access Management) roles/alloydb.adminAlloyDB 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 Google Cloud console, 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. Per 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: l'ID del tuo Google Cloud progetto.
  • REGION_ID: l'ID della regione in cui vuoi creare l'endpoint, ad esempio us-central1.
  • ENDPOINT_TYPE: il tipo di risorsa endpoint. È supportato solo 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.

Connessione a un'istanza utilizzando un endpoint

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

Ottenere il nome DNS

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

Console

  1. Nella Google Cloud console, 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 gcloud beta alloydb endpoints describe comando:

    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 Google Cloud ID progetto
    • REGION_ID: l'ID della regione in cui si trova l'endpoint
  2. Nell'output comando, trova il campo dnsName e copia il relativo valore.

Connessione tramite psql

Dopo aver 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 il seguente 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 connetterti
  • DATABASE_NAME: il nome del database a cui connetterti

Per saperne di più sull'utilizzo di psql, consulta Connessione tramite il client psql.

Aggiornamento di 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 Google Cloud console, 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 Google Cloud ID progetto
  • REGION_ID: l'ID della regione in cui si trova l'endpoint
  • NEW_TARGET_INSTANCE_NAME: il nome completo della risorsa delle nuove istanze di destinazione

Elenco degli endpoint

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

Console

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

    Vai a Endpoint

    La pagina elenca tutti gli endpoint nel progetto corrente.

gcloud

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

Sostituisci quanto segue:

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

Visualizzazione dei dettagli dell'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 Google Cloud ID progetto
  • REGION_ID: l'ID della regione in cui si trova l'endpoint

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

Eliminazione di un endpoint

Per eliminare un endpoint, utilizza i seguenti comandi:

Console

  1. Nella Google Cloud console, 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 dell'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 Google Cloud ID progetto
  • 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 venga risolto nell'IP di un'istanza specifica al momento della creazione, questi endpoint sono dinamici. In caso di attività di replica tra regioni, come un cambio o un failover tra regioni (anteprima), gli endpoint di scrittura di AlloyDB garantiscono una connettività continua senza intervento manuale. Quando un cluster secondario viene promosso a nuovo cluster principale, l'endpoint aggiorna automaticamente il record DNS in modo che punti alla nuova istanza principale. Questo comportamento elimina la riconfigurazione manuale delle stringhe di connessione dell'applicazione, riducendo significativamente la complessità operativa e riducendo al minimo i tempi di inattività per soddisfare un obiettivo del tempo di ripristino (RTO).

Una volta completata l'operazione e la propagazione del DNS, l'applicazione può riconnettersi alla nuova istanza principale utilizzando lo stesso nome DNS dell'endpoint.

Prevenzione di scritture in conflitto durante il failover

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

Passaggi successivi