Utilizzo dei pool di destinazione

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 vuoi creare 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 vuoi che il pool di destinazione contenga un'unica 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 forwarding che gestiscono il traffico TCP e UDP. Devi creare un pool di destinazione prima di poterlo utilizzare con una regola di forwarding.

I pool di destinazione utilizzano i controlli di integrità HTTP legacy.

Un pool di destinazione è composto 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 trovarsi nella stessa regione in cui risiedono 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. È possibile collegare un solo controllo di integrità a un determinato pool di destinazione. Per ulteriori informazioni, consulta Controllo di integrità.

instances[ ]

Un elenco di URL di istanze che devono gestire il traffico per questo pool di destinazione. Tutte le istanze devono risiedere 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 modificarlo. Il metodo hash seleziona un backend in base a un sottoinsieme dei 5 valori seguenti:

  • IP di origine / destinazione
  • Porta di origine / destinazione
  • Protocollo di livello 4 (TCP, UDP)

I possibili hash sono:

NONE (nessun hash specificato) (valore predefinito)
Hashing a cinque tuple, che utilizza IP di origine e destinazione, porte di origine e destinazione e protocollo. Ogni nuova connessione può terminare su qualsiasi istanza, ma tutto il traffico relativo a una determinata connessione rimarrà sulla stessa istanza, se l'istanza rimane integro.
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 finiranno sulla stessa istanza, purché venga utilizzato lo stesso protocollo e l'istanza rimanga integro.
CLIENT_IP
Hashing a due tuple, che utilizza gli IP di origine e di destinazione. Tutte le connessioni da un client finiranno sulla stessa istanza indipendentemente dal protocollo, purché l'istanza rimanga integro.

L'hashing a 5 tuple fornisce una buona distribuzione del traffico tra molte macchine virtuali. Tuttavia, una seconda sessione dello stesso client potrebbe arrivare su un'istanza diversa perché la porta di origine può cambiare. Se vuoi che tutte le sessioni dello stesso client raggiungano lo stesso backend, purché il backend rimanga integro, puoi specificare le opzioni CLIENT_IP_PROTO o CLIENT_IP.

In generale, se selezioni un metodo a tre tuple o a due tuple, questo fornirà una migliore affinità sessione rispetto al metodo predefinito a cinque tuple, ma il traffico complessivo potrebbe non essere distribuito uniformemente.

Pacchetti UDP frammentati: se stai bilanciando il carico del traffico UDP con probabilità di essere frammentato, imposta l'affinità sessione su CLIENT_IP_PROTO o CLIENT_IP. Non utilizzare NONE (hashing a 5 tuple). Questo perché i frammenti UDP diversi dal primo non includono 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. Devi anche definire failoverRatio per utilizzare questa funzionalità. Se il rapporto di macchine virtuali integri nel pool di destinazione è inferiore a failoverRatio, 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 di istanze integre nel pool di destinazione è inferiore al rapporto di failover configurato, il bilanciatore del carico di rete passthrough esterno utilizza le seguenti regole per instradare il traffico:

  1. 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 del pool di backup.
  2. Se il rapporto tra le istanze integre e le istanze totali nel pool di destinazione è inferiore al rapporto di failover, ma nel pool di backup non ci sono altre istanze integre, il traffico viene inviato alle istanze integre rimanenti nel pool di destinazione.
  3. Se il pool di destinazione non è vuoto e se tutte le istanze nel pool di destinazione e nel pool di backup non superano i controlli di integrità, il traffico viene inviato a tutte le istanze nel pool di destinazione, come ultima alternativa possibile.
  4. Se il pool di destinazione è vuoto e se tutte le istanze nel pool di backup non superano i controlli di integrità, il traffico viene inviato a tutte le istanze nel pool di backup, come ultima alternativa possibile.

È 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 numero mobile tra 0.0 e 1.0, che determina quando questo pool di destinazione viene dichiarato non integro. Ad esempio, se questo valore è impostato su 0.1, questo pool di destinazione viene dichiarato non integro se il numero di istanze in stato integro è inferiore a 0.1 (10%). Se il rapporto di failover è 0.0, almeno un backend deve essere integro affinché il pool possa essere considerato integro. Se il rapporto di failover è impostato su 1.0, tutte le istanze devono essere in stato integro affinché il pool venga considerato integro. Devi definire questo valore se definisci il campo backupPool.

Condizioni di failover

Condizioni Le nuove connessioni vanno a
Rapporto di failover !=0, VM in stato integro nel pool di destinazione >= FR pool di destinazione
Rapporto di failover =0, VM in stato integro nel pool di destinazione > 0 pool di destinazione
Rapporto di failover !=0, VM in stato integro nel pool di destinazione < FR e almeno una VM nel pool di backup è integro pool di backup
Rapporto di failover =0, VM in stato integro nel pool di destinazione = 0 e almeno una VM nel pool di backup è integro pool di backup
Almeno una VM si trova nel pool di destinazione, tutte le VM nel pool di destinazione sono in stato non integro e tutte le VM nel pool di backup sono in stato non integro pool di destinazione (ultima risorsa)
Nessuna VM nel pool di destinazione e tutte le VM nel pool di backup sono in stato non integro pool di backup (ultima risorsa)
Nessuna VM nel pool di destinazione e nessuna VM nel pool di backup Il traffico è diminuito

Creare un pool di destinazione

Console

Non è possibile creare pool di destinazione 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 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, utilizza 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 destinazione
  • BACKUP_POOL: un nome per il pool di destinazione di backup
  • DESCRIPTION: una descrizione del pool di destinazione
  • FAILOVER_RATIO: un valore compreso tra 0,0 e 1,0, che determina quando il pool di destinazione viene dichiarato non integro
  • HEALTH_CHECK: un controllo di integrità per questo pool di destinazione
  • REGION: una regione del pool di destinazione
  • SESSION_AFFINITY: il metodo utilizzato per selezionare un'istanza di macchina virtuale di backend

API

Per creare un pool di destinazione nell'API, effettua 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 del progetto Google Cloud
  • ZONE: la zona in cui si trovano le istanze del pool di destinazione
  • INSTANCE, INSTANCE-2: le istanze da aggiungere al pool di destinazione

Aggiungi o rimuovi 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 destinazione
  • INSTANCE, 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 destinazione
  • INSTANCE, 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 da 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 del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione
  • ZONE: la zona in cui si trovano le istanze aggiornate
  • INSTANCE, 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 dei pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.

Nella pagina Bilanciamento del carico avanzato, vai alla scheda Pool di destinazione.
Vai a Pool di destinazione

La pagina visualizza 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 del 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 del progetto Google Cloud
  • REGION: la regione in cui si trova il pool di destinazione

Descrivere un pool di destinazione

Console

Per ottenere informazioni su un pool di destinazione, utilizza il menu avanzato del bilanciamento del carico.

  1. Nella pagina Bilanciamento del carico avanzato, vai alla scheda Pool di destinazione.
    Vai a Pool di destinazione
  2. Per visualizzare informazioni dettagliate, fai clic sul nome del pool di destinazione.

gcloud

Per utilizzare gcloud compute al fine di 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 del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione

Recupero dello stato di integrità delle istanze

Console

Per ottenere lo stato di integrità delle istanze in un pool di destinazione, utilizza il menu avanzato bilanciamento del carico.

  1. Nella pagina Bilanciamento del carico avanzato, vai alla scheda Pool di destinazione.
    Vai a Pool di destinazione
  2. Fai clic sul nome del pool di destinazione.
  3. La pagina Dettagli del pool di destinazione elenca tutte le istanze e il relativo stato di integrità.

gcloud

Per utilizzare gcloud compute per controllare lo stato di integrità attuale 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 determinato dal controllo di integrità configurato, integro o non integro.

API

Nell'API, effettua 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 del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione
  • ZONE: la zona in cui si trova l'istanza
  • INSTANCE: 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 le regole di forwarding non facciano riferimento al pool di destinazione. 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 al fine di eliminare un pool di destinazione, utilizza il menu avanzato Bilanciamento del carico.

  1. Nella pagina Bilanciamento del carico avanzato, vai alla scheda Pool di destinazione.
    Vai a Pool di destinazione
  2. Fai clic sul nome del pool di destinazione.
  3. Fai clic su Elimina.
  4. Nella finestra Elimina un pool di destinazione, fai clic su Elimina.

gcloud

Per utilizzare gcloud compute al fine di eliminare un pool di destinazione, usa 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 del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione

Aggiungere o rimuovere un controllo di integrità da un pool di destinazione

Gli oggetti per il controllo di integrità sono risorse autonome e globali che possono essere associate o dissociate da qualsiasi pool di destinazione.

Se a un pool di destinazione non è associato alcun controllo di integrità, il bilanciatore del carico di rete passthrough esterno tratterà tutte le istanze come integri e invierà il traffico a tutte le istanze nel pool di destinazione. Tuttavia, se esegui una query sullo stato di integrità di un pool di destinazione senza controllo di integrità, lo stato verrà restituito come unhealthy per indicare che il pool di destinazione non ha un controllo di integrità. Ti consigliamo di associare ai pool di destinazione controlli di integrità che ti aiutano a gestire le istanze.

I bilanciatori del carico di rete passthrough esterni utilizzano 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, utilizza 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 destinazione
  • HEALTH_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 destinazione
  • HEALTH_CHECK: il controllo di integrità HTTP precedente da rimuovere da questo pool di destinazione

API

Per associare o annullare l'associazione di 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 dissociare:

  {
    "healthCheck": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/httpHealthChecks/HEALTH_CHECK"
  }

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione
  • HEALTH_CHECK: controllo di integrità HTTP legacy da associare o dissociare al pool di destinazione

Per maggiori informazioni, consulta la documentazione di riferimento delle API per targetPools.addHealthCheck e targetPools.removeHealthCheck.

Aggiungi o rimuovi 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 traffico se il pool di destinazione non è integro.

Se non hai mai configurato un pool di destinazione di backup, devi configurare anche 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 in modo da 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 destinazione
  • BACKUP_POOL: un nome per il pool di destinazione di backup
  • FAILOVER_RATIO: un valore compreso tra 0,0 e 1,0, che determina quando il pool di destinazione viene dichiarato non integro

API

Per effettuare 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 del progetto Google Cloud
  • TARGET_POOL: il nome del pool di destinazione da aggiornare
  • REGION: la regione in cui si trova il pool di destinazione
  • BACKUP_POOL: il nome del pool di backup da associare al pool di destinazione
  • FAILOVER_RATIO: il rapporto di failover

Se definisci una destinazione vuota o non definisci un rapporto di failover, il comportamento del pool di backup viene disabilitato per questo pool di destinazione.

Passaggi successivi