Risolvere i problemi relativi ai bilanciatori del carico di rete passthrough esterni

Questa guida descrive come risolvere i problemi di configurazione per un bilanciatore del carico di rete passthrough esterno di Google Cloud. Prima di esaminare i problemi, consulta le seguenti pagine:

Risolvere i problemi comuni di Network Analyzer

Network Analyzer monitora automaticamente la configurazione di rete VPC e rileva sia le configurazioni non ottimali sia le configurazioni errate. Identifica gli errori della rete, fornisce informazioni sulla causa principale e suggerisce possibili soluzioni. Per informazioni sui diversi scenari di configurazione errata rilevati automaticamente da Network Analyzer, consulta Approfondimenti sui bilanciatori del carico nella documentazione di Network Analyzer.

Network Analyzer è disponibile nella console Google Cloud come parte di Network Intelligence Center.

Vai a Network Analyzer

Risolvere i problemi di configurazione

I backend hanno modalità di bilanciamento incompatibili

Quando crei un bilanciatore del carico, potresti visualizzare l'errore:

Validation failed for instance group INSTANCE_GROUP:

backend services 1 and 2 point to the same instance group
but the backends have incompatible balancing_mode. Values should be the same.

Questo accade quando provi a utilizzare lo stesso backend in due bilanciatori del carico diversi e i backend non hanno modalità di bilanciamento compatibili.

Per ulteriori informazioni, consulta le seguenti risorse:

Risolvere i problemi di connettività generali

Se non riesci a connetterti al bilanciatore del carico di rete passthrough esterno, controlla i seguenti problemi comuni:

  • Verifica le regole del firewall.

    • Assicurati che le regole firewall in entrata consentano i controlli di integrità alle VM di backend.
    • Assicurati che le regole del firewall di autorizzazione in entrata consentano il traffico verso le VM di backend dai client.
    • Assicurati che esistano regole firewall pertinenti per consentire al traffico di raggiungere le VM di backend sulle porte utilizzate dal bilanciatore del carico.
    • Se utilizzi tag di destinazione per le regole del firewall, assicurati che le VM di backend del bilanciatore del carico siano taggate in modo appropriato.

    Per scoprire come configurare le regole del firewall richieste dal bilanciatore del carico di rete passthrough esterno, consulta Configurazione delle regole del firewall.

  • Verifica che l'agente ospite Google sia in esecuzione sulla VM di backend. Se riesci a collegarti a una VM di backend funzionante, ma non riesci a collegarti al bilanciatore del carico, è possibile che l'agente guest di Google (in precedenza, l'ambiente guest Windows o Linux) sulla VM non sia in esecuzione o non sia in grado di comunicare con il server di metadati (metadata.google.internal, 169.254.169.254).

    Verifica quanto segue:

    • Assicurati che l'agente ospite Google sia installato ed eseguito sulla VM di backend.
    • Assicurati che le regole del firewall nel sistema operativo guest della VM di backend (iptables o Windows Firewall) non blocchino l'accesso al server dei metadati.
  • Verifica che le VM di backend accettino i pacchetti inviati al bilanciatore del carico. Ogni VM di backend deve essere configurata per accettare i pacchetti inviati al bilanciatore del carico. In altre parole, la destinazione dei pacchetti inviati alle VM di backend è l'indirizzo IP del bilanciatore del carico. Nella maggior parte dei casi, viene implementato con una route locale.

    Per le VM create dalle immagini Google Cloud, l'agente ospite installa la route locale per l'indirizzo IP del bilanciatore del carico. Le istanze Google Kubernetes Engine basate su Container-Optimized OS implementano questa funzionalità utilizzando iptables.

    Su una VM di backend Linux, puoi verificare la presenza della route locale eseguendo il seguente comando. Sostituisci LOAD_BALANCER_IP con l'indirizzo IP del bilanciatore del carico:

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Verifica l'associazione dell'indirizzo IP e della porta del servizio sulle VM di backend. I pacchetti inviati a un bilanciatore del carico di rete passthrough esterno arrivano alle VM di backend con l'indirizzo IP di destinazione del bilanciatore del carico stesso. Questo tipo di bilanciatore del carico non è un proxy e si tratta di un comportamento previsto.

    Per vedere i servizi in ascolto su una porta, esegui il seguente comando:

    netstat -nl | grep ':PORT'
    

    Il software in esecuzione sulla VM di backend deve:

    • Ascolta (è associato) all'indirizzo IP del bilanciatore del carico o a qualsiasi indirizzo IP (0.0.0.0 o ::)
    • Ascolta (è associata a) una porta inclusa nella regola di forwarding del bilanciatore del carico

    Per testarlo, connettiti a una VM di backend utilizzando SSH o RDP. Poi, esegui i seguenti test utilizzando curl, telnet o uno strumento simile:

    • Prova a raggiungere il servizio contattandolo utilizzando l'indirizzo IP interno della VM di backend stessa, 127.0.0.1 o localhost.
    • Prova a raggiungere il servizio contattandolo utilizzando l'indirizzo IP della regola di inoltro del bilanciatore del carico.
  • Verifica che il traffico del controllo di integrità possa raggiungere le VM di backend. Per verificare che il traffico del controllo di integrità raggiunga le VM di backend, abilita il logging del controllo di integrità e cerca le voci di log riuscite.

Risolvere i problemi relativi alla rete VPC condivisa

Se utilizzi VPC condiviso e non riesci a creare un nuovo bilanciatore del carico di rete passthrough esterno in una determinata subnet, la causa potrebbe essere un criterio dell'organizzazione. Nel criterio dell'organizzazione, aggiungi la sottorete all'elenco delle sottoreti consentite o contatta l'amministratore dell'organizzazione. Per ulteriori informazioni, consulta la vincolo constraints/compute.restrictSharedVpcSubnetworks.

Risolvere i problemi di failover

Se hai configurato il failover per un bilanciatore del carico di rete passthrough esterno, segui questi passaggi per verificare la configurazione:

  • Assicurati di aver designato almeno un backend di failover.
  • Verifica le impostazioni del criterio di failover.
  • Assicurati di comprendere il funzionamento dell'appartenenza al pool attivo e quando Google Cloud esegue il failover e il failback. Controlla la configurazione del bilanciatore del carico nel seguente modo:

    • Utilizza la console Google Cloud per controllare il numero di VM di backend in stato integro in ogni gruppo di istanza di backend. La console Google Cloud mostra anche le VM nel pool attivo.

    • Assicurati che il rapporto di failover del bilanciatore del carico sia impostato correttamente. Ad esempio, se hai dieci VM principali e un rapporto di failover impostato su 0.2, significa che Google Cloud esegue un failover quando meno di due (10 × 0.2 = 2) VM principali sono integre. Un rapporto di failover pari a 0.0 ha un significato speciale: Google Cloud esegue un failover quando nessuna VM primaria è integra.

Di seguito sono riportati altri problemi che possono verificarsi:

  • Il pool attivo passa avanti e indietro (flapping) tra i backend principali e di failover.

    L'utilizzo di gruppi di istanze gestite con la scalabilità automatica e il failover potrebbe causare ripetuti failover e failback del pool attivo tra i backend principali e di failover. Google Cloud non impedisce di configurare il failover con i gruppi di istanze gestite, perché il tuo deployment potrebbe trarre vantaggio da questa configurazione.

  • La disattivazione dello svuotamento della connessione non funziona.

    La disattivazione dello svuotamento della connessione funziona solo se il servizio di backend è configurato con il protocollo TCP.

    Se crei un servizio di backend con UDP mentre svuotamento della connessione è disattivato, viene visualizzato il seguente messaggio di errore:

    gcloud compute backend-services create my-failover-bs
      --load-balancing-scheme external \
      --health-checks-region us-central1 \
      --health-checks my-tcp-health-check \
      --region us-central1 \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 0.5 \
      --protocol UDP
    ERROR: (gcloud.compute.backend-services.create) Invalid value for
    [--protocol]: can only specify --connection-drain-on-failover if the protocol is
    TCP.
    
  • Le connessioni esistenti vengono interrotte durante il failover o il failback.

    Modifica il criterio di failover del servizio di backend. Assicurati che svuotamento della connessione in caso di failover sia abilitato.

Risolvere i problemi di registrazione

Se configuri il logging per un bilanciatore del carico di rete passthrough esterno, potrebbero verificarsi i seguenti problemi:

  • Le misurazioni del RTT, come i valori in byte, potrebbero non essere presenti in alcuni log se non vengono campionati pacchetti sufficienti per acquisire il RTT. Questo accade più spesso per le connessioni con volume ridotto.
  • I valori RTT sono disponibili solo per i flussi TCP.
  • Alcuni pacchetti vengono inviati senza payload. Se vengono campionati pacchetti solo con intestazione, il valore in byte è 0.