Questa guida utilizza un esempio per insegnarti a configurare il failover per un bilanciatore del carico di rete passthrough interno di Google Cloud. Prima di seguire questa guida, acquisisci familiarità con quanto segue:
- Concetti sul bilanciatore del carico di rete passthrough interno
- Concetti sul failover per i bilanciatori del carico di rete passthrough interni
- Panoramica delle regole firewall
- Concetti sul controllo di integrità
Autorizzazioni
Per seguire questa guida, devi 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 richiesto |
---|---|
Crea reti, subnet e componenti del bilanciatore del carico | Amministratore di rete |
Aggiungere e rimuovere regole firewall | Amministratore della sicurezza |
Creazione delle istanze | Amministratore istanze Compute |
Per ulteriori informazioni, consulta le seguenti guide:
Configurazione
Questa guida mostra come configurare e testare un bilanciatore del carico di rete passthrough interno che utilizza il failover. I passaggi descritti in questa sezione spiegano come configurare quanto segue:
- Una rete VPC di esempio con subnet personalizzate
- Regole firewall che consentono le connessioni in entrata alle VM di backend
- VM di backend:
- Un backend principale in un gruppo di istanze non gestite nella zona
us-west1-a
- Un backend di failover in un gruppo di istanze non gestite nella zona
us-west1-c
- Un backend principale in un gruppo di istanze non gestite nella zona
- Una VM client per testare le connessioni e osservare il comportamento del failover
- I seguenti componenti del bilanciatore del carico di rete passthrough interno:
- Un controllo di integrità per il servizio di backend
- Un servizio di backend interno nella regione
us-west1
per gestire la distribuzione delle connessioni tra le VM di backend - Una regola di forwarding interna e un indirizzo IP interno per il frontend del bilanciatore del carico
L'architettura di questo esempio ha il seguente aspetto:
In questo esempio, i gruppi di istanze non gestite vengono utilizzati sia per i backend principali sia per quelli di failover. Per ulteriori informazioni, consulta i gruppi di istanze supportati.
Configurazione di una rete, una regione e una subnet
Questo esempio utilizza la seguente rete VPC, regione e subnet:
Rete: la rete è una rete VPC in modalità personalizzata denominata
lb-network
.Regione: la regione è
us-west1
.Subnet: la subnet
lb-subnet
utilizza l'intervallo IP10.1.2.0/24
.
Per creare la rete e la sottorete di esempio, segui questi passaggi.
Console
Nella console Google Cloud, vai alla pagina Reti VPC.
Fai clic su Crea rete VPC.
Inserisci un nome per
lb-network
.Nella sezione Subnet:
- Imposta Modalità di creazione subnet su Personalizzata.
- Nella sezione Nuova subnet, inserisci le seguenti informazioni:
- Nome:
lb-subnet
- Regione:
us-west1
- Intervallo di indirizzi IP:
10.1.2.0/24
- Fai clic su Fine.
- Nome:
Fai clic su Crea.
gcloud
Crea la rete VPC personalizzata:
gcloud compute networks create lb-network --subnet-mode=custom
Crea una subnet nella rete
lb-network
nella regioneus-west1
:gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
API
Invia una richiesta POST
al metodo
networks.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/networks
{ "routingConfig": { "routingMode": "REGIONAL" }, "name": "lb-network", "autoCreateSubnetworks": false }
Invia una richiesta POST
al metodo
subnetworks.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/subnetworks
{ "name": "lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "ipCidrRange": "10.1.2.0/24", "privateIpGoogleAccess": false }
Configurazione delle regole del firewall
Questo esempio utilizza le seguenti regole firewall:
fw-allow-lb-subnet
: una regola di ingresso, applicabile a tutti i target della rete VPC, che consente il traffico proveniente da origini nell'intervallo10.1.2.0/24
. Queste regole consentono il traffico in entrata da qualsiasi origine all'interno dellb-subnet
alle istanze (VM) bilanciate in base al carico.fw-allow-ssh
: una regola in entrata applicata alle istanze sottoposte a bilanciamento del carico, che consente la connettività SSH in entrata sulla porta TCP 22 da qualsiasi indirizzo. Puoi scegliere un intervallo IP di origine più restrittivo per questa regola. Ad esempio, puoi specificare gli intervalli IP dei sistemi da cui prevedi di avviare le sessioni SSH. Questo esempio utilizza il tag di destinazioneallow-ssh
per identificare le VM a cui si applica la regola firewall.fw-allow-health-check
: una regola in entrata, applicabile alle istanze bilanciate in base al carico, che consente il traffico proveniente dai sistemi di controllo di integrità di Google Cloud (130.211.0.0/22
e35.191.0.0/16
). Questo esempio utilizza il tag targetallow-health-check
per identificare le istanze a cui deve essere applicato.
Senza queste regole firewall, la regola default-deny per il traffico in entrata blocca il traffico in entrata verso le istanze di backend.
Console
Nella console Google Cloud, vai alla pagina Criteri firewall.
Fai clic su Crea regola firewall e inserisci le seguenti informazioni per creare la regola che consente il traffico nella subnet:
- Nome:
fw-allow-lb-subnet
- Rete:
lb-network
- Priorità:
1000
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: consenti
- Destinazioni: Tutte le istanze nella rete
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
10.1.2.0/24
- Protocolli e porte: Consenti tutto
- Nome:
Fai clic su Crea.
Fai di nuovo clic su Crea regola firewall per creare la regola per consentire le connessioni SSH in entrata:
- Nome:
fw-allow-ssh
- Rete:
lb-network
- Priorità:
1000
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: consenti
- Target: Tag di destinazione specificati
- Tag di destinazione:
allow-ssh
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
0.0.0.0/0
- Protocolli e porte: scegli Protocolli e porte specificati, quindi
digita:
tcp:22
- Nome:
Fai clic su Crea.
Fai clic su Crea regola firewall una terza volta per creare la regola per consentire i controlli di integrità di Google Cloud:
- Nome:
fw-allow-health-check
- Rete:
lb-network
- Priorità:
1000
- Direzione del traffico: in entrata
- Azione in caso di corrispondenza: consenti
- Target: Tag di destinazione specificati
- Tag di destinazione:
allow-health-check
- Filtro di origine: intervalli IPv4
- Intervalli IPv4 di origine:
130.211.0.0/22
e35.191.0.0/16
- Protocolli e porte: Consenti tutto
- Nome:
Fai clic su Crea.
gcloud
Crea la regola firewall
fw-allow-lb-subnet
per consentire la comunicazione con la subnet:gcloud compute firewall-rules create fw-allow-lb-subnet \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Crea la regola firewall
fw-allow-ssh
per consentire la connettività SSH alle VM con il tag di reteallow-ssh
. Se omettisource-ranges
, Google Cloud interpreta la regola come qualsiasi origine.gcloud compute firewall-rules create fw-allow-ssh \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-ssh \ --rules=tcp:22
Crea la regola
fw-allow-health-check
per consentire i controlli di integrità di Google Cloud.gcloud compute firewall-rules create fw-allow-health-check \ --network=lb-network \ --action=allow \ --direction=ingress \ --target-tags=allow-health-check \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
API
Crea la regola firewall fw-allow-lb-subnet
inviando una richiesta POST
al metodo firewalls.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "10.1.2.0/24" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regola firewall fw-allow-ssh
inviando una richiesta POST
al metodo firewalls.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-ssh", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "0.0.0.0/0" ], "targetTags": [ "allow-ssh" ], "allowed": [ { "IPProtocol": "tcp", "ports": [ "22" ] } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Crea la regola firewall fw-allow-health-check
inviando una richiesta POST
al metodo firewalls.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/global/firewalls
{ "name": "fw-allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "priority": 1000, "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "targetTags": [ "allow-health-check" ], "allowed": [ { "IPProtocol": "tcp" }, { "IPProtocol": "udp" }, { "IPProtocol": "icmp" } ], "direction": "INGRESS", "logConfig": { "enable": false }, "disabled": false }
Creazione di VM e gruppi di istanze di backend
In questo passaggio, creerai le VM di backend e i gruppi di istanze non gestite:
- Il gruppo di istanze
ig-a
inus-west1-a
è un backend primario con due VM:vm-a1
vm-a2
- Il gruppo di istanze
ig-c
inus-west1-c
è un backend di failover con due VM:vm-c1
vm-c2
I backend principali e di failover vengono posizionati in zone separate per la chiarezza delle istruzioni e per gestire il failover in caso di interruzione di una zona.
Ogni VM principale e di backup è configurata per eseguire un server web Apache sulle porte TCP 80 e 443. A ogni VM viene assegnato un indirizzo IP interno nel lb-subnet
per l'accesso client e un indirizzo IP esterno (pubblico) temporaneo per l'accesso SSH.
Per informazioni sulla rimozione degli indirizzi IP esterni, consulta
Rimuovere gli indirizzi IP esterni dalle VM di backend.
Per impostazione predefinita, Apache è configurato per eseguire il binding a qualsiasi indirizzo IP. I bilanciatori del carico di rete passthrough interni inviano i pacchetti preservando l'indirizzo IP di destinazione.
Assicurati che il software del server in esecuzione sulle VM principali e di backup sia in ascolto sull'indirizzo IP della regola di forwarding interna del bilanciatore del carico. Se configuri più regole di forwarding interno, assicurati che il software ascolti l'indirizzo IP interno associato a ciascuna. L'indirizzo IP di destinazione di un pacchetto consegnato a una VM di backend da un bilanciatore del carico di rete passthrough interno è l'indirizzo IP interno della regola di forwarding.
Per semplicità di istruzione, tutte le VM principali e di backup eseguono Debian GNU/Linux 10.
Console
Crea VM di backend
Nella console Google Cloud, vai alla pagina Istanze VM.
Ripeti i seguenti passaggi per creare quattro VM utilizzando le seguenti combinazioni di nome e zona.
- Nome:
vm-a1
, zona:us-west1-a
- Nome:
vm-a2
, zona:us-west1-a
- Nome:
vm-c1
, zona:us-west1-c
- Nome:
vm-c2
, zona:us-west1-c
- Nome:
Fai clic su Crea istanza.
Imposta il Nome come indicato nel passaggio 2.
In Regione, scegli
us-west1
e poi una Zona come indicato nel passaggio 2.Nella sezione Disco di avvio, assicurati che l'immagine selezionata sia Debian GNU/Linux 10 (buster). Fai clic su Scegli per modificare l'immagine, se necessario.
Fai clic su Opzioni avanzate.
Fai clic su Networking e configura i seguenti campi:
- In Tag di rete, inserisci
allow-health-check
eallow-ssh
. - In Interfacce di rete, seleziona quanto segue:
- Rete:
lb-network
- Subnet:
lb-subnet
- Rete:
- In Tag di rete, inserisci
Fai clic su Gestione. Inserisci lo script che segue nel campo Script di avvio. I contenuti dello script sono identici per tutte e quattro le VM:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Fai clic su Crea.
Creare gruppi di istanze
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Ripeti i seguenti passaggi per creare due gruppi di istanze non gestite, ciascuno con due VM, utilizzando queste combinazioni.
- Gruppo di istanze:
ig-a
, zona:us-west1-a
, VM:vm-a1
evm-a2
- Gruppo di istanze:
ig-c
, zona:us-west1-c
, VM:vm-c1
evm-c2
- Gruppo di istanze:
Fai clic su Crea gruppo di istanze.
Fai clic su Nuovo gruppo di istanze non gestite.
Imposta Nome come indicato nel passaggio 2.
Nella sezione Località, scegli
us-west1
per Regione, quindi scegli una Zona come indicato nel passaggio 2.In Rete, inserisci
lb-network
.In Subnet, inserisci
lb-subnet
.Nella sezione Istanze VM, aggiungi le VM come indicato nel passaggio 2.
Fai clic su Crea.
gcloud
Crea quattro VM eseguendo quattro volte il seguente comando, utilizzando queste quattro combinazioni per
VM_NAME
eZONE
. I contenuti dello script sono identici per tutte e quattro le VM.VM_NAME
divm-a1
eZONE
dius-west1-a
VM_NAME
divm-a2
eZONE
dius-west1-a
VM_NAME
divm-c1
eZONE
dius-west1-c
VM_NAME
divm-c2
eZONE
dius-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea i due gruppi di istanze non gestite in ogni zona:
gcloud compute instance-groups unmanaged create ig-a \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-c \ --zone=us-west1-c
Aggiungi le VM ai gruppi di istanze appropriati:
gcloud compute instance-groups unmanaged add-instances ig-a \ --zone=us-west1-a \ --instances=vm-a1,vm-a2 gcloud compute instance-groups unmanaged add-instances ig-c \ --zone=us-west1-c \ --instances=vm-c1,vm-c2
API
Crea quattro VM di backend inviando quattro richieste POST
al metodo
instances.insert
.
Per le quattro VM, utilizza i seguenti nomi e zone:
VM_NAME
divm-a1
eZONE
dius-west1-a
VM_NAME
divm-a2
eZONE
dius-west1-a
VM_NAME
divm-c1
eZONE
dius-west1-c
VM_NAME
divm-c2
eZONE
dius-west1-c
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoZONE
: la zona dell'istanzaDEBIAN_IMAGE_NAME
: il nome dell'immagine Debian per l'istanza. L'attualeDEBIAN_IMAGE_NAME
può essere ottenuto eseguendo il seguente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crea due gruppi di istanze inviando una richiesta POST
al metodo
instanceGroups.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-a", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-c", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Aggiungi istanze a ogni gruppo di istanze inviando una richiesta POST
al metodo
instanceGroups.addInstances
. Sostituisci PROJECT_ID
con l'ID del tuo progetto Google Cloud.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-a/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-c/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2" } ] }
Creazione di una VM client
Questo esempio crea una VM client (vm-client
) nella stessa regione del bilanciatore del carico. Il client viene utilizzato per dimostrare il funzionamento del failover.
Console
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic su Crea istanza.
Imposta Nome su
vm-client
.Imposta Zona su
us-west1-a
.Fai clic su Opzioni avanzate.
Fai clic su Networking e configura i seguenti campi:
- In Tag di rete, inserisci
allow-ssh
. - In Interfacce di rete, seleziona quanto segue:
- Rete:
lb-network
- Subnet:
lb-subnet
- Rete:
- In Tag di rete, inserisci
Fai clic su Crea.
gcloud
La VM client può trovarsi in qualsiasi zona della stessa regione del bilanciatore del carico e può utilizzare qualsiasi sottorete della regione. In questo esempio, il client si trova nella zona us-west1-a
e utilizza la stessa sottorete utilizzata dalle VM principali e di backup.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
API
Invia una richiesta POST
al metodo
instances.insert
.
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoDEBIAN_IMAGE_NAME
: il nome dell'immagine Debian per l'istanza. L'attualeDEBIAN_IMAGE_NAME
può essere ottenuto eseguendo il seguente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instances
{ "name": "vm-client", "tags": { "items": [ "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "vm-client", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "scheduling": { "preemptible": false }, "deletionProtection": false }
Configurazione dei componenti del bilanciatore del carico
Questi passaggi configurano tutti i componenti del bilanciatore del carico di rete passthrough interno, a partire dal controllo di integrità e dal servizio di backend fino ai componenti frontend:
Controllo di integrità: questo esempio utilizza un controllo di integrità HTTP che controlla semplicemente una risposta HTTP
200
(OK). Per ulteriori informazioni, consulta la sezione relativa ai controlli di integrità della panoramica del bilanciatore del carico di rete passthrough interno.Servizio di backend: poiché l'esempio trasmette il traffico HTTP attraverso il bilanciatore del carico, la configurazione specifica TCP, non UDP. Per illustrare il failover, questo servizio di backend ha un rapporto di failover pari a
0.75
.Regola di forwarding: questo esempio crea una singola regola di forwarding interno.
Indirizzo IP interno: in questo esempio, specifichiamo un indirizzo IP interno,
10.1.2.99
, quando creiamo la regola di forwarding.
Console
Avvia la configurazione
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
- Fai clic su Crea bilanciatore del carico.
- In Tipo di bilanciatore del carico, seleziona Bilanciatore del carico di rete (TCP/UDP/SSL) e fai clic su Avanti.
- Per Proxy o passthrough, seleziona Bilanciatore del carico passthrough e fai clic su Avanti.
- In Pubblico o interno, seleziona Interno e fai clic su Avanti.
- Fai clic su Configura.
Configurazione di base
- Imposta Nome su
be-ilb
. - Imposta Regione su
us-west1
. - Imposta Rete su
lb-network
. - Fai clic su Configurazione backend e apporta le seguenti modifiche:
- Per Backend, nella sezione Nuovo elemento, seleziona il gruppo di istanze
ig-a
. Assicurati che l'opzione Usa questo gruppo di istanze come gruppo di failover per il backup non sia selezionata. Fai clic su Fine. - Fai clic su Aggiungi backend. Nella sezione Nuovo elemento visualizzata,
seleziona il gruppo di istanze
ig-c
. Seleziona Utilizza questo gruppo di istanze come gruppo di failover per il backup. Fai clic su Fine. - In Controllo di integrità, scegli Crea un altro controllo di integrità,
inserisci le seguenti informazioni e fai clic su Salva e continua:
- Nome:
hc-http-80
- Protocollo:
HTTP
- Porta:
80
- Protocollo proxy:
NONE
- Percorso richiesta:
/
Tieni presente che quando utilizzi la console Google Cloud per creare il bilanciatore del carico, il controllo di integrità è globale. Se vuoi creare un controllo di integrità regionale, utilizzagcloud
o l'API.
- Nome:
- Fai clic su Configurazioni avanzate. Nella sezione Criterio di failover, configura quanto segue:
- Rapporto di failover:
0.75
- Seleziona Consenti svuotamento della connessione in caso di failover.
- Rapporto di failover:
- Verifica che sia presente un segno di spunta blu accanto a Configurazione backend prima di continuare. Se non è così, rivedi questo passaggio.
- Per Backend, nella sezione Nuovo elemento, seleziona il gruppo di istanze
- Fai clic su Configurazione frontend. Nella sezione Nuovi IP e porta frontend, apporta le seguenti modifiche:
- Nome:
fr-ilb
- Subnet:
ilb-subnet
- In IP interno, scegli Prenota un indirizzo IP interno statico,
inserisci le seguenti informazioni e fai clic su Prenota:
- Nome:
ip-ilb
- Indirizzo IP statico: Scelta manuale
- Indirizzo IP personalizzato:
10.1.2.99
- Nome:
- Porte: scegli Singola e inserisci
80
per il Numero porta. - Verifica che sia presente un segno di spunta blu accanto a Configurazione frontend prima di continuare. Se non è così, rivedi questo passaggio.
- Nome:
- Fai clic su Esamina e finalizza. Controlla le impostazioni.
- Fai clic su Crea.
gcloud
Crea un nuovo controllo di integrità HTTP per testare la connettività TCP alle VM sulla porta 80.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Crea il servizio di backend per il traffico HTTP:
gcloud compute backend-services create be-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1 \ --failover-ratio 0.75
Aggiungi il backend principale al servizio di backend:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-a \ --instance-group-zone=us-west1-a
Aggiungi il backend di failover al servizio di backend:
gcloud compute backend-services add-backend be-ilb \ --region=us-west1 \ --instance-group=ig-c \ --instance-group-zone=us-west1-c \ --failover
Crea una regola di forwarding per il servizio di backend. Quando crei la regola di forwarding, specifica
10.1.2.99
per l'IP interno nella subnet.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=be-ilb \ --backend-service-region=us-west1
API
Crea il controllo di integrità inviando una richiesta POST
al metodo
regionHealthChecks.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/regionHealthChecks
{ "name": "hc-http-80", "type": "HTTP", "httpHealthCheck": { "port": 80 } }
Crea il servizio di backend regionale inviando una richiesta POST
al metodo
regionBackendServices.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/backendServices
{ "name": "be-ilb", "backends": [ { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a", "balancingMode": "CONNECTION" }, { "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c", "balancingMode": "CONNECTION" "failover": true } ], "failoverPolicy": { "failoverRatio": 0.75 }, "healthChecks": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80" ], "loadBalancingScheme": "INTERNAL", "connectionDraining": { "drainingTimeoutSec": 0 } }
Crea la regola di forwarding inviando una richiesta POST
al metodo
forwardingRules.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/regions/us-west1/forwardingRules
{ "name": "fr-ilb", "IPAddress": "10.1.2.99", "IPProtocol": "TCP", "ports": [ "80", "8008", "8080", "8088" ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb", "networkTier": "PREMIUM" }
Test
Questi test mostrano come convalidare la configurazione del bilanciatore del carico e scoprire il suo comportamento previsto.
Procedura di test del client
Questa procedura contatta il bilanciatore del carico dalla VM client. Utilizzerai questa procedura per completare gli altri test.
Connettiti all'istanza VM client.
gcloud compute ssh vm-client --zone=us-west1-a
Invia una richiesta web al bilanciatore del carico utilizzando
curl
per contattare il relativo indirizzo IP.curl http://10.1.2.99
Prendi nota del testo restituito dal comando
curl
. Il nome della VM di backend che genera la risposta viene visualizzato in questo testo; ad esempio:Page served from: vm-a1
Test dello stato iniziale
Dopo aver configurato il bilanciatore del carico di esempio, tutte e quattro le VM di backend dovrebbero essere in stato corretto:
- le due VM principali,
vm-a1
evm-a2
- le due VM di backup,
vm-c1
evm-c2
Segui la procedura di test del client. Ripeti il secondo passaggio alcune volte. Il comportamento previsto è che il traffico venga gestito dalle due VM principali, vm-a1
e vm-a2
, perché entrambe sono in stato integro. Dovresti vedere che ogni VM principale fornisce una risposta circa la metà delle volte perché non è stata configurata alcuna affinità sessione per questo bilanciatore del carico.
Test del failover
Questo test simula l'errore di vm-a1
in modo da poter osservare il comportamento di failover.
Connettiti alla VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Arresta il server web Apache. Dopo dieci secondi, Google Cloud considera questa VM non operativa. Il controllo di integrità
hc-http-80
creato durante la configurazione utilizza l'intervallo di controllo predefinito di cinque secondi e la soglia di stato non integro di due sondaggi consecutivi non riusciti.sudo apachectl stop
Segui la procedura di test del client. Ripeti il secondo passaggio alcune volte. Il comportamento previsto è che il traffico venga pubblicato dalle due VM di backup
vm-c1
evm-c2
. Poiché solo una VM principale,vm-a2
, è integra, il rapporto tra VM principali integre e VM principali totali è0.5
. Questo numero è inferiore alla soglia di failover di0.75
, pertanto Google Cloud ha riconfigurato il pool attivo del bilanciatore del carico per utilizzare le VM di backup. Dovresti vedere che ogni VM di backup fornisce una risposta approssimativamente la metà delle volte a condizione che non sia stata configurata l'affinità sessione per questo bilanciatore del carico.
Test del failback
Questo test simula il failback riavviando il server Apache su vm-a1
.
Connettiti alla VM
vm-a1
.gcloud compute ssh vm-a1 --zone=us-west1-a
Avvia il server web Apache e attendi 10 secondi.
sudo apachectl start
Segui la procedura di test del client. Ripeti il secondo passaggio alcune volte. Il comportamento previsto è che il traffico venga pubblicato dalle due VM principali,
vm-a1
evm-a2
. Poiché entrambe le VM principali sono integre, il rapporto tra VM principali integre e VM principali totali è1.0
, superiore alla soglia di failover di0.75
, pertanto Google Cloud ha configurato il pool attivo in modo da utilizzare di nuovo le VM principali.
Aggiunta di altre VM di backend
Questa sezione estende la configurazione di esempio aggiungendo altre VM principali e di backup al bilanciatore del carico. A tale scopo, crea altri due gruppi di istanze di backend per dimostrare che puoi distribuire le VM principali e di backup tra più zone nella stessa regione:
- Un terzo gruppo di istanze,
ig-d
inus-west1-c
, funge da backend principale con due VM:vm-d1
vm-d2
- Un quarto gruppo di istanze,
ig-b
inus-west1-a
, funge da backend di failover con due VM:vm-b1
vm-b2
L'architettura modificata per questo esempio ha il seguente aspetto:
Creare altre VM e gruppi di istanze
Segui questi passaggi per creare le VM principali e di backup aggiuntive e i relativi gruppi di istanze non gestite corrispondenti.
Console
Crea VM di backend
Nella console Google Cloud, vai alla pagina Istanze VM.
Ripeti i seguenti passaggi per creare quattro VM utilizzando le seguenti combinazioni di nome e zona.
- Nome:
vm-b1
, zona:us-west1-a
- Nome:
vm-b2
, zona:us-west1-a
- Nome:
vm-d1
, zona:us-west1-c
- Nome:
vm-d2
, zona:us-west1-c
- Nome:
Fai clic su Crea istanza.
Imposta il Nome come indicato nel passaggio 2.
In Regione, scegli
us-west1
e poi una Zona come indicato nel passaggio 2.Nella sezione Disco di avvio, assicurati che l'immagine selezionata sia Debian GNU/Linux 10 (buster). Fai clic su Scegli per modificare l'immagine, se necessario.
Fai clic su Opzioni avanzate e apporta le seguenti modifiche:
- Fai clic su Networking e aggiungi i seguenti tag di rete:
allow-ssh
eallow-health-check
- Fai clic sul pulsante di modifica in Interfacce di rete e apporta le seguenti modifiche, quindi fai clic su Fine:
- Rete:
lb-network
- Subnet:
lb-subnet
- IP interno principale: Temporaneo (automatico)
- IP esterno: Temporaneo
- Rete:
Fai clic su Gestione. Nel campo Script di avvio, copia e incolla i seguenti contenuti dello script. I contenuti dello script sono identici per tutte e quattro le VM:
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
- Fai clic su Networking e aggiungi i seguenti tag di rete:
Fai clic su Crea.
Creare gruppi di istanze
Nella console Google Cloud, vai alla pagina Gruppi di istanze.
Ripeti i seguenti passaggi per creare due gruppi di istanze non gestite, ciascuno con due VM, utilizzando queste combinazioni.
- Gruppo di istanze:
ig-b
, zona:us-west1-a
, VM:vm-b1
evm-b2
- Gruppo di istanze:
ig-d
, zona:us-west1-c
, VM:vm-d1
evm-d2
- Gruppo di istanze:
Fai clic su Crea gruppo di istanze.
Fai clic su Nuovo gruppo di istanze non gestite.
Imposta Nome come indicato nel passaggio 2.
Nella sezione Località, scegli
us-west1
per Regione, quindi scegli una Zona come indicato nel passaggio 2.In Rete, inserisci
lb-network
.In Subnet, inserisci
lb-subnet
.Nella sezione Istanze VM, aggiungi le VM come indicato nel passaggio 2.
Fai clic su Crea.
gcloud
Crea quattro VM eseguendo quattro volte il seguente comando, utilizzando queste quattro combinazioni per
VM_NAME
eZONE
. I contenuti dello script sono identici per tutte e quattro le VM.VM_NAME
divm-b1
eZONE
dius-west1-a
VM_NAME
divm-b2
eZONE
dius-west1-a
VM_NAME
divm-d1
eZONE
dius-west1-c
VM_NAME
divm-d2
eZONE
dius-west1-c
gcloud compute instances create VM_NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Crea i due gruppi di istanze non gestite in ogni zona:
gcloud compute instance-groups unmanaged create ig-b \ --zone=us-west1-a gcloud compute instance-groups unmanaged create ig-d \ --zone=us-west1-c
Aggiungi le VM ai gruppi di istanze appropriati:
gcloud compute instance-groups unmanaged add-instances ig-b \ --zone=us-west1-a \ --instances=vm-b1,vm-b2 gcloud compute instance-groups unmanaged add-instances ig-d \ --zone=us-west1-c \ --instances=vm-d1,vm-d2
API
Crea quattro VM di backend inviando quattro richieste POST
al metodo
instances.insert
.
Per le quattro VM, utilizza i seguenti nomi e zone:
VM_NAME
divm-b1
eZONE
dius-west1-a
VM_NAME
divm-b2
eZONE
dius-west1-a
VM_NAME
divm-d1
eZONE
dius-west1-c
VM_NAME
divm-d2
eZONE
dius-west1-c
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoDEBIAN_IMAGE_NAME
: il nome dell'immagine Debian per l'istanza. L'attualeDEBIAN_IMAGE_NAME
può essere ottenuto eseguendo il seguente comandogcloud
:gcloud compute images list \ --filter="family=debian-12"
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE/instances
{ "name": "VM_NAME", "tags": { "items": [ "allow-health-check", "allow-ssh" ] }, "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2", "canIpForward": false, "networkInterfaces": [ { "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "external-nat", "networkTier": "PREMIUM" } ] } ], "disks": [ { "type": "PERSISTENT", "boot": true, "mode": "READ_WRITE", "autoDelete": true, "deviceName": "VM_NAME", "initializeParams": { "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME", "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard", "diskSizeGb": "10" } } ], "metadata": { "items": [ { "key": "startup-script", "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2" } ] }, "scheduling": { "preemptible": false }, "deletionProtection": false }
Crea due gruppi di istanze inviando una richiesta POST
al metodo
instanceGroups.insert
. Sostituisci PROJECT_ID
con l'ID del tuo progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups
{ "name": "ig-b", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups
{ "name": "ig-d", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network", "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet" }
Aggiungi istanze a ogni gruppo di istanze inviando una richiesta POST
al metodo
instanceGroups.addInstances
. Sostituisci PROJECT_ID
con l'ID del tuo progetto.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-a/instanceGroups/ig-b/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2" } ] }
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/us-west1-c/instanceGroups/ig-d/addInstances
{ "instances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1", "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2" } ] }
Aggiunta di un backend principale
Puoi utilizzare questa procedura come modello per aggiungere un gruppo di istanze non gestite al servizio di backend di un bilanciatore del carico di rete passthrough interno esistente come backend principale. Per la configurazione di esempio, questa procedura mostra come aggiungere il gruppo di istanze ig-d
come backend principale al bilanciatore del carico be-ilb
.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Nella scheda Bilanciatori del carico, fai clic sul nome di un bilanciatore del carico TCP o UDP interno esistente (in questo esempio,
be-ilb
).Fai clic su Modifica
.In Configurazione backend, fai clic su Aggiungi backend e seleziona un gruppo di istanze non gestito (in questo esempio,
ig-d
).Assicurati che l'opzione Utilizza questo gruppo di istanze come gruppo di failover per il backup non sia selezionata.
Fai clic su Fine e poi su Aggiorna.
gcloud
Utilizza il seguente comando gcloud
per aggiungere un backend principale al servizio di backend di un bilanciatore del carico di rete passthrough interno esistente.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico. Per l'esempio, utilizzabe-ilb
.INSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principale. Per l'esempio, utilizzaig-d
.INSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanze. Per l'esempio, utilizzaus-west1-c
.REGION
: la regione del bilanciatore del carico. Per l'esempio, utilizzaus-west1
.
API
Aggiungi un backend principale a un servizio di backend esistente con il metodo regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoREGION
: la regione del bilanciatore del carico. Per l'esempio, utilizzaus-west1
.BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico. Per l'esempio, utilizzabe-ilb
.INSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principale. Per l'esempio, utilizzaig-d
.INSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanze. Per l'esempio, utilizzaus-west1-c
.
Aggiunta di un backend di failover
Puoi utilizzare questa procedura come modello per aggiungere un gruppo di istanze non gestite al servizio di backend di un bilanciatore del carico di rete passthrough interno esistente come backend di failover. Per la configurazione di esempio, questa procedura mostra come aggiungere il gruppo di istanze ig-b
come backend di failover al bilanciatore del carico be-ilb
.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Nella scheda Bilanciatori del carico, fai clic sul nome di un bilanciatore del carico esistente di tipo TCP/UDP (interno) (in questo esempio,
be-ilb
).Fai clic su Modifica
.In Configurazione backend, fai clic su Aggiungi backend e seleziona un gruppo di istanze non gestito (in questo esempio,
ig-b
).Seleziona Utilizza questo gruppo di istanze come gruppo di failover per il backup.
Fai clic su Fine e poi su Aggiorna.
gcloud
Utilizza il seguente comando gcloud
per aggiungere un backend di failover
al servizio di backend di un bilanciatore del carico di rete passthrough interno esistente.
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico. Per l'esempio, utilizzabe-ilb
.INSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principale. Per l'esempio, utilizzaig-b
.INSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanze. Per l'esempio, utilizzaus-west1-a
.REGION
è la regione del bilanciatore del carico. Per l'esempio, utilizzaus-west1
.
API
Aggiungi un backend di failover a un servizio di backend esistente con il metodo regionBackendServices.patch
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "balancingMode": "connection", "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoBACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico. Per l'esempio, utilizzabe-ilb
.INSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principale. Per l'esempio, utilizzaig-b
.INSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanze. Per l'esempio, utilizzaus-west1-a
.REGION
: la regione del bilanciatore del carico. Per l'esempio, utilizzaus-west1
.
Conversione di un backend principale o di failover
Puoi convertire un backend principale in un backend di failover o viceversa senza dover rimuovere il gruppo di istanze dal servizio di backend del bilanciatore del carico di rete passthrough interno.
Console
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Nella scheda Bilanciatori del carico, fai clic sul nome di un bilanciatore del carico esistente di tipo TCP/UDP (interno).
Fai clic su Modifica
.In Configurazione backend, fai clic sul nome di uno dei gruppi di istanze di backend. Quindi:
- Per impostare il gruppo di istanze come backend di failover, seleziona Usa questo gruppo di istanze come gruppo di failover per il backup.
- Per impostare il gruppo di istanze come backend principale, deseleziona Usa questo gruppo di istanze come gruppo di failover per il backup.
Fai clic su Fine e poi su Aggiorna.
gcloud
Utilizza il seguente comando gcloud
per convertire un backend principale esistente in un backend di failover:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --failover
Utilizza il seguente comando gcloud
per convertire un backend di failover esistente in un backend principale:
gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \ --instance-group INSTANCE_GROUP_NAME \ --instance-group-zone INSTANCE_GROUP_ZONE \ --region REGION \ --no-failover
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del caricoINSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principaleINSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanzeREGION
: la regione del bilanciatore del carico
API
Converti un backend principale in un backend di failover o viceversa utilizzando il metodo
regionBackendServices.patch
.
Per convertire un backend principale in un backend di failover:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": true, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ] }
Per convertire un backend di failover in un backend principale:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "backends": [ { "failover": false, "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME" } ], }
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoBACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del caricoINSTANCE_GROUP_NAME
: il nome del gruppo di istanze da aggiungere come backend principaleINSTANCE_GROUP_ZONE
: la zona in cui è definito il gruppo di istanzeREGION
: la regione del bilanciatore del carico
Configurazione dei criteri di failover
Questa sezione descrive come gestire un criterio di failover per il servizio di backend di un bilanciatore del carico di rete passthrough interno. Un criterio di failover è costituito da:
- Rapporto di failover
- Eliminazione del traffico quando tutte le VM di backend non sono integre
- Svuotamento connessioni al failover
Per ulteriori informazioni sui parametri di un criterio di failover, consulta:
- Impostare un rapporto di failover
- Eliminazione del traffico in assenza di VM integre
- Svuotamento delle connessioni in caso di failover e failback
Definizione di un criterio di failover
Le istruzioni riportate di seguito descrivono come definire il criterio di failover per un bilanciatore del carico di rete passthrough interno esistente.
Console
Per definire un criterio di failover utilizzando la console Google Cloud, devi avere almeno un backend di failover.
Nella console Google Cloud, vai alla pagina Bilanciamento del carico.
Nella scheda Bilanciatori del carico, fai clic sul nome di un bilanciatore del carico esistente di tipo TCP/UDP (interno).
Fai clic su Modifica
.Assicurati di avere almeno un backend di failover. Per almeno uno dei backend del bilanciatore del carico deve essere selezionata l'opzione Usa questo gruppo di istanze come gruppo di failover per il backup.
Fai clic su Configurazioni avanzate.
- Per Criterio di failover, imposta il Rapporto di failover su un valore compreso tra
0.0
e1.0
, inclusi. - Seleziona la casella Attiva l'eliminazione del traffico se vuoi eliminare il traffico quando tutte le VM attive e tutte le VM di backup non sono in stato di salute.
- Seleziona la casella accanto a Consenti svuotamento della connessione in caso di failover se vuoi terminare rapidamente le connessioni esistenti durante il failover.
- Per Criterio di failover, imposta il Rapporto di failover su un valore compreso tra
Fai clic su Esamina e finalizza e poi su Aggiorna.
gcloud
Per definire un criterio di failover utilizzando l'interfaccia a riga di comando gcloud, aggiorna il servizio di backend del bilanciatore del carico:
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION \ --failover-ratio FAILOVER_RATIO \ --drop-traffic-if-unhealthy \ --no-connection-drain-on-failover
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico. Per l'esempio, utilizzabe-ilb
.REGION
: la regione del bilanciatore del carico. Per l'esempio, utilizzaus-west1
.FAILOVER_RATIO
: il rapporto di failover. I valori possibili sono compresi tra0.0
e1.0
, inclusi. Per l'esempio, utilizza0.75
.--drop-traffic-if-unhealthy
indica al bilanciatore del carico di eliminare il traffico quando tutte le VM principali e tutte le VM di backup non sono in stato di integrità. Modifica questo valore in--no-drop-traffic-if-unhealthy
se vuoi distribuire il traffico tra tutte le VM principali quando tutte le VM di backend non sono integre.--no-connection-drain-on-failover
indica al bilanciatore del carico di terminare rapidamente le connessioni TCP esistenti durante il failover. Utilizza--connection-drain-on-failover
per attivare svuotamento della connessione durante il failover.
API
Utilizza il metodo
regionBackendServices.patch
per definire il criterio di failover.
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME { "failoverPolicy": { "failoverRatio": FAILOVER_RATIO, "dropTrafficIfUnhealthy": [true|false], "disableConnectionDrainOnFailover": [true|false] } }
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoREGION
: la regione del bilanciatore del caricoBACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del caricoFAILOVER_RATIO
: il rapporto di failover. I valori possibili sono compresi tra0.0
e1.0
, inclusi.- L'impostazione di
dropTrafficIfUnhealthy
sutrue
indica al bilanciatore del carico di eliminare il traffico quando tutte le VM principali e tutte le VM di backup non sono in stato di integrità. Imposta questo valore sufalse
se vuoi distribuire il traffico tra tutte le VM principali quando tutte le VM di backend non sono operative. - L'impostazione di
disableConnectionDrainOnFailover
sutrue
indica al bilanciatore del carico di terminare rapidamente le connessioni TCP esistenti durante un failover. Imposta questo valore sufalse
per attivare svuotamento della connessione durante il failover.
Visualizzazione di un criterio di failover
Le istruzioni riportate di seguito descrivono come visualizzare il criterio di failover esistente per un bilanciatore del carico di rete passthrough interno.
Console
La console Google Cloud mostra le impostazioni esistenti dei criteri di failover quando modifichi un bilanciatore del carico di rete passthrough interno. Per le istruzioni, consulta la sezione Definire un criterio di failover.
gcloud
Per elencare le impostazioni del criterio di failover utilizzando gcloud CLI, utilizza il seguente comando. Le impostazioni non definite in un criterio di failover utilizzano i valori predefiniti del criterio di failover.
gcloud compute backend-services describe BACKEND_SERVICE_NAME \ --region REGION \ --format="get(failoverPolicy)"
Sostituisci quanto segue:
BACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del caricoREGION
: la regione del bilanciatore del carico
API
Utilizza il metodo
regionBackendServices.get
per visualizzare il criterio di failover.
La risposta alla richiesta API mostra il criterio di failover. Di seguito è riportato un esempio.
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME
Sostituisci quanto segue:
PROJECT_ID
: il tuo ID progettoREGION
: la regione del bilanciatore del caricoBACKEND_SERVICE_NAME
: il nome del servizio di backend del bilanciatore del carico
{ ... "failoverPolicy": { "disableConnectionDrainOnFailover": false, "dropTrafficIfUnhealthy": false, "failoverRatio": 0.75 ... }
Passaggi successivi
- Per informazioni di base importanti, consulta la Panoramica del bilanciatore del carico di rete passthrough interno.
- Consulta Concetti sul failover per i bilanciatori del carico di rete passthrough interni per informazioni importanti sul failover.
- Consulta Configura un bilanciatore del carico di rete passthrough interno per un esempio di configurazione di un bilanciatore del carico di rete passthrough interno.
- Per informazioni sulla configurazione del logging e del monitoraggio per il bilanciatore del carico di rete passthrough interno, consulta Logging e monitoraggio del bilanciatore del carico di rete passthrough interno.
- Consulta Bilanciatori del carico di rete passthrough interni e reti connesse per informazioni su come accedere ai bilanciatori del carico di rete passthrough interni dalle reti peer collegate alla tua rete VPC.
- Consulta la sezione Risolvere i problemi relativi ai bilanciatori del carico di rete passthrough interni per informazioni su come risolvere i problemi relativi al bilanciatore del carico di rete passthrough interno.
- Pulisci la configurazione del bilanciatore del carico.