Risolvi i problemi dei bilanciatori del carico di rete passthrough esterni

Questa guida descrive come risolvere i problemi di configurazione 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 della rete VPC e rileva sia le configurazioni non ottimali sia quelle errate. Identifica gli errori della rete, fornisce informazioni sulla causa principale e suggerisce possibili soluzioni. A di conoscere i diversi scenari di errore di configurazione rilevato da Network Analyzer; consulta Approfondimenti sul bilanciatore del carico nella documentazione di Network Analyzer.

Network Analyzer è disponibile nella console Google Cloud come parte 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 carichi 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:

  • Verifica le regole del firewall.

    • Assicurati che il traffico in entrata consenta firewall predefinite sono definite consentire 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 guest Google sia installato e in esecuzione sul 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 consegnati alle VM di backend del bilanciatore del carico. Nella maggior parte dei casi, viene implementato con un percorso 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 questo comando:

    netstat -nl | grep ':PORT'
    

    Il software in esecuzione sulla VM di backend deve:

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

    Per verificare, connettiti a una VM di backend utilizzando SSH o RDP. Poi esegui i seguenti test con 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 il traffico del controllo di integrità raggiunge le VM di backend, abilita logging del controllo di integrità e ricerca per le voci di log corrette.

Risoluzione dei problemi del VPC condiviso

Se utilizzi un VPC condiviso e non puoi crearne uno nuovo un bilanciatore del carico di rete passthrough esterno in una determinata subnet, la causa. Nel criterio dell'organizzazione, aggiungi la subnet all'elenco delle subnet o contatta l'amministratore della tua 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 il criterio di failover impostazioni.
  • Assicurati di comprendere in che modo l'appartenenza ai funziona il pool attivo e quando Google Cloud esegue il failover di failover. Controlla la configurazione del bilanciatore del carico seguendo questi passaggi:

    • Utilizza la console Google Cloud per controllare il numero di VM di backend in stato integro in ogni gruppo di istanze 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.

Altri problemi che possono verificarsi sono i seguenti:

  • Il pool attivo passa continuamente (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 disabilitazione dello svuotamento della connessione funziona solo se il servizio di backend è configurato con TCP.

    Se crei un servizio di backend con UDP mentre lo scarico delle connessioni è 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 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, quanto segue che potrebbero verificarsi:

  • 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 a basso volume.
  • I valori RTT sono disponibili solo per i flussi TCP.
  • Alcuni pacchetti vengono inviati senza payload. Se i pacchetti con solo intestazione vengono campionati, il valore byte è 0.