Un pool di destinazione è un gruppo di istanze di backend che ricevono il traffico in entrata da bilanciatori del carico di rete passthrough esterni. Tutte le istanze di backend di un pool di destinazione devono trovarsi nella stessa regione Google Cloud. I bilanciatori del carico di rete passthrough esterni possono utilizzare un servizio di backend o un pool di destinazione per definire il gruppo di istanze di backend. Se stai creando nuovi bilanciatori del carico di rete passthrough esterni, ti consigliamo di utilizzare i servizi di backend.
Questa pagina descrive le opzioni di configurazione per i backend del pool di destinazione. Quando la regola di forwarding di un bilanciatore del carico di rete passthrough esterno indirizza il traffico a un pool di destinazione, il bilanciatore del carico sceglie un'istanza dal pool di destinazione in base a un hash dell'indirizzo IP di origine, della porta di origine, dell'indirizzo IP di destinazione e della porta di destinazione.
Se intendi che il pool di destinazione contenga una singola macchina virtuale (VM), valuta la possibilità di utilizzare la funzionalità di inoltro del protocollo anziché il bilanciamento del carico.
Proprietà del pool di destinazione
I pool di destinazione funzionano con le regole di inoltro che gestiscono il traffico TCP
e UDP
. Devi creare un pool di destinazione prima di poterlo utilizzare con una regola di inoltro.
I pool di destinazione utilizzano i controlli di integrità HTTP legacy.
Un pool di destinazione è costituito dalle seguenti proprietà:
name
- Il nome di questo pool di destinazione. Il nome deve essere univoco in questo progetto, avere una lunghezza compresa tra 1 e 63 caratteri e corrispondere all'espressione regolare:
[a-z]([-a-z0-9]*[a-z0-9])?
, il che significa che il primo carattere deve essere una lettera minuscola e tutti i caratteri successivi devono essere trattini, lettere minuscole o cifre, tranne l'ultimo carattere, che non può essere un trattino. description
- Facoltativo. Una descrizione definita dall'utente di questo pool di destinazione.
region
L'URL completo della regione del pool di destinazione. La regione deve essere la stessa in cui si trovano le istanze di backend. Ad esempio:
"region" : "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION"
healthChecks[ ]
Facoltativo. Un elenco facoltativo di controlli di integrità per questo pool di destinazione. A un determinato pool di destinazione può essere associato un solo controllo di integrità. Per saperne di più, consulta la sezione Controllo salute.
instances[ ]
Un elenco di URL di istanze che devono gestire il traffico per questo pool di destinazione. Tutte le istanze devono trovarsi nella stessa regione del pool di destinazione, ma possono appartenere a zone diverse all'interno di una singola regione. Ad esempio:
"instances" : [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE", "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2" ]
sessionAffinity
Facoltativo. Controlla il metodo utilizzato per selezionare un'istanza di macchina virtuale di backend. Puoi impostare questo valore solo durante la creazione del pool di destinazione. Una volta impostato, non puoi modificare questo valore. Il metodo hash seleziona un backend in base a un sottoinsieme dei seguenti 5 valori:
- IP di origine / destinazione
- Porta di origine / destinazione
- Protocollo di livello 4 (TCP, UDP)
I possibili hash sono:
NONE
(ovvero nessun hash specificato) (valore predefinito)- Hashing a 5 tuple, che utilizza gli IP di origine e di destinazione, le porte di origine e di destinazione e il protocollo. Ogni nuova connessione può essere indirizzata a qualsiasi istanza, ma tutto il traffico di una determinata connessione rimarrà nella stessa istanza, se l'istanza rimane in stato attivo.
CLIENT_IP_PROTO
- Hashing a tre tuple, che utilizza gli IP di origine e di destinazione e il protocollo. Tutte le connessioni da un client verranno indirizzate alla stessa istanza, a condizione che utilizzino lo stesso protocollo e che l'istanza rimanga integra.
CLIENT_IP
- Hashing a due tuple, che utilizza gli IP di origine e di destinazione. Tutte le connessioni da un client verranno reindirizzate alla stessa istanza indipendentemente dal protocollo, purché l'istanza rimanga integra.
L'hashing a 5 tuple fornisce una buona distribuzione del traffico su molte macchine virtuali. Tuttavia, una seconda sessione dello stesso client potrebbe arrivare su un'istanza diversa perché la porta di origine potrebbe cambiare. Se vuoi che tutte le sessioni dello stesso client raggiungano lo stesso backend, purché il backend rimanga in stato integro, puoi specificare le opzioni
CLIENT_IP_PROTO
oCLIENT_IP
.In generale, se selezioni un metodo di tuple di 3 o 2 elementi, l'affinità sessione sarà migliore rispetto al metodo predefinito di tuple di 5 elementi, ma il traffico complessivo potrebbe non essere distribuito in modo uniforme.
Pacchetti UDP frammentati: se esegui il bilanciamento del carico del traffico UDP che è probabile che sia frammentato, imposta l'affinità sessione su
CLIENT_IP_PROTO
oCLIENT_IP
. Non utilizzareNONE
(hashing a 5 tuple). Questo accade perché i frammenti UDP diversi dal primo non contengono il numero di porta e il bilanciatore del carico potrebbe eliminare i frammenti senza la porta. Per ulteriori informazioni, consulta Bilanciamento del carico e pacchetti UDP frammentati.backupPool
Facoltativo. Un URL completo a un'altra risorsa del pool di destinazione. Un pool di backup è un pool di destinazione a cui fa riferimento un altro pool di destinazione. Per utilizzare questa funzionalità, devi anche definire
failoverRatio
. Se il rapporto tra le macchine virtuali in buono stato nel pool di destinazione scende al di sotto del valorefailoverRatio
, il bilanciatore del carico di rete passthrough esterno invia il traffico al pool di backup. Puoi fornire un solo pool di backup per pool di destinazione. Il pool di backup deve trovarsi nella stessa regione del pool di destinazione. Se il rapporto tra le istanze funzionanti nel pool di destinazione scende al di sotto del rapporto di failover configurato, il bilanciatore del carico di rete passthrough esterno utilizza le seguenti regole per instradare il traffico:- Se il rapporto tra le istanze integre e le istanze totali nel pool di destinazione è inferiore al rapporto di failover, il traffico viene inviato alle istanze integre nel pool di backup.
- Se il rapporto tra le istanze integre e le istanze totali nel pool di destinazione è inferiore al rapporto di failover, ma non ci sono istanze integre rimanenti nel pool di backup, il traffico viene inviato alle istanze integre rimanenti nel pool di destinazione.
- Se il pool di destinazione non è vuoto e se tutte le istanze sia nel pool di destinazione sia nel pool di backup non superano i controlli di integrità, il traffico viene inviato a tutte le istanze nel pool di destinazione, come ultima risorsa.
- Se il pool di destinazione è vuoto e se tutte le istanze del pool di backup non superano i controlli di integrità, il traffico viene inviato a tutte le istanze del pool di backup come ultima risorsa.
È supportato un solo livello di failover. Ad esempio, se il pool di destinazione A ha il pool di backup B e il pool di backup B ha il pool di backup C, il traffico destinato al pool di destinazione A può essere indirizzato solo al pool di backup B e non al pool di backup C.
failoverRatio
Facoltativo. Un valore compreso tra
0.0
e1.0
che determina quando questo pool di destinazione viene dichiarato non valido. Ad esempio, se questo valore è impostato su0.1
, quindi questo pool di destinazione viene dichiarato non integro se il numero di istanze integre è inferiore a0.1
(10%). Se il rapporto di failover è0.0
, almeno un backend deve essere integro affinché il pool sia considerato integro. Se il rapporto di failover è impostato su1.0
, tutte le istanze devono essere in stato di integrità affinché il pool sia considerato integro. Devi definirlo se definisci il campobackupPool
.
Condizioni di failover
Condizioni | Le nuove connessioni vengono inviate a |
---|---|
Rapporto di failover !=0, VM integre nel pool di destinazione >= FR | pool di destinazione |
Rapporto di failover =0, VM integre nel pool di destinazione > 0 | pool di destinazione |
Rapporto di failover !=0, VM integre nel pool di destinazione < FR e almeno una VM nel pool di backup è integra | pool di backup |
Rapporto di failover =0, VM integre nel pool di destinazione = 0 e almeno una VM nel pool di backup è integra | pool di backup |
Almeno una VM è nel pool di destinazione e tutte le VM nel pool di destinazione sono in stato non corretto e tutte le VM nel pool di backup sono in stato non corretto | pool di destinazione (ultima risorsa) |
Nessuna VM è presente nel pool di destinazione e tutte le VM nel pool di backup sono non attive | pool di backup (ultima risorsa) |
Nessuna VM è presente nel pool di destinazione e nel pool di backup | Il traffico viene interrotto |
Creare un pool di destinazione
Console
I pool di destinazione non possono essere creati nella console Google Cloud. Puoi creare un pool di destinazione utilizzando Google Cloud CLI o l'API.
Per scoprire come creare un bilanciatore del carico di rete passthrough esterno basato su un pool di destinazione utilizzando Google Cloud CLI, consulta Configurare un bilanciatore del carico di rete passthrough esterno con un pool di destinazione.
gcloud
Per utilizzare gcloud compute
per creare un pool di destinazione, usa il comando target-pools
create
:
gcloud compute target-pools create TARGET_POOL \ [--backup-pool=BACKUP_POOL] \ [--description=DESCRIPTION] \ [--failover-ratio=FAILOVER_RATIO] \ [--http-health-check=HEALTH_CHECK] \ [--region=REGION] [--session-affinity=SESSION_AFFINITY; default="NONE"]
Sostituisci quanto segue:
TARGET_POOL
: un nome per il pool di destinazioneBACKUP_POOL
: un nome per il pool di destinazione del backupDESCRIPTION
: una descrizione del pool di destinazioneFAILOVER_RATIO
: un valore compreso tra 0,0 e 1,0, che determina quando il pool di destinazione viene dichiarato non integroHEALTH_CHECK
: un controllo di integrità per questo pool di destinazioneREGION
: una regione del pool di destinazioneSESSION_AFFINITY
: il metodo utilizzato per selezionare un'istanza di macchina virtuale di backend
API
Per creare un pool di destinazione nell'API, invia una richiesta HTTP POST
al seguente URI:
https://www.googleapis.com/v1/compute/projects/PROJECT_ID/regions/REGION/targetPools { "name": name, "instances": [ "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE", "https://www.googleapis.com/v1/compute/project/PROJECT_ID/zones/ZONE/instances/INSTANCE-2", ] }
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudZONE
: la zona in cui si trovano le istanze del pool di destinazioneINSTANCE
,INSTANCE-2
: le istanze da aggiungere al pool di destinazione
Aggiungere o rimuovere un'istanza da un pool di destinazione
Console
I pool di destinazione non possono essere modificati nella console Google Cloud. Puoi modificare un pool di destinazione utilizzando Google Cloud CLI o l'API.
gcloud
Per utilizzare gcloud compute
per aggiungere istanze a un pool di destinazione, utilizza il
comando target-pools add-instances
:
gcloud compute target-pools add-instances TARGET_POOL \ --instances=INSTANCE,[INSTANCE-2,...]
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazioneINSTANCE
,INSTANCE-2
: il nome dell'istanza (o delle istanze) da aggiungere al pool di destinazione
Per rimuovere le istanze, utilizza il
comando target-pools remove-instances
:
gcloud compute target-pools remove-instances TARGET_POOL \ --instances=INSTANCE,[INSTANCE-2,...]
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazioneINSTANCE
,INSTANCE-2
: il nome dell'istanza o delle istanze da rimuovere dal pool di destinazione
API
Nell'API, invia una richiesta POST ai seguenti URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeInstance https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addInstance
Il corpo della richiesta deve includere gli URI completi delle istanze che vuoi aggiungere o rimuovere:
{ "instances": [ {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE"}, {"instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE-2"} ] }
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazioneZONE
: la zona in cui si trovano le istanze aggiornateINSTANCE
,INSTANCE-2
: le istanze da aggiungere al pool di destinazione
Per saperne di più, consulta la documentazione di riferimento dell'API per i metodi
targetPools.addInstance
e
targetPools.removeInstance
.
Elenca pool di destinazione
Console
Per visualizzare un elenco di pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.
Nella pagina del bilanciamento del carico Avanzate, vai alla scheda Pool di destinazione.
Vai a Pool di destinazione
La pagina mostra un elenco di pool di destinazione.
gcloud
Per utilizzare gcloud compute
per elencare i pool di destinazione esistenti, utilizza il
comando target-pools list
:
gcloud compute target-pools list
Per un output più dettagliato, utilizza il comando describe
e specifica un nome per il pool.
API
Nell'API, invia una richiesta GET al seguente URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudREGION
: la regione in cui si trova il pool di destinazione
Descrivi un pool di destinazione
Console
Per informazioni su un pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.
- Nella pagina del bilanciamento del carico Avanzate, vai alla scheda Pool di destinazione.
Vai a Pool di destinazione - Per visualizzare informazioni dettagliate, fai clic sul nome del pool di destinazione.
gcloud
Per utilizzare gcloud compute
per ottenere informazioni su un singolo pool di destinazione, utilizza il
comando target-pools describe
:
gcloud compute target-pools describe TARGET_POOL
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazione
API
Nell'API, invia una richiesta GET vuota al seguente URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazione
Recupera lo stato di integrità delle istanze
Console
Per ottenere lo stato di integrità delle istanze in un pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.
- Nella pagina del bilanciamento del carico Avanzate, vai alla scheda Pool di destinazione.
Vai a Pool di destinazione - Fai clic sul nome del pool di destinazione.
- La pagina Dettagli pool di destinazione elenca tutte le istanze e il relativo stato di integrità.
gcloud
Per utilizzare gcloud compute
per controllare lo stato di salute corrente di un'istanza nel pool di destinazione o di tutte le istanze nel pool di destinazione, puoi utilizzare il comando gcloud compute target-pools get-health
:
gcloud compute target-pools get-health TARGET_POOL
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazione
Il comando restituisce lo stato di integrità come stabilito dal controllo di integrità configurato, integro o non integro.
API
Nell'API, invia una richiesta POST HTTP al seguente URI con l'istanza specificata nel corpo della richiesta:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/getHealth { "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazioneZONE
: la zona in cui si trovano le istanzeINSTANCE
: l'istanza di cui stai controllando lo stato del controllo di integrità
Elimina un pool di destinazione
Per eliminare un pool di destinazione, devi prima assicurarti che non sia associato a nessuna regola di inoltro. Se una regola di forwarding fa riferimento a un pool di destinazione, devi eliminare la regola di forwarding per rimuovere il riferimento.
Console
Per utilizzare la console Google Cloud per eliminare un pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.
- Nella pagina del bilanciamento del carico Avanzate, vai alla scheda Pool di destinazione.
Vai a Pool di destinazione - Fai clic sul nome del pool di destinazione.
- Fai clic su Elimina.
- Nella finestra Elimina un pool di destinazione, fai clic su Elimina.
gcloud
Per utilizzare gcloud compute
per eliminare un pool di destinazione, utilizza il
comando target-pools delete
:
gcloud compute target-pools delete TARGET_POOL
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazione da eliminare
API
Nell'API, invia una richiesta DELETE vuota al seguente URI:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazione
Aggiungere o rimuovere un controllo di integrità da un pool di destinazione
Gli oggetti di controllo di integrità sono risorse autonomee globali che possono essere associate o disassociatete da qualsiasi pool di destinazione.
Se un pool di destinazione non ha un controllo di integrità associato, il bilanciatore del carico di rete passthrough esterno considererà tutte le istanze come integre e invierà il traffico a tutte le istanze del pool di destinazione. Tuttavia, se esegui una query per lo stato di integrità di un pool di destinazione senza un controllo di integrità, lo stato restituito sarà unhealthy
per indicare che il pool di destinazione non ha un controllo di integrità. Ti consigliamo di associare ai pool di destinazione i controlli di integrità per aiutarti a gestire le istanze.
I bilanciatori del carico di rete passthrough esterni utilizzano i controlli di integrità HTTP legacy per determinare l'integrità delle istanze nel pool di destinazione. Un bilanciatore del carico di rete passthrough esterno può utilizzare solo un controllo di integrità HTTP legacy, non un controllo di integrità HTTPS legacy.
Console
Quando utilizzi la console Google Cloud, puoi creare un controllo di integrità HTTP legacy durante la creazione di un bilanciatore del carico di rete passthrough esterno con un backend del pool di destinazione.
Non puoi utilizzare la pagina Controlli di integrità della console Google Cloud per creare un controllo di integrità legacy autonomo.
gcloud
Per utilizzare gcloud compute
per aggiungere un controllo di integrità a un pool di destinazione, usa il
comando target-pools add-health-checks
:
gcloud compute target-pools add-health-checks TARGET_POOL \ --http-health-check=HEALTH_CHECK
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazioneHEALTH_CHECK
: il controllo di integrità HTTP legacy da utilizzare con questo pool di destinazione
Per rimuovere un controllo di integrità, utilizza il
comando target-pools remove-health-checks
:
gcloud compute target-pools remove-health-checks TARGET_POOL \ --http-health-check=HEALTH_CHECK
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazioneHEALTH_CHECK
: il controllo di integrità HTTP legacy da rimuovere da questo pool di destinazione
API
Per associare o disaccoppiare un controllo di integrità utilizzando l'API, effettua una richiesta HTTP POST
agli URI appropriati:
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/removeHealthCheck https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/addHealthCheck
Il corpo della richiesta deve contenere il controllo di integrità da associare o disassociare:
{ "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazioneHEALTH_CHECK
: il controllo di integrità HTTP legacy da associare o disaccoppiare con il pool di destinazione
Per saperne di più, consulta la documentazione di riferimento dell'API per
targetPools.addHealthCheck
e
targetPools.removeHealthCheck
.
Aggiungere o rimuovere un pool di destinazione di backup
Quando crei per la prima volta un pool di destinazione, puoi scegliere di applicare un pool di destinazione di backup che riceve il traffico se il pool di destinazione non è più in stato di salute.
Se non hai mai configurato un pool di destinazione di backup, devi anche configurare i controlli di integrità affinché la funzionalità funzioni correttamente.
Console
I pool di destinazione non possono essere modificati nella console Google Cloud. Puoi modificare un proxy di destinazione utilizzando Google Cloud CLI o l'API.
gcloud
Per utilizzare gcloud compute
per aggiornare la risorsa del pool di backup, utilizza il
comando target-pools set-backup
:
gcloud compute target-pools set-backup TARGET_POOL \ --backup-pool=BACKUP_POOL \ --failover-ratio=FAILOVER_RATIO
Sostituisci quanto segue:
TARGET_POOL
: il nome del pool di destinazioneBACKUP_POOL
: un nome per il pool di destinazione del backupFAILOVER_RATIO
: un valore compreso tra 0,0 e 1,0, che determina quando il pool di destinazione viene dichiarato non integro
API
Per inviare una richiesta di aggiornamento o rimozione di un pool di backup tramite l'API, invia una richiesta POST al seguente URI:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/TARGET_POOL/setBackup?failoverRatio=FAILOVER_RATIO { "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/targetPools/BACKUP_POOL" }
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto Google CloudTARGET_POOL
: il nome del pool di destinazione da actualizareREGION
: la regione in cui si trova il pool di destinazioneBACKUP_POOL
: il nome del pool di backup da associare al pool di destinazioneFAILOVER_RATIO
: il rapporto di failover
Se definisci un target vuoto o non definisci un rapporto di failover, il comportamento del pool di backup viene disattivato per questo pool di destinazione.
Passaggi successivi
- Per ulteriori informazioni sui pool di destinazione, consulta la documentazione di riferimento dell'API per
targetPools.setBackup
. - Per ulteriori informazioni sulle regole di inoltro, vedi Panoramica delle regole di inoltro.