Questa pagina descrive come aggiungere un gruppo di istanze gestite (MIG) esistente al servizio di backend o al 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. A seconda del tipo di bilanciatore del carico in uso, puoi aggiungere gruppi di istanze a un pool di destinazione o a un servizio di backend.
Per informazioni sulla creazione di un tipo specifico di bilanciatore del carico con un backend MIG, consulta la documentazione di Cloud Load Balancing.
Prima di iniziare
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Vai alla pagina Bilanciamento del carico nella console Google Cloud.
- Fai clic sul nome del servizio di backend a cui stai aggiungendo la risorsa gruppo di istanze gestite.
- Fai clic su Modifica.
- Fai clic su + Aggiungi backend.
- Seleziona il gruppo di istanze che vuoi aggiungere.
- Modifica le impostazioni facoltative da cambiare.
- Salva le modifiche.
- Vai alla pagina Pool di destinazione nella console Google Cloud.
- Fai clic sul pool di destinazione a cui vuoi aggiungere il gruppo di istanze.
- Fai clic sul pulsante Edit (Modifica).
- Scorri verso il basso fino alla sezione Istanze VM e fai clic su Seleziona i gruppi di istanze.
- Seleziona un gruppo di istanze dal menu a discesa.
- Salva le modifiche.
INSTANCE_GROUP
è il nome del gruppo di istanze.TARGET_POOL,..
è il nome di uno o più pool di destinazione a cui aggiungere questo gruppo di istanze.PROJECT_ID
è l'ID progetto per questa richiesta.REGION
è la regione del gruppo di istanze.INSTANCE_GROUP
è il nome del gruppo di istanze.- Il traffico viene bilanciato tra tutte le porte con lo stesso nome.
- 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, mahttp:80,http:443
non funziona perché in genere la porta 80 non supporta TLS.instance-group-a
con una porta denominatahttp-port:80
instance-group-b
con porta denominatahttp-port:79
- Nella console Google Cloud, vai alla pagina Gruppi di istanze.
- Fai clic sul nome del gruppo di istanze in cui vuoi specificare le porte denominate. Si apre una pagina con le proprietà del gruppo di istanze.
- Fai clic su Modifica per modificare questo gruppo di istanze gestite.
- Nella sezione Mappatura delle porte, fai clic su Aggiungi porta. e inserisci il nome della porta e i numeri di porta che ti interessano che desideri associare a quel nome. Se hai bisogno di più voci, fai di nuovo clic su Aggiungi porta.
- Fai clic su Salva per salvare le modifiche e applicare le porte denominate ai di istanze gestite nel gruppo di istanze gestite.
- Prova il tutorial, Utilizzo del bilanciamento del carico per le app ad alta disponibilità.
- Creare un modello di istanza che puoi per un gruppo di istanze gestite.
- Crea un gruppo di istanze gestite a livello di regione.
- Attiva la riparazione automatica. per il tuo gruppo di istanze gestite.
- Abilita la scalabilità automatica per il gruppo di istanze gestite.
REST
Per utilizzare gli esempi dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Aggiungere 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 di un backend cloud. Le istanze nel gruppo di istanze rispondono al traffico proveniente dal bilanciatore del carico. Il servizio di backend, a sua volta, sa quali istanze può utilizzare, quanto traffico possono gestire e quanto traffico stanno attualmente 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
gcloud
Utilizza il 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 il comando
add-backend
nell'SDK.REST
Per aggiungere un servizio di backend utilizzando l'API REST, consulta backendServices.
Limitazioni
Il bilanciamento del carico con un gruppo di istanze gestite a livello di regione non supporta la capacità target di
max-rate
nelle modalità di bilanciamentoRATE
eUTILIZATION
. 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ù istanze di macchine virtuali. Un pool di destinazione viene utilizzato nei bilanciatori del carico di rete passthrough esterni, dove il bilanciatore del carico inoltra le richieste degli utenti 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 aggiunte o rimosse dal gruppo di istanze, anche il pool di destinazione venga aggiornato automaticamente con le modifiche.
Prima di poter aggiungere un gruppo di istanze gestite a un pool di destinazione, il pool di destinazione devono esistere. Per saperne di più, consulta la documentazione relativa all'aggiunta di un pool di destinazione.
Per aggiungere un gruppo di istanze gestite esistente a un pool di destinazione, segui queste istruzioni. Questo fa sì che tutte le istanze VM che fanno parte dell'istanza gestita gruppo da aggiungere al pool di destinazione.
Console
gcloud
Utilizza il comando
set-target-pools
:gcloud compute instance-groups managed set-target-pools INSTANCE_GROUP \ --target-pools TARGET_POOL,..
dove:
REST
Chiama il metodo
setTargetPools
per un 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:
Il corpo della richiesta deve contenere un elenco di URI dei pool di destinazione a cui vuoi aggiungere questo gruppo. Ad esempio:
{ "targetPools": [ "regions/us-central1/targetPools/example-targetpool-1", "regions/us-central1/targetPools/example-targetpool-2" ] }
Assegnare porte denominate ai gruppi di istanze gestite
Le porte denominate sono coppie chiave/valore che rappresentano il nome e il numero di una porta. Il nome della porta rappresenta il nome di un servizio o di un'applicazione. Il numero di porta rappresenta la porta su cui viene eseguito il servizio o l'applicazione.
Le porte con nome vengono 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 alla mappatura della porta denominata del backend di ogni gruppo di istanze.
Ad esempio, un servizio di backend può eseguire la sottoscrizione a una porta denominata
http-port
. Il gruppo di istanza di backend può avere una porta denominatahttp-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 servizio di backend del bilanciatore del carico.Le porte denominate sono semplici metadati utilizzati dai 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:
Puoi assegnare più porte denominate in un gruppo di istanze. Per fare un esempio, consideriamo un servizio di backend di esempio che si iscrive alla porta denominata
http-port
e che ha due gruppi di istanze di backend:Questo servizio di backend invia il traffico alla porta 80 per le VM in
instance-group-a
e porta 79 per le VM ininstance-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 che tu abbia tre applicazioni, ciascuna con il proprio bilanciatore del carico. Ogni applicazione ha il proprio numero di porta: 81 per
app1
, 82 perapp2
e 83 perapp3
. Supponendo che tutti e tre i servizi di backend utilizzino un gruppo di istanze comune, assegna le porte denominate per questo gruppo di istanze 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 è disponibile 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 documentazione sul controllo di integrità del bilanciamento del carico.
Porte con nome e regole firewall
Le porte con nome non creano o modificano le regole del firewall di Google Cloud. 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, è necessario configurare 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 porta8888
: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 sumy-service-name
:gcloud compute backend-services update my-backend-service \ --port-name=my-service-name
Crea porte denominate
Console
gcloud
Per i gruppi di istanze gestite, imposta una o più porte denominate utilizzando il comando
instance-groups managed set-named-ports
. Per i gruppi non gestiti, utilizza il comandoinstance-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 a ogni nome di servizio o più nomi a ogni servizio, crea più di una voce per ogni nome o porta. Ad esempio, se le porte
10
,20
e80
sono per la stessa applicazione, puoi assegnarename1
a tutte queste porte. Inoltre, potresti assegnare due nomi,name2
ename3
alla porta8080
. Infine, puoi assegnare la porta9000
aname4
, 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
Controlla le assegnazioni delle porte denominate per un gruppo di istanze gestite utilizzando il 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 APIsetNamedPorts
. Utilizza invece l'APIinstanceGroups
per eseguire questa operazione.Crea una richiesta all'API
instanceGroups
e includi il nome del gruppo di istanze. Ottieni il valorefingerprint
attuale per l'istanza raggruppando recuperando informazioni su un gruppo specifico. Includifingerprint
e una o più coppie di valorinamedPorts
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
e80
sono per la stessa applicazione, puoi assegnarename1
a tutte queste porte. Inoltre, potresti assegnare due nomi,name2
ename3
alla porta8080
. Infine, puoi assegnare Da9000
aname4
, 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
e80
aname1
. Assegna anche la porta8080
aname2
.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 gruppo di istanze gestite, 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
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2024-10-14 UTC.
-