Aggiungi un gruppo di istanze a un bilanciatore del carico

Questa pagina descrive come aggiungere un gruppo di istanze gestite esistente (MIG) al o un pool di destinazione di un bilanciatore del carico.

Un bilanciatore del carico distribuisce il traffico degli utenti, il che contribuisce a ridurre il rischio di che la tua applicazione abbia problemi di prestazioni. Cloud Load Balancing utilizza i gruppi di istanze, sia gestiti che non gestite, per gestire il traffico. In base tipo di bilanciatore del carico, puoi aggiungere gruppi di istanze a un pool di destinazione o a un servizio di backend.

Per informazioni su creando un tipo specifico di bilanciatore del carico con un backend per gruppi di istanze gestite, consulta Cloud Load Balancing documentazione.

Prima di iniziare

  • Se non l'hai già fatto, configura l'autenticazione. Autenticazione è Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione Compute Engine come segue.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Set a default region and zone.
    3. REST

      Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.

        Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

        gcloud init

      Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.

Aggiungi un gruppo di istanze gestite a un servizio di backend

Un servizio di backend è necessario per creare la maggior parte dei tipi di bilanciatori del carico.

Un servizio di backend può contenere più backend. Un gruppo di istanze è un tipo backend. Le istanze nel gruppo di istanze rispondono al traffico proveniente dal bilanciatore del carico. A sua volta, il servizio di backend sa le istanze che può utilizzare, la quantità di traffico che è possibile gestire che sta gestendo. Inoltre, il servizio di backend monitora l'integrità e non invia nuove connessioni a istanze in stato non integro.

Utilizza queste istruzioni per aggiungere un gruppo di istanze gestite a un servizio di backend.

Console

  1. Vai alla pagina Bilanciamento del carico nella console Google Cloud.

    Vai alla pagina Bilanciamento del carico

  2. Fai clic sul nome del servizio di backend a cui stai aggiungendo la risorsa gruppo di istanze gestite.
  3. Fai clic su Modifica.
  4. Fai clic su +Aggiungi backend.
  5. Seleziona il gruppo di istanze che vuoi aggiungere.
  6. Modifica le impostazioni facoltative da cambiare.
  7. Salva le modifiche.

gcloud

Utilizza la Comando add-backend:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --instance-group=INSTANCE_GROUP \
        [--instance-group-region=INSTANCE_GROUP_REGION | --instance-group-zone=INSTANCE_GROUP_ZONE] \
        --balancing-mode=BALANCING_MODE

Il supporto della modalità di bilanciamento varia in base al tipo di bilanciatore del carico. Per vedi Modalità di bilanciamento disponibile per ogni bilanciatore del carico.

Sono necessari parametri aggiuntivi in base alla modalità di bilanciamento del gruppo di istanze gestite. Per ulteriori informazioni, consulta Comando add-backend nell'SDK.

REST

Per aggiungere un servizio di backend utilizzando l'API REST, consulta backendServices.

Limitazioni

Bilanciamento del carico con un gruppo di istanze gestite a livello di regione non supporta la capacità target di max-rate in Modalità di bilanciamento RATE e UTILIZATION. Per scoprire di più sull'utilizzo linee guida per ogni bilanciatore del carico, consulta Modalità di bilanciamento e impostazioni della capacità target.

Aggiungi un gruppo di istanze gestite a un pool di destinazione

Un pool di destinazione è un oggetto che contiene una o più macchine virtuali di Compute Engine. Un pool di destinazione viene utilizzato bilanciatori del carico di rete passthrough esterni, in cui Il bilanciatore del carico inoltra le richieste dell'utente al pool di destinazione collegato. Le istanze che fanno parte del pool di destinazione gestiscono queste richieste e restituiscono una risposta. Puoi aggiungere un gruppo di istanze gestite a un pool di destinazione in modo che, quando le istanze vengono aggiunto o rimosso dal gruppo di istanze, anche il pool di destinazione viene aggiornato con le modifiche.

Prima di poter aggiungere un gruppo di istanze gestite a un pool di destinazione, il pool di destinazione devono esistere. Per ulteriori informazioni, consulta la documentazione in Aggiunta di un pool di destinazione.

Per aggiungere un gruppo di istanze gestite esistente a un pool di destinazione, segui questi passaggi: instructions. Questo fa sì che tutte le istanze VM che fanno parte dell'istanza gestita gruppo da aggiungere al pool di destinazione.

Console

  1. Vai alla pagina Pool di destinazione nella console Google Cloud.

    Vai alla pagina Pool di destinazione

  2. Fai clic sul pool di destinazione a cui vuoi aggiungere il gruppo di istanze.
  3. Fai clic sul pulsante Edit (Modifica).
  4. Scorri verso il basso fino alla sezione Istanze VM e fai clic su Seleziona i gruppi di istanze.
  5. Seleziona un gruppo di istanze dal menu a discesa.
  6. Salva le modifiche.

gcloud

Utilizza la Comando set-target-pools:

gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \
        --target-pools TARGET_POOL,..

dove:

  • INSTANCE_GROUP è il nome del gruppo di istanze.
  • TARGET_POOL,.. è il nome di uno o più pool di destinazione da aggiungi questo gruppo di istanze.

REST

Chiama il metodo setTargetPools per gruppo di istanze gestite a livello di regione o un gruppo di istanze gestite a livello di zona. Ad esempio:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/regionInstanceGroupManagers/INSTANCE_GROUP/setTargetPools

dove:

  • PROJECT_ID è l'ID progetto per questa richiesta.
  • REGION è la regione del gruppo di istanze.
  • INSTANCE_GROUP è il nome del gruppo di istanze.

Il corpo della richiesta deve contenere un elenco di URI dei pool di destinazione per aggiungere questo gruppo. Ad esempio:

{
  "targetPools": [
    "regions/us-central1/targetPools/example-targetpool-1",
    "regions/us-central1/targetPools/example-targetpool-2"
  ]
}

Assegna porte denominate ai gruppi di istanze gestite

Le porte denominate sono coppie chiave/valore che rappresentano il nome e il numero di una porta. La il nome della porta rappresenta il nome di un servizio o di un'applicazione. Il numero di porta rappresenta la porta su cui vengono eseguiti il servizio o l'applicazione.

Le porte denominate sono utilizzate da Cloud Load Balancing. Bilanciatori del carico che agiscono da proxy si abbonano a una singola porta denominata nel servizio di backend configurazione. Il nome della porta viene tradotto in un numero di porta in base al nome della porta del backend di ogni gruppo di istanze.

Ad esempio, un servizio di backend può effettuare la sottoscrizione a una porta denominata http-port. Il gruppo di istanza di backend può avere una porta denominata http-port:80. Il backend indica al bilanciatore del carico di inviare traffico a una VM del gruppo sulla porta 80 utilizzando un protocollo (ad esempio TCP). Il protocollo è definito nel caricamento servizio di backend del bilanciatore del carico.

Le porte denominate sono metadati semplici utilizzati bilanciatori del carico proxy. Con nome Le porte non controllano le risorse di rete o firewall in Compute Engine.

Più numeri di porta per una porta denominata

Puoi assegnare più porte a ciascun nome di servizio. Puoi anche assegnare più nomi di servizi a ogni porta.

Tieni presente quanto segue:

  • Il traffico viene bilanciato tra tutte le porte con lo stesso nome di porta.
  • Un determinato servizio di backend può inoltrare il traffico solo a una porta denominata alla volta.
  • Se utilizzi più numeri di porta per una porta denominata, le porte devono essere tutte per la stessa applicazione.

    Ad esempio, http:80,http:8080 funziona, ma http:80,http:443 non funziona perché la porta 80 in genere non supporta TLS.

Puoi assegnare più porte denominate in un gruppo di istanze. Per spiegarci meglio, Prendi in considerazione un servizio di backend di esempio che si abbona alla porta denominata http-port e che include due gruppi di istanza di backend:

  • instance-group-a con porta denominata http-port:80
  • instance-group-b con porta denominata http-port:79

Questo servizio di backend invia il traffico alla porta 80 per le VM in instance-group-a e porta 79 per le VM in instance-group-b.

Quando aggiungi lo stesso gruppo di istanze a più servizi di backend (per più bilanciatori del carico) e il gruppo di istanze gestisce porte diverse su ciascun carico non aggiungere tutti i numeri di porta a una singola porta denominata. Crea invece una porta con nome univoco e mapparla a un insieme di porte che ogni servizio di backend da pubblicare.

Ad esempio, supponiamo di avere tre applicazioni, ciascuna con il proprio carico con il bilanciatore del carico di rete passthrough esterno regionale. Ogni applicazione ha il proprio numero di porta: 81 per app1, 82 per app2 e 83 per app3. Supponendo che tutti e tre i servizi di backend siano utilizzando un gruppo di istanze comune, assegna le porte denominate per questo gruppo come [app1:81, app2:82, app3:83].

Porte denominate e controlli di integrità

Il funzionamento di una porta denominata con più numeri di porta su un servizio di backend in un un bilanciatore del carico delle applicazioni esterno o un bilanciatore del carico delle applicazioni interno, il controllo di integrità deve avere --use-serving-port anziché un numero di porta specifico. Questa opzione non è disponibili nella console Google Cloud. Per impostare --use-serving-port, devi utilizzare il metodo Google Cloud CLI o l'API.

Ad esempio, supponiamo che tu abbia un'applicazione che bilancia il carico del traffico tre diverse porte (81, 82, 83) sullo stesso servizio di backend con un gruppo di istanze gestite. Puoi assegnare le porte per questo gruppo di istanze come [app:81, 82, 83]. Il controllo di integrità in questo scenario deve avere --use-serving-port flag.

Per ulteriori informazioni, consulta la sezione sul controllo di integrità del bilanciamento del carico documentazione.

Porte denominate e regole firewall

Le porte denominate non creano né modificano il firewall Google Cloud personalizzate. Per consentire il traffico alle VM di backend, devi comunque le regole firewall necessarie.

Porte denominate e servizi di backend

Oltre alla configurazione del gruppo di istanze, devi configurare anche il servizio di backend. Ad esempio, supponiamo che tu abbia impostato la porta denominata su un'istanza gruppo con il nome my-service-name e la porta 8888:

gcloud compute instance-groups set-named-ports my-unmanaged-ig \
    --named-ports=my-service-name:8888

Quindi devi fare riferimento alla porta denominata nella configurazione del servizio di backend con --port-name sul servizio di backend impostato su my-service-name:

gcloud compute backend-services update my-backend-service \
    --port-name=my-service-name

Crea porte denominate

Console

  1. Nella console Google Cloud, vai alla pagina Gruppi di istanze.

    Vai a Gruppi di istanze

  2. Fai clic sul nome del gruppo di istanze in cui vuoi specificare un nome ports. Si apre una pagina con le proprietà del gruppo di istanze.
  3. Fai clic su Modifica per modificare questo gruppo di istanze gestite.
  4. Nella sezione Mappatura delle porte, fai clic su Aggiungi porta. e inserisci il nome della porta e i numeri di porta che ti interessano da associare a quel nome. Se hai bisogno di più voci, fai di nuovo clic su Aggiungi porta.
  5. Fai clic su Salva per salvare le modifiche e applicare le porte denominate ai di istanze gestite nel gruppo di istanze gestite.

gcloud

Per i gruppi di istanze gestite, imposta una o più porte denominate utilizzando Comando instance-groups managed set-named-ports. Per i gruppi non gestiti, utilizza Comando instance-groups set-named-ports.

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports PORT_NAME:PORT,PORT_NAME:PORT

Ad esempio:

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports name1:80,name2:8080

Per assegnare più porte al nome di ogni servizio o più nomi a ogni crea più di una voce per ogni nome o porta. Ad esempio, se le porte 10, 20 e 80 sono per la stessa applicazione, puoi assegnare name1 a tutte queste porte. Inoltre, potresti assegnare due nomi, name2 e name3 alla porta 8080. Infine, puoi assegnare la porta 9000 a name4, come nell'esempio seguente:

gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP \
      --named-ports name1:10,name1:20,name1:80,\
                    name2:8080,name3:8080,\
                    name4:9000

Verifica le assegnazioni delle porte denominate per un gruppo di istanze gestite utilizzando Comando get-named-ports:

gcloud compute instance-groups managed get-named-ports INSTANCE_GROUP
NAME  PORT
name1 10
name1 20
name1 80
name2 8080
name3 8080
name4 9000

REST

La API instanceGroupManagers non offre un metodo API setNamedPorts. Utilizza invece API instanceGroups per eseguire questa attività.

Crea una richiesta all'API instanceGroups e includi il nome di gruppo di istanze. Ottieni il valore fingerprint attuale per l'istanza raggruppando ottenendo informazioni su un gruppo specifico. Includi fingerprint e una o più coppie di valori namedPorts nel corpo della richiesta:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroups/INSTANCE_GROUP/setNamedPorts

{
  "fingerprint": "42WmSpB8rSM=",
  "namedPorts": [
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    },
    {
       "name": "PORT_NAME",
       "port": PORT_NUMBER
    }
  ]
 }
 

Ad esempio, se le porte 10, 20 e 80 sono per la stessa applicazione, può assegnare name1 a tutte queste porte. Inoltre, potresti assegnare due nomi, name2 e name3 alla porta 8080. Infine, puoi assegnare Da 9000 a name4, come nell'esempio seguente:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 8080
      },
      {
       "name": "name2",
       "port": 9000
      }
   ]
}

Per assegnare più porte a ciascun nome di servizio, crea più voci per quel nome di servizio. Ad esempio, puoi assegnare porte 10, 20 e 80 a name1. Assegna anche la porta 8080 a name2.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroups/example-group/setNamedPorts

{
   "fingerprint": "42WmSpB8rSM=",
   "namedPorts": [
      {
       "name": "name1",
       "port": 10
      },
      {
       "name": "name1",
       "port": 20
      }
      {
       "name": "name1",
       "port": 80
      }
      {
       "name": "name2",
       "port": 8080
      }
      {
       "name": "name3",
       "port": 80
      }
      {
       "name": "name4",
       "port": 8080
      }
   ]
}

per elencare le porte denominate già assegnate a un'istanza gestita gruppo, crea una richiesta GET che rimandi al gruppo:

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP

Passaggi successivi