Questo documento descrive come scalare un gruppo di istanze gestite in base alla capacità di gestione di un bilanciatore del carico delle applicazioni esterno o di un bilanciatore del carico delle applicazioni interno. Ciò significa che la scalabilità automatica aggiunge o rimuove istanze VM nel gruppo quando il bilanciatore del carico indica che il gruppo ha raggiunto una frazione configurabile della sua pienezza, in cui la pienezza è definita dalla capacità target della modalità di bilanciamento selezionata del gruppo di istanza di backend.
Puoi anche scalare un gruppo di istanze gestite in base al suo utilizzo della CPU o alle metriche di Monitoring.
Limitazioni
Puoi scalare automaticamente un gruppo di istanze gestite in base alla capacità di gestione di un Application Load Balancer esterno e di un Application Load Balancer interno. Non sono supportati altri tipi di bilanciatori del carico.
Prima di iniziare
- Consulta le limitazioni del gestore della scalabilità automatica.
- Scopri i nozioni di base del gestore della scalabilità automatica.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
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
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Set a default region and zone.
- Vai alla pagina Gruppi di istanze nella console Google Cloud.
- Se hai un gruppo di istanze, selezionalo e fai clic su Modifica. Se non hai un gruppo di istanze, fai clic su Crea gruppo di istanze.
- In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze al gruppo per abilitare la scalabilità automatica.
- Specifica il numero minimo e massimo di istanze che il gestore della scalabilità automatica deve creare in questo gruppo.
- Nella sezione Metriche di scalabilità automatica, fai clic su Aggiungi metrica.
- Imposta Tipo di metrica su Utilizzo bilanciamento del carico HTTP.
Inserisci l'attributo Utilizzo bilanciamento del carico HTTP di destinazione. Questo valore viene considerato come percentuale. Ad esempio, per il 60% di utilizzo del bilanciamento del carico HTTP, inserisci
60
.Puoi utilizzare il Periodo di attesa per impostare il periodo di inizializzazione, che indica al gestore della scalabilità automatica il tempo necessario per l'inizializzazione dell'applicazione. Specificare un periodo di inizializzazione preciso migliora le decisioni del gestore della scalabilità automatica. Ad esempio, durante lo scale out, il gestore della scalabilità automatica ignora i dati provenienti dalle VM che sono ancora in fase di inizializzazione, perché potrebbero non rappresentare il normale utilizzo della tua applicazione. Il periodo di inizializzazione predefinito è di 60 secondi.
Salva le modifiche.
- Scopri di più sulla gestione dei gestori della scalabilità automatica.
- Scopri in che modo i gestori della scalabilità automatica prendono decisioni.
- Scopri come utilizzare più indicatori di scalabilità automatica per scalare il tuo gruppo.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.
Scalabilità basata sulla capacità di gestione del bilanciamento del carico HTTP(S)
Compute Engine fornisce il supporto per il bilanciamento del carico all'interno dei gruppi di istanze. Puoi utilizzare la scalabilità automatica insieme al bilanciamento del carico configurando un gestore della scalabilità automatica in grado di scalare in base al carico delle istanze.
Un bilanciatore del carico HTTP(S) esterno o interno distribuisce le richieste ai servizi di backend in base alla relativa mappa URL. Il bilanciatore del carico può avere uno o più servizi di backend, ciascuno dei quali supporta backend di gruppi di istanze o gruppi di endpoint di rete (NEG). Quando i backend sono gruppi di istanze, il bilanciatore del carico HTTP(S) offre due modalità di bilanciamento:
UTILIZATION
eRATE
. ConUTILIZATION
, puoi specificare un target massimo per l'utilizzo medio del backend delle istanze nel gruppo di istanze. ConRATE
, devi specificare un numero target di richieste al secondo a livello di istanza o per gruppo. (Solo i gruppi di istanze a livello di zona supportano la specifica di una tariffa massima per l'intero gruppo. I gruppi di istanze gestite a livello di regione non supportano la definizione di una tariffa massima per gruppo).La modalità di bilanciamento e la capacità di destinazione specificata definiscono le condizioni in base alle quali Google Cloud determina quando la VM di backend ha raggiunto la piena capacità. Google Cloud tenta di inviare il traffico alle VM in stato integro con capacità rimanente. Se tutte le VM hanno già raggiunto la capacità, l'utilizzo o la velocità target viene superato.
Quando colleghi un gestore della scalabilità automatica al backend di un gruppo di istanze di un bilanciatore del carico HTTP(S), il gestore della scalabilità automatica scala il gruppo di istanze gestite per mantenere una frazione della capacità di gestione del bilanciamento del carico.
Ad esempio, supponiamo che la capacità di gestione del bilanciamento del carico di un gruppo di istanze gestite sia pari a 100 RPS per istanza. Se crei un gestore della scalabilità automatica con il criterio di bilanciamento del carico HTTP(S) e lo imposti per mantenere un livello di utilizzo target dello 0,8 o dell'80%, il gestore della scalabilità automatica aggiunge o rimuove istanze dal gruppo di istanze gestite per mantenere l'80% della capacità di gestione, o 80 RPS per istanza.
Il seguente diagramma mostra in che modo il gestore della scalabilità automatica interagisce con un gruppo di istanze gestite e un servizio di backend:
Configurazioni di bilanciamento del carico applicabili
Puoi impostare una delle tre opzioni per la capacità di gestione del bilanciamento del carico. Quando crei inizialmente il backend, puoi scegliere tra massimo utilizzo del backend, numero massimo di richieste al secondo per istanza o numero massimo di richieste al secondo per l'intero gruppo. La scalabilità automatica funziona solo con l'utilizzo massimo del backend e il numero massimo di richieste al secondo/istanza, perché il valore di queste impostazioni può essere controllato aggiungendo o rimuovendo istanze. Ad esempio, se imposti un backend per gestire 10 richieste al secondo per istanza e il gestore della scalabilità automatica è configurato per mantenere l'80% di questa velocità, il gestore della scalabilità automatica può aggiungere o rimuovere istanze quando cambiano le richieste al secondo per istanza.
La scalabilità automatica non funziona con il numero massimo di richieste per gruppo perché questa impostazione è indipendente dal numero di istanze nel gruppo di istanze. Il bilanciatore del carico invia continuamente il numero massimo di richieste per gruppo al gruppo di istanze, indipendentemente dal numero di istanze presenti nel gruppo.
Ad esempio, se imposti il backend per gestire un massimo di 100 richieste per gruppo al secondo, il bilanciatore del carico invia 100 richieste al secondo al gruppo, indipendentemente dal fatto che il gruppo abbia due istanze o 100 istanze. Poiché questo valore non può essere regolato, la scalabilità automatica non funziona con una configurazione di bilanciamento del carico che utilizza il numero massimo di richieste al secondo per gruppo.
Abilita la scalabilità automatica in base alla capacità di gestione del bilanciamento del carico
Console
gcloud
Per abilitare un gestore della scalabilità automatica in grado di scalare in base alla capacità di gestione, utilizza il sottocomando
set-autoscaling
. Ad esempio, il seguente comando crea un gestore della scalabilità automatica che scala il gruppo di istanze gestite di destinazione per mantenere il 60% della capacità di gestione. Insieme al parametro--target-load-balancing-utilization
, è richiesto anche il parametro--max-num-replicas
durante la creazione di un gestore della scalabilità automatica:gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \ --max-num-replicas 20 \ --target-load-balancing-utilization 0.6 \ --cool-down-period 90
Puoi usare il flag
--cool-down-period
per impostare il periodo di inizializzazione, che indica al gestore della scalabilità automatica il tempo necessario per l'inizializzazione dell'applicazione. Specificare un periodo di inizializzazione preciso migliora le decisioni del gestore della scalabilità automatica. Ad esempio, durante lo scale out, il gestore della scalabilità automatica ignora i dati provenienti dalle VM che sono ancora in fase di inizializzazione, perché potrebbero non rappresentare il normale utilizzo della tua applicazione. Il periodo di inizializzazione predefinito è di 60 secondi.Puoi verificare che il gestore della scalabilità automatica sia stato creato correttamente utilizzando il sottocomando
instance-groups managed describe
:gcloud compute instance-groups managed describe example-managed-instance-group
Per un elenco dei comandi e dei flag disponibili di
gcloud
, consulta il riferimento digcloud
.REST
Per creare un gestore della scalabilità automatica, utilizza il metodo
autoscalers.insert
per un gruppo di istanze gestite a livello di zona o il metodoregionAutoscalers.insert
per un gruppo di istanze gestite a livello di regione.L'esempio seguente crea un gestore della scalabilità automatica per un gruppo di istanze gestite a livello di zona:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/
Il corpo della richiesta deve contenere i campi
name
,target
eautoscalingPolicy
.autoscalingPolicy
deve definireloadBalancingUtilization
.Puoi utilizzare il campo
coolDownPeriodSec
per impostare il periodo di inizializzazione, che indica al gestore della scalabilità automatica il tempo necessario per l'inizializzazione dell'applicazione. Specificare un periodo di inizializzazione preciso migliora le decisioni del gestore della scalabilità automatica. Ad esempio, durante lo scale out, il gestore della scalabilità automatica ignora i dati provenienti dalle VM che sono ancora in fase di inizializzazione, perché potrebbero non rappresentare il normale utilizzo della tua applicazione. Il periodo di inizializzazione predefinito è di 60 secondi.{ "name": "example-autoscaler", "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group", "autoscalingPolicy": { "maxNumReplicas": 20, "loadBalancingUtilization": { "utilizationTarget": 0.8 }, "coolDownPeriodSec": 90 } }
Per ulteriori informazioni sull'abilitazione della scalabilità automatica in base alla capacità di gestione del bilanciamento del carico, completa il tutorial, Scalabilità automatica a livello globale di un servizio web su Compute Engine.
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-05-24 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -