Connettersi a un'istanza utilizzando un endpoint di scrittura

Panoramica

Questa pagina mostra come utilizzare un endpoint di scrittura per connettersi dai client nella rete Virtual Private Cloud (VPC) a un'istanza Cloud SQL utilizzando l'accesso privato ai servizi (PSA).

Un endpoint di scrittura è un nome DNS (Domain Name Service) globale che viene risolto automaticamente nell'indirizzo IP dell'istanza primaria corrente. In caso di failover o switchover di una replica, questo endpoint di scrittura reindirizza automaticamente le connessioni in entrata alla nuova istanza principale. Puoi utilizzare l'endpoint di scrittura in una stringa di connessione SQL all'istanza Cloud SQL anziché utilizzare un indirizzo IP. Utilizzando un endpoint di scrittura, puoi evitare di dover apportare modifiche alla connessione dell'applicazione quando esegui un failover o un cambio di replica per il recupero da un'interruzione della regione o per la simulazione di ripristino di emergenzaery.

Ogni istanza Cloud SQL idonea ha un unico endpoint di scrittura integrato il cui nome, creazione e aggiornamento sono gestiti da Cloud SQL. L'esempio seguente illustra il formato:

  primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
  

L'endpoint di scrittura termina sempre con il suffisso .global.sql-psa.goog.. Non puoi modificare il nome o il formato di questo endpoint di scrittura gestito da Cloud SQL.

Puoi utilizzare l'endpoint di scrittura per tutte le operazioni di scrittura sull'istanza principale, inclusi inserimenti, aggiornamenti, eliminazioni e modifiche DDL. Puoi anche utilizzare l'endpoint di scrittura per le operazioni di lettura, come le query. L'indirizzo IP privato a cui punta l'endpoint di scrittura viene modificato automaticamente da Cloud SQL quando esegui un'operazione di failover o switchover della replica per promuovere un'istanza di replica a nuova istanza principale.

Genera l'endpoint di scrittura

Se crei una nuova istanza Cloud SQL, Cloud SQL crea automaticamente l'endpoint di scrittura quando vengono soddisfatti i seguenti prerequisiti:

  • Le seguenti API devono essere abilitate nel progetto Google Cloud in cui si trova l'istanza Cloud SQL:

    Se non riesci ad abilitare l'API Cloud DNS nel progetto, non potrai creare la zona DNS di peering, il che renderà inutilizzabili i nomi DNS.

    Una volta creata correttamente la zona DNS di peering, è importante che non venga modificata in alcun modo. Qualsiasi modifica, inclusa l'eliminazione, renderà il DNS inutilizzabile per la connessione al database.

  • L'istanza Cloud SQL deve essere Cloud SQL Enterprise Plus.
  • L'istanza Cloud SQL deve essere configurata per utilizzare un IP privato con l'accesso privato ai servizi (PSA) attivato.
  • La funzionalità richiede istanze sulla nuova architettura di rete. Nella maggior parte dei casi, le nuove istanze vengono create con la nuova architettura. Per verificarlo, controlla l'architettura di rete della tua istanza.

Quando esegui l'upgrade di un'istanza Cloud SQL Enterprise esistente a un'istanza Cloud SQL Enterprise Plus, Cloud SQL genera automaticamente l'endpoint di scrittura se i prerequisiti elencati in precedenza sono soddisfatti. Se la tua istanza esistente si trova nella vecchia architettura di rete, devi prima eseguire l'upgrade dell'istanza alla nuova architettura di rete per ottenere l'endpoint di scrittura.

Se hai già un'istanza Cloud SQL Enterprise Plus senza l'endpoint di scrittura e vuoi che Cloud SQL generi automaticamente un endpoint di scrittura, crea una replica abilitata per il recupero di emergenza avanzato.

Visualizza l'endpoint di scrittura

gcloud

Per trovare l'endpoint di scrittura, utilizza il seguente comando gcloud CLI:

      gcloud sql instances describe INSTANCE_NAME \
      | grep writeEndpoint
    

Effettua le seguenti sostituzioni:

INSTANCE_NAME: il nome dell'istanza Cloud SQL.

Gli endpoint di scrittura terminano sempre con il suffisso .global.sql-psa.goog., come nel seguente esempio:

  primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog.
  

Se non vedi l'endpoint di scrittura per un'istanza idonea, consulta la sezione Risoluzione dei problemi.

Connettiti a un'istanza Cloud SQL utilizzando un endpoint di scrittura

sqlcmd

Per connettere un client sqlcmd a un'istanza Cloud SQL utilizzando l'endpoint di scrittura, esegui questo comando:

    sqlcmd -S WRITE_ENDPOINT -U USERNAME -d DATABASE_NAME -P
  

Effettua le seguenti sostituzioni:

  • DATABASE_NAME: il nome del database. Ad esempio, main.
  • USERNAME: il nome utente. Ad esempio, sqlserver.
  • WRITE_ENDPOINT: il nome DNS o l'endpoint di scrittura. Questo valore alfanumerico termina sempre con il suffisso .global.sql-psa.goog.. Ad esempio, primary.103uufa2svq8u.2rb3qdj9tkf4d.global.sql-psa.goog..

Limitazioni

  • Gli endpoint di scrittura non sono disponibili per le creazioni di istanze Cloud SQL Enterprise.
  • Gli endpoint di scrittura non sono disponibili per le istanze solo con IP pubblico o solo con Private Service Connect.
  • Gli endpoint di scrittura non sono disponibili per l'utilizzo con il proxy di autenticazione Cloud SQL o i connettori dei linguaggi.

Risoluzione dei problemi

Le sezioni seguenti descrivono l'architettura degli endpoint di scrittura e affrontano i problemi comuni di risoluzione dei problemi.

Architettura di un endpoint di scrittura

Quando crei un'istanza idonea, viene generato un endpoint di scrittura per impostazione predefinita.

Per creare un endpoint di scrittura, Cloud SQL esegue la seguente configurazione:

  • Crea una zona DNS privata nella rete VPC del producer di servizi Cloud SQL
  • Crea una zona DNS di peering nella rete VPC del cliente
  • Crea un record DNS nella zona DNS privata nella rete producer di servizi

Il seguente diagramma illustra il funzionamento di questa procedura:

Diagramma che mostra come il peering VPC supporta il peering delle zone DNS tra i progetti.
Figura 1. Diagramma che mostra come il peering VPC supporta il peering delle zone DNS tra una rete del producer di servizi e una rete del cliente.

Problemi di risoluzione DNS

Se la risoluzione DNS non funziona, controlla ciascuno dei seguenti elementi:

  1. Assicurati che tutti i prerequisiti siano soddisfatti.
  2. Assicurati che i client in cui è prevista la risoluzione si trovino nella stessa rete a cui è collegata l'istanza Cloud SQL. Per verificarlo, usa il comando gcloud compute instances list:
    gcloud compute instances list \
       --format="table( name, zone.basename(), networkInterfaces[].network )" \
       --project=PROJECT_NAME

    Sostituisci PROJECT_NAME con il nome del progetto in cui si trova la rete consumer DNS.

  3. Verifica che la zona di peering esista. Per farlo, utilizza il gcloud dns managed-zones list comando:
    gcloud dns managed-zones list \
        --project=PROJECT_NAME

    Sostituisci PROJECT_NAME con il nome del progetto in cui si trova la rete consumer DNS.

La nuova istanza non ha un endpoint di scrittura

Se un'istanza appena creata non contiene un endpoint di scrittura, controlla ciascuno dei seguenti elementi:

  1. Assicurati che tutti i prerequisiti siano stati completati.
  2. Assicurati che non sia presente una zona DNS di peering residua con il nome DNS sql-psa.goog..

    Una zona DNS di peering è una zona DNS rimanente se la rete associata alla zona DNS non ha un peering VPC con l'ID progetto peer della zona DNS di peering.

    Se è presente una zona DNS di peering residua con il suffisso sql-psa.goog., eliminala.

    Per verificare la presenza di zone DNS di peering rimanenti, utilizza il comando gcloud dns managed-zones list:

    gcloud dns managed-zones list \
       --project=PROJECT_NAME

    Sostituisci PROJECT_NAME con il nome del progetto in cui si trova la rete consumer DNS.

    Se esiste una zona DNS con il suffisso sql-psa.goog., eliminala dopo aver verificato che la zona DNS di peering sia una zona DNS rimanente.

    Per eliminare una zona DNS, utilizza il comando gcloud dns managed-zones delete:

    gcloud dns managed-zones delete ZONE_NAME

    Sostituisci ZONE_NAME con il nome della zona DNS associata agli endpoint di scrittura. I valori sono alfanumerici e utilizzano il seguente formato: cloud-sql-psa-dns-1234567890.

Passaggi successivi