Impostazione del bilanciamento del carico per il proxy SSL

Questo documento fornisce istruzioni per la configurazione del bilanciamento del carico del proxy SSL. Prima di iniziare, consulta Panoramica del bilanciamento del carico del proxy SSL per informazioni sul funzionamento del bilanciamento del carico del proxy SSL.

Panoramica della configurazione

Questo esempio illustra la configurazione del bilanciamento del carico del proxy SSL per un servizio semplice presente in due aree geografiche: us-central1 e us-east1. Dovrai configurare quanto segue:

  1. Quattro istanze distribuite in due aree geografiche
  2. Gruppi di istanze per il blocco delle istanze
  3. Componenti di backend, che includono quanto segue:
    • Controllo di integrità: utilizzato per monitorare l'integrità dell'istanza
    • Servizio di backend: monitora i gruppi di istanze ed evita che superino i limiti di utilizzo configurati
    • Backend: blocchi i gruppi di istanze
  4. Componenti frontend, che includono quanto segue:
    • Una risorsa certificato SSL. Puoi utilizzare un certificato autogestito, in cui fornisci il tuo certificato SSL, o un certificato gestito da Google, in cui Google rilascia un certificato valido per tutti i tuoi domini. Per scoprire di più, consulta Tipi di certificati SSL.
    • Il proxy SSL stesso con il suo certificato SSL
    • Un indirizzo IPv4 statico esterno e una regola di forwarding che invia il traffico utente al proxy
    • Un indirizzo IPv6 esterno statico e una regola di forwarding che invia il traffico utente al proxy
  5. Una regola firewall che consente il traffico dal bilanciatore del carico e dal controllo di integrità verso le istanze.
  6. Un criterio SSL per controllare le funzionalità di SSL negoziate dal tuo bilanciatore del carico del proxy SSL con i client.

Dopodiché, verificherai la configurazione.

Autorizzazioni

Per seguire questa guida, devi essere in grado di creare istanze e modificare una rete in un progetto. Devi essere un proprietario o un editor del progetto oppure devi disporre di tutti i seguenti ruoli IAM di Compute Engine:

Attività Ruolo obbligatorio
Crea reti, subnet e componenti del bilanciatore del carico Amministratore di rete
Aggiungi e rimuovi regole firewall Amministratore sicurezza
Creare istanze Amministratore istanze Compute

Per ulteriori informazioni, consulta le seguenti guide:

Configura istanze e gruppi di istanze

Questa sezione mostra come creare istanze e gruppi di istanze, quindi aggiungere istanze ai gruppi di istanze. Normalmente un sistema di produzione utilizzerebbe i gruppi di istanze gestite in base ai modelli di istanza, ma questa configurazione è più rapida per i test iniziali.

Creare istanze

A scopo di test, installa Apache su quattro istanze, due in ciascuno dei due gruppi di istanze. In genere, non è previsto l'utilizzo del bilanciamento del carico del proxy SSL per il traffico HTTP, ma Apache è comunemente utilizzato ed è facile da configurare per i test.

Crea queste istanze con il tag ssl-lb, che verrà utilizzato dalla regola firewall in un secondo momento.

Console

Creare istanze

  1. Vai alla pagina Istanze VM in Google Cloud Console.

    Vai alla pagina Istanze VM

  2. Fai clic su Crea istanza.

  3. Imposta Nome su ig-us-central1-1.

  4. Imposta la Zona su us-central1-b.

  5. Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy per visualizzare le impostazioni avanzate.

  6. In Gestione, compila il campo Tag con ssl-lb.

  7. Imposta lo Script di avvio come segue:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  8. Lascia i valori predefiniti per gli altri campi.

  9. Fai clic su Crea.

  10. Crea l'elemento ig-us-central1-2 con le stesse impostazioni, tranne per lo script di avvio impostato come segue:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html

  11. Crea l'elemento ig-us-east1-1 con le stesse impostazioni, tranne che per Zona impostata su us-east1-b e Script di avvio impostato come segue:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html

  12. Crea l'elemento ig-us-east1-2 con le stesse impostazioni, tranne che per Zona impostata su us-east1-b e Script di avvio impostato come segue:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html

gcloud

  1. Crea ig-us-central1-1 nella zona us-central1-b.

    gcloud compute instances create ig-us-central1-1 \
       --image-family debian-9 \
       --image-project debian-cloud \
       --tags ssl-lb \
       --zone us-central1-b \
       --metadata startup-script="#! /bin/bash
         sudo apt-get update
         sudo apt-get install apache2 -y
         sudo a2ensite default-ssl
         sudo a2enmod ssl
         sudo service apache2 restart
         echo '<!doctype html><html><body><h1>ig-us-central1-1</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  2. Crea ig-us-central1-2 nella zona us-central1-b.

    gcloud compute instances create ig-us-central1-2 \
      --image-family=debian-9 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-central1-b \
       --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-central1-2</h1></body></html>' | sudo tee /var/www/html/index.html
         EOF"
    
  3. Crea ig-us-east1-1 nella zona us-east1-b.

    gcloud compute instances create ig-us-east1-1 \
      --image-family=debian-9 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-1</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    
  4. Crea ig-us-east1-2 nella zona us-east1-b.

    gcloud compute instances create ig-us-east1-2 \
      --image-family=debian-9 \
      --image-project=debian-cloud \
      --tags=ssl-lb \
      --zone=us-east1-b \
      --metadata=startup-script="#! /bin/bash
        sudo apt-get update
        sudo apt-get install apache2 -y
        sudo a2ensite default-ssl
        sudo a2enmod ssl
        sudo service apache2 restart
        echo '<!doctype html><html><body><h1>ig-us-east1-2</h1></body></html>' | sudo tee /var/www/html/index.html
        EOF"
    

Crea un gruppo di istanze per ogni zona e aggiungi istanze

Console

  1. Vai alla pagina Gruppi di istanze in Google Cloud Console.

    Vai alla pagina Gruppi di istanze

  2. Fai clic su Crea gruppo di istanze.

  3. Imposta il Nome su us-ig1.

  4. Imposta la Zona su us-central1-b.

  5. In Mappatura delle porte, fai clic su Aggiungi porta. Un bilanciatore del carico invia il traffico a un gruppo di istanze attraverso una porta denominata. Crea una porta denominata per mappare il traffico in entrata a un numero di porta specifico.

    1. Inserisci un Nome porta di ssl-lb e un Numero di porta di 443.
  6. In Definizione dell'istanza, fai clic su Seleziona istanze esistenti.

  7. Da Istanze VM, seleziona ig-us-central1-1 e ig-us-central1-2.

  8. Non modificare le altre impostazioni.

  9. Fai clic su Crea.

  10. Ripeti i passaggi, ma imposta quanto segue:

    • Nome: us-ig2
    • Zona: us-east1-b
    • Nome del trasferimento di ssl-lb e Numeri di porta di 443
    • Istanze: ig-us-east1-1 e ig-us-east1-2.
  11. Conferma che ora hai due gruppi di istanze, ciascuno con due istanze.

gcloud

  1. Crea il gruppo di istanze us-ig1.

    gcloud compute instance-groups unmanaged create us-ig1 --zone us-central1-b
    
  2. Imposta una porta denominata per il gruppo di istanze.

    gcloud compute instance-groups set-named-ports us-ig1 \
        --named-ports=ssl-lb:443 \
        --zone=us-central1-b
    
  3. Aggiungi ig-us-central1-1 e ig-us-central1-2 a us-ig1

    gcloud compute instance-groups unmanaged add-instances us-ig1 \
        --instances=ig-us-central1-1,ig-us-central1-2 \
        --zone=us-central1-b
    
  4. Crea il gruppo di istanze us-ig2.

    gcloud compute instance-groups unmanaged create us-ig2 --zone us-east1-b
    
  5. Imposta una porta denominata per il gruppo di istanze.

    gcloud compute instance-groups set-named-ports us-ig2 \
        --named-ports=ssl-lb:443 \
        --zone=us-east1-b
    
  6. Aggiungi ig-us-east1-1 e ig-us-east1-2 a us-ig2

    gcloud compute instance-groups unmanaged add-instances us-ig2 \
         --instances=ig-us-east1-1,ig-us-east1-2 \
         --zone=us-east1-b
    

Ora hai un gruppo di istanze in ciascuna delle due aree geografiche, ciascuna con due istanze.

Crea una regola firewall per il bilanciatore del carico SSL

Configura il firewall in modo da consentire il traffico dal bilanciatore del carico e il controllo di integrità verso le istanze.

Console

  1. Vai alla pagina Firewall in Google Cloud Console.
    Vai alla pagina Firewall
  2. Fai clic su Crea regola firewall.
  3. Nel campo Nome, inserisci allow-ssl-lb-and-health.
  4. In Rete, seleziona predefinita.
  5. In Target, seleziona Tag di destinazione specificati.
  6. Imposta Tag di destinazione su ssl-lb.
  7. Imposta il filtro sorgente su Intervalli IPv4.
  8. Imposta gli intervalli IPv4 di origine su 130.211.0.0/22,35.191.0.0/16.
  9. Nella sezione Protocolli e porte, imposta Protocolli e porte su tcp:443.
  10. Fai clic su Crea.

gcloud

gcloud compute firewall-rules create allow-ssl-lb-and-health \
   --source-ranges=130.211.0.0/22,35.191.0.0/16 \
   --target-tags=ssl-lb \
   --allow=tcp:443

Se utilizzi un certificato gestito da Google, verifica che lo stato della risorsa certificato sia ATTIVATO. Per ulteriori informazioni, consulta lo stato delle risorse dei certificati SSL gestiti da Google.

gcloud compute ssl-certificates list

Configura il bilanciatore del carico

Console

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.

    Vai alla pagina Bilanciamento del carico

  2. Fai clic su Crea bilanciatore del carico.

  3. In Bilanciamento del carico TCP, fai clic su Avvia configurazione.

  4. Nella sezione Solo per Internet o interno seleziona Da Internet alle mie VM.

  5. In Più aree geografiche o singola area geografica, seleziona Più aree geografiche (o ancora non saprei).

Configurazione backend

  1. Fai clic su Configurazione backend.
  2. Imposta il Nome del bilanciatore del carico su my-ssl-lb.
  3. Imposta il Protocollo su SSL.
  4. In Porta denominata, inserisci ssl-lb.
  5. Accetta il valore predefinito di Timeout.
  6. Lascia il tipo di backend impostato su Gruppi di istanze.
  7. In Nuovo backend, seleziona il gruppo di istanze us-ig1.
  8. Imposta Trasferisci numeri su 443.
  9. Non modificare le altre impostazioni.
  10. In Nuovo backend, seleziona il gruppo di istanze us-ig2.
  11. Imposta Trasferisci numeri su 443.
  12. Non modificare le altre impostazioni.
  13. Fai clic su Fine.
  14. In Controllo di integrità, seleziona Crea controllo di integrità.
    1. Imposta il Nome del controllo di integrità su my-ssl-health-check.
    2. Imposta Protocollo su SSL.
    3. Non modificare le altre impostazioni.
    4. Fai clic su Salva e continua.
  15. Verifica che sia presente un segno di spunta verde accanto a Configurazione backend in Google Cloud Console. In caso contrario, assicurati di aver completato tutti i passaggi riportati sopra.

Configurazione frontend

  1. Fai clic su Configurazione frontend.
  2. In Nuovo IP e porta frontend, inserisci un Nome di my-ssl-lb-forwarding-rule.
  3. Imposta Protocollo su SSL.
  4. In Indirizzo IP, seleziona Crea indirizzo IP.
    1. Inserisci un Nome di ssl-lb-static-ipv4.
    2. Fai clic su Prenota.
  5. In Certificato, seleziona Crea un nuovo certificato.
    1. Inserisci un Nome di my-ssl-cert.
    2. Se scegli Carica il mio certificato, completa i seguenti passaggi:
      1. Incolla il tuo certificato o fai clic su Carica per passare al file del certificato.
      2. Incolla la tua chiave privata o fai clic su Carica per aprire il file della chiave privata.
    3. Se scegli Crea certificato gestito da Google, inserisci un dominio.
      1. Per inserire altri domini, fai clic su Aggiungi dominio.
      2. Fai clic su Crea.
    4. Per aggiungere risorse dei certificati oltre alla risorsa del certificato SSL principale, fai clic su Certificati aggiuntivi. Quindi, seleziona un altro certificato dal menu Certificati o fai clic su Crea un nuovo certificato e segui le istruzioni riportate sopra.
  6. (Facoltativo) Per creare un criterio SSL:
    1. Nella sezione Criterio SSL, seleziona Crea un criterio.
    2. Inserisci un Nome di my-ssl-policy.
    3. In Versione TLS minima, seleziona TLS 1.0.
    4. Per Profilo, seleziona Moderno. Vengono visualizzate le Funzionalità attivate e le Funzionalità disattivate.
    5. Fai clic su Crea.
  7. (Facoltativo) Se vuoi, attiva l'opzione Protocollo proxy.
  8. Fai clic su Fine.
  9. Fai clic su Aggiungi IP e porta frontend.
  10. Inserisci un Nome di my-ssl-lb-ipv6-forwarding-rule.
  11. Imposta la versione IP su IPv6.
  12. In Indirizzo IP, seleziona Crea indirizzo IP.
    1. Inserisci un Nome di ssl-lb-static-ipv6.
    2. Fai clic su Prenota.
  13. In Certificato, seleziona my-ssl-cert.
    1. Per aggiungere le risorse dei certificati oltre alla risorsa principale del certificato SSL, seleziona un certificato dall'elenco Certificati o fai clic su Crea un nuovo certificato.
  14. (Facoltativo) Utilizza un criterio SSL o attiva il protocollo PROXY, se vuoi.
  15. Fai clic su Fine.
  16. Verifica che sia presente un segno di spunta verde accanto a Configurazione frontend in Google Cloud Console. In caso contrario, assicurati di aver completato tutti i passaggi riportati sopra.

Esamina e finalizza

  1. Fai clic su Esamina e finalizza.
  2. Ricontrolla le impostazioni.
  3. Fai clic su Crea.

gcloud

  1. Creare un controllo di integrità.

    gcloud compute health-checks create ssl my-ssl-health-check --port=443
    
  2. Crea un servizio di backend.

    gcloud compute backend-services create my-ssl-lb \
      --global-health-checks \
      --protocol=SSL \
      --port-name=ssl-lb \
      --health-checks=my-ssl-health-check \
      --timeout=5m \
      --global
    

    In alternativa, puoi configurare la comunicazione non criptata dal bilanciatore del carico alle istanze con --protocol=TCP.

  3. Aggiungi gruppi di istanze al tuo servizio di backend.

    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig1 \
      --instance-group-zone=us-central1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
    gcloud compute backend-services add-backend my-ssl-lb \
      --instance-group=us-ig2 \
      --instance-group-zone=us-east1-b \
      --balancing-mode=UTILIZATION \
      --max-utilization=0.8 \
      --global
    
  4. Configura la risorsa del certificato SSL.

    Se utilizzi certificati autogestiti, devi già disporre di almeno un certificato SSL da caricare. In caso contrario, consulta la sezione Certificati SSL. Quando utilizzi più certificati SSL, devi crearli uno alla volta.

    Se utilizzi certificati SSL autogestiti e non hai una chiave privata e un certificato firmato, puoi creare e utilizzare un certificato autofirmato ai fini di test.

    Per creare una risorsa di certificato SSL autogestita:

    gcloud compute ssl-certificates create my-ssl-cert \
      --certificate=[CRT_FILE_PATH] \
      --private-key=[KEY_FILE_PATH]
    

    Per creare una risorsa di certificato SSL gestita da Google:

      gcloud beta compute ssl-certificates create www-ssl-cert \
        --domains=[DOMAIN_1],[DOMAIN_2]
    
  5. Configura un proxy SSL di destinazione.

    Il bilanciamento del carico del proxy SSL supporta la creazione di un proxy SSL di destinazione che abbia da uno a quindici certificati SSL. Prima di eseguire questo comando, devi creare una risorsa certificato SSL per ogni certificato.

    Se vuoi attivare l'intestazione proxy, impostala su PROXY_V1 anziché su none. Se vuoi, puoi collegare un criterio SSL al proxy di destinazione. Prima di tutto, crea il criterio.

    gcloud compute ssl-policies create my-ssl-policy \
      --profile=MODERN \
      --min-tls-version=1.0
    

    Quindi ha associato il criterio al proxy di destinazione.

    gcloud compute target-ssl-proxies create my-ssl-lb-target-proxy \
      --backend-service=my-ssl-lb \
      --ssl-certificates=[SSL_CERT_1][,[SSL_CERT_2],...] \
      --ssl-policy=my-ssl-policy \
      --proxy-header=NONE
    
  6. Prenota indirizzi IP statici globali.

    I tuoi clienti utilizzano questi indirizzi IP per accedere al servizio con bilanciamento del carico.

    gcloud compute addresses create ssl-lb-static-ipv4 \
          --ip-version=IPV4 \
          --global
    
    gcloud compute addresses create ssl-lb-static-ipv6 \
          --ip-version=IPV6 \
          --global
    
  7. Configura le regole di forwarding globali.

    Crea regole di forwarding globali associate al proxy di destinazione. Sostituisci LB_STATIC_IP e LB_STATIC_IPV6 con gli indirizzi IP generati in Prenota indirizzi IP statici globali.

    gcloud compute forwarding-rules create my-ssl-lb-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IP \
      --ports=443
    
    gcloud compute forwarding-rules create my-ssl-lb-ipv6-forwarding-rule \
      --global \
      --target-ssl-proxy=my-ssl-lb-target-proxy \
      --address=LB_STATIC_IPV6 \
      --ports=443
    

Connetti il dominio al bilanciatore del carico

Dopo aver creato il bilanciatore del carico, prendi nota dell'indirizzo IP associato al bilanciatore del carico, ad esempio 30.90.80.100. Per indirizzare il tuo dominio al bilanciatore del carico, crea un record A utilizzando il tuo servizio di registrazione del dominio. Se hai aggiunto più domini al tuo certificato SSL, devi aggiungere un record A per ognuno di essi, ognuno dei quali punta all'indirizzo IP del bilanciatore del carico. Ad esempio, per creare record A per www.example.com e example.com:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Se utilizzi Google Domains, consulta la pagina di assistenza di Google Domains per ulteriori informazioni.

Testa il bilanciatore del carico

Nel browser web, connettiti al tuo indirizzo IP statico tramite HTTPS. In questa configurazione di test, le istanze utilizzano certificati autofirmati. Pertanto, la prima volta che accedi a una pagina verrà visualizzato un avviso nel browser. Fai clic sull'avviso per visualizzare la pagina effettiva. Sostituisci [IP_ADDRESS] con l'indirizzo IPv4 o IPv6 creato in precedenza.

https://[IP_ADDRESS]

Dovresti vedere uno degli host della tua area geografica più vicina. Ricarica la pagina finché non vedi l'altra istanza in quell'area geografica. Per visualizzare le istanze dell'altra area geografica, interrompi le istanze nell'area geografica più vicina.

In alternativa, puoi utilizzare curl dalla riga di comando della tua macchina locale. Se utilizzi un certificato autofirmato sul proxy SSL, devi anche specificare -k. L'opzione curl -k consente il funzionamento di curl anche se hai un certificato autofirmato o nessun certificato. Se hai un certificato normale, puoi rimuovere questo parametro. Utilizza solo il parametro -k per testare il tuo sito. In circostanze normali, un certificato valido è una misura di sicurezza importante e gli avvisi relativi ai certificati non devono essere ignorati.

Sostituisci [IP_ADDRESS] con l'indirizzo IPv4 o IPv6 creato in precedenza.

curl -k https://[IP_ADDRESS]

Se non riesci a raggiungere il bilanciatore del carico, prova a seguire la procedura descritta in Risolvere i problemi di configurazione.

Opzioni di configurazione aggiuntive

Questa sezione espande l'esempio di configurazione per fornire opzioni di configurazione alternative e aggiuntive. Tutte le attività sono facoltative. Puoi eseguire le operazioni in qualsiasi ordine.

Imposta protocollo PROXY per la conservazione delle informazioni di connessione del client

Google Cloud Load Balancing con SSL SSL termina le connessioni SSL dal client e crea nuove connessioni alle istanze. Di conseguenza, l'IP client e le informazioni sulla porta originali non vengono conservati per impostazione predefinita.

Per conservare e inviare le informazioni di connessione originali alle istanze, abilita il protocollo PROXY (versione 1) sul frontend del bilanciatore del carico. Questo protocollo invia un'intestazione aggiuntiva contenente l'indirizzo IP di origine, l'indirizzo IP di destinazione e i numeri di porta all'istanza come parte della richiesta.

Puoi anche impostare il protocollo PROXY per i controlli di integrità TCP e SSL.

Assicurati che le istanze di backend del bilanciatore del carico SSL SSL utilizzino server HTTP(S) che supportano le intestazioni di protocollo PROXY. Se i server HTTP(S) non sono configurati per supportare le intestazioni di protocollo PROXY, le istanze di backend restituiscono risposte vuote. Ad esempio, il protocollo PROXY non funziona con il software Apache HTTP Server. Puoi utilizzare un altro software server web, come Nginx.

Se imposti il protocollo PROXY per il traffico utenti, devi impostarlo anche per i controlli di integrità. Se stai controllando contenuti sull'integrità e sulla pubblicazione della stessa porta, imposta il controllo di integrità del --proxy-header in modo che corrisponda all'impostazione del bilanciatore del carico.

L'intestazione del protocollo PROXY è in genere una singola riga di testo leggibile dall'utente con il seguente formato:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

In questo esempio, l'indirizzo IP del client è 192.0.2.1, l'indirizzo IP del bilanciamento del carico è 198.51.100.1, la porta del client è 15221 e la porta di destinazione è 443:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 443\r\n

Quando l'indirizzo IP del client non è noto, il bilanciatore del carico genera un'intestazione protocollo PROXY nel seguente formato:

PROXY UNKNOWN\r\n

Aggiorna l'intestazione del protocollo PROXY per un proxy di destinazione esistente

L'esempio di configurazione del bilanciatore del carico in questa pagina mostra come abilitare l'intestazione del protocollo PROXY durante la creazione del bilanciatore del carico del proxy SSL. Segui questi passaggi per modificare l'intestazione del protocollo PROXY per un proxy SSL di destinazione esistente.

Console

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.

    Vai alla pagina Bilanciamento del carico

  2. Fai clic su Modifica per il bilanciatore del carico.

  3. Fai clic su Configurazione frontend.

  4. Modifica il valore del campo Protocollo proxy.

  5. Fai clic su Update (Aggiorna) per salvare le modifiche.

gcloud

gcloud compute target-ssl-proxies update my-ssl-lb-target-proxy \
    --proxy-header=[NONE | PROXY_V1]

Configura affinità sessione

Queste procedure mostrano come aggiornare un servizio di backend per il bilanciatore del carico SSL di esempio in modo che il servizio di backend utilizzi l'affinità IP client.

Quando è attivata l'affinità IP client, il bilanciatore del carico indirizza le richieste di un particolare client alla stessa VM di backend in base a un hash creato dall'indirizzo IP del client e all'indirizzo IP del bilanciatore del carico (l'indirizzo IP esterno di una regola di forwarding esterna).

Console

Per attivare l'affinità sessione IP client:

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.

    Vai alla pagina Bilanciamento del carico

  2. Fai clic su Backend.

  3. Fai clic su my-ssl-lb (il nome del servizio di backend che hai creato per questo esempio) e fai clic su Edit (Modifica).

  4. Nella pagina Dettagli del servizio di backend, fai clic su Configurazione avanzata.

  5. In Affinità sessione, seleziona IP client dal menu.

  6. Fai clic su Update (Aggiorna).

gcloud

Utilizza il seguente comando gcloud per aggiornare il servizio di backend my-ssl-lb, specificando l'affinità sessione IP del client:

gcloud compute backend-services update my-ssl-lb \
    --global \
    --session-affinity=CLIENT_IP

API

Per impostare l'affinità sessione IP del client, effettua una richiesta PATCH al metodo backendServices/patch.

PATCH https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/us-west1/backendServices/my-ssl-lb
{
  "sessionAffinity": "CLIENT_IP"
}

Abilita svuotamento della connessione

Puoi abilitare lo svuotamento della connessione sui servizi di backend per garantire un'interruzione minima per gli utenti quando un'istanza che gestisce il traffico viene terminata, rimossa manualmente o rimossa da un gestore della scalabilità automatica. Per saperne di più sullo svuotamento della connessione, consulta la documentazione sullo svuotamento della connessione.

Risolvere i problemi di configurazione

Se non riesci a caricare le pagine quando provi ad accedere al tuo indirizzo IP del bilanciatore del carico, prova a seguire la procedura indicata di seguito per risolvere i problemi di configurazione.

Verifica l'integrità delle istanze

Verifica che le istanze siano in SALUTE.

  gcloud compute backend-services get-health my-ssl-lb
  

Verificare che la regola firewall consenta il traffico

  • Il controllo di integrità e il bilanciatore del carico richiedono entrambi questi indirizzi IP per consentire il traffico: 130.211.0.0/22 e 35.191.0.0/16.
  • Se utilizzi SSL tra il bilanciatore del carico e le istanze, usa i controlli di integrità SSL. Assicurati che la regola firewall consenta tcp:443 dagli intervalli di indirizzi IP di origine 130.211.0.0/22 e 35.191.0.0/16.
  • Se utilizzi TCP tra il bilanciatore del carico e le istanze, utilizza i controlli di integrità TCP. Assicurati che la regola firewall consenta tcp:80 dagli intervalli IP di origine 130.211.0.0/22 e 35.191.0.0/16.
  • Se utilizzi i tag istanza, assicurati che il tag sia elencato in TARGET_TAGS nella regola firewall e che tutte le istanze abbiano quel tag. In questo esempio, le istanze sono codificate con ssl-lb.
gcloud compute firewall-rules list
NAME                      NETWORK SRC_RANGES                  RULES                        SRC_TAGS TARGET_TAGS
allow-ssl-lb-and-health  default 130.211.0.0/22,35.191.0.0/16 tcp:443                      ssl-lb

Prova a raggiungere le singole istanze

Imposta temporaneamente una regola firewall che ti consenta di accedere singolarmente alle istanze e prova a caricare una pagina da un'istanza specifica.

  1. Apri il firewall per consentire il traffico da qualsiasi origine alle istanze codificate. A tale scopo, crea un filtro di origine che imposti l'intervallo IP di origine su 0.0.0.0/0 per il traffico HTTPS verso istanze con il tag ssl-lb.

    gcloud compute firewall-rules create allow-ssl-0-0-0-0 \
        --source-ranges=0.0.0.0/0 \
        --target-tags=ssl-lb \
        --allow=tcp:443
    
  2. Cerca l'indirizzo EXTERNAL_IP di una delle istanze.

    gcloud compute instances list
    
    NAME             ZONE           MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP    STATUS
    ig-us-central1-1 us-central1-b  n1-standard-1             10.240.0.8  EXTERNAL_IP RUNNING
    ig-us-central1-2 us-central1-b  n1-standard-1             10.240.0.11 EXTERNAL_IP RUNNING
    ig-us-east1-1    us-east1-b     n1-standard-1             10.240.0.12 EXTERNAL_IP RUNNING
    ig-us-east1-2    us-east1-b     n1-standard-1             10.240.0.13 EXTERNAL_IP RUNNING
  3. Accedi a una o più istanze direttamente dal browser.

    https://<var>EXTERNAL_IP</var>
    
  4. Se le tue istanze non sono accessibili da questo metodo, assicurati che il software sia in esecuzione correttamente. In caso contrario, assicurati che la regola del firewall del bilanciatore del carico sia corretta.

    gcloud compute firewall-rules describe allow-ssl-lb-and-health
    
    allowed:
      IPProtocol: tcp
      ports:
      '443'
    creationTimestamp: '2016-02-20T22:27:15.094-08:00'
    description: ''
    id: '5304629236729177644'
    kind: compute#firewall
    name: allow-130-211-0-0-22-ssl
    network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default
    selfLink: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/firewalls/allow-ssl-lb-and-health
    sourceRanges:
      130.211.0.0/22,35.191.0.0/16
    targetTags:
      ssl-lb
  5. Quando hai la certezza che le istanze funzionino, rimuovi la regola "firewall" ovunque ti trovi.

    gcloud compute firewall-rules delete allow-ssl-0-0-0-0
    

Passaggi successivi