Risolvere i problemi dei 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 relativi a Network Analyzer

Network Analyzer monitora automaticamente la configurazione della rete VPC e rileva sia le configurazioni non ottimali sia quelle errate. Identifica i guasti di rete, fornisce informazioni sulle cause principali e suggerisce possibili soluzioni. Per scoprire di più sui diversi scenari di configurazione errata che vengono rilevati automaticamente da Network Analyzer, vedi Approfondimenti sul bilanciatore 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 generali di connettività

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

  • Verifica le regole firewall.

    • Assicurati che siano definite regole firewall di autorizzazione in entrata per consentire i controlli di integrità alle VM di backend.
    • Assicurati che le regole firewall di autorizzazione in entrata consentano il traffico dai client alle VM di backend.
    • 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 target per le regole firewall, assicurati che le VM di backend del bilanciatore del carico siano codificate in modo appropriato.

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

  • Verifica che l'agente ospite Google sia in esecuzione sulla VM di backend. Se riesci a connetterti a una VM di backend integro, ma non al bilanciatore del carico, è possibile che l'agente guest Google (in precedenza Windows Guest Environment o Linux Guest Environment) 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 guest Google sia installato e in esecuzione sulla VM di backend.
    • Assicurati che le regole firewall all'interno del sistema operativo guest della VM di backend (iptables o Windows Firewall) non blocchino l'accesso al server di metadati.
  • Verifica che le VM di backend accettino i pacchetti inviati al bilanciatore del carico. Ogni VM di backend deve essere configurata in modo da accettare i pacchetti inviati al bilanciatore del carico. In altre parole, la destinazione dei pacchetti consegnati alle VM di backend è l'indirizzo IP del bilanciatore del carico. Nella maggior parte dei casi, questo viene implementato con una route locale.

    Per le VM create da immagini Google Cloud, il Guest agent installa la route locale per l'indirizzo IP del bilanciatore del carico. Le istanze di Google Kubernetes Engine basate su Container-Optimized OS implementano questa soluzione utilizzando iptables.

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

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Verifica l'indirizzo IP del servizio e l'associazione delle porte 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 questo comando:

    netstat -nl | grep ':PORT'
    

    Il software in esecuzione sulla VM backend deve:

    • In ascolto sull'indirizzo IP o su qualsiasi indirizzo IP del bilanciatore del carico (0.0.0.0 o ::)
    • In ascolto su (associata a) una porta inclusa nella regola di forwarding del bilanciatore del carico

    Per verificare, 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 forwarding 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 del VPC condiviso

Se utilizzi un VPC condiviso e non puoi 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 subnet all'elenco delle subnet consentite o contatta l'amministratore dell'organizzazione. Per ulteriori informazioni, consulta il 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 dei criteri di failover.
  • Assicurati di comprendere come funziona l'appartenenza al pool attivo e quando Google Cloud esegue failover e failover. Controlla la configurazione del bilanciatore del carico procedendo nel seguente modo:

    • Utilizza la console Google Cloud per verificare 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, Google Cloud esegue un failover quando meno di due VM principali (10 × 0.2 = 2) sono integre. Un rapporto di failover 0.0 ha un significato speciale: Google Cloud esegue un failover quando nessuna VM principale è integro.

Altri problemi che possono verificarsi sono i seguenti:

  • Il pool attivo cambia continuamente tra il backend primario e quello di failover.

    L'uso di gruppi di istanze gestite con scalabilità automatica e failover potrebbe causare ripetutamente il failover e il failback del pool attivo tra i backend primari e di failover. Google Cloud non ti impedisce di configurare il failover con i gruppi di istanze gestite poiché il deployment potrebbe trarre vantaggio da questa configurazione.

  • La disattivazione dello svuotamento della connessione non funziona.

    La disabilitazione 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 lo svuotamento della connessione è disabilitato, 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 terminate durante il failover o il failover.

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

Risolvere i problemi di logging

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

  • In alcuni log potrebbero mancare misurazioni RTT, ad esempio i valori di byte, se non viene campionato un numero sufficiente di pacchetti per acquisire RTT. Questo è più probabile che si verifichi per le connessioni a basso volume.
  • I valori RTT sono disponibili solo per i flussi TCP.
  • Alcuni pacchetti vengono inviati senza payload. Se i pacchetti solo su intestazione vengono campionati, il valore dei byte è 0.