Scalabilità basata sulla capacità di gestione del bilanciamento del carico


Questo documento descrive come eseguire la scalabilità di un gruppo di istanze gestite (MIG) in base alla capacità di gestione di un bilanciatore del carico delle applicazioni esterno o 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 completezza, dove la completezza è definita dalla capacità target della modalità di bilanciamento selezionata del gruppo di istanze di backend.

Puoi anche scalare un gruppo di istanze gestite in base al suo utilizzo della CPU o alle metriche di monitoraggio.

Limitazioni

Puoi eseguire la scalabilità automatica di un gruppo di istanze gestite in base alla capacità di gestione di un bilanciatore del carico delle applicazioni esterno e di un bilanciatore del carico delle applicazioni interno. Altri tipi di carico non sono supportati.

Prima di iniziare

  • Consulta le limitazioni del gestore della scalabilità automatica.
  • Scopri i fondamenti del gestore della scalabilità automatica.
  • Se non l'hai già 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 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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.

Scalabilità basata sulla capacità di gestione del bilanciamento del carico HTTP(S)

Compute Engine supporta 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 che scala 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 mappa URL. Il bilanciatore del carico può avere uno più servizi di backend, ognuno 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 e RATE. Con UTILIZATION, puoi specificare un target massimo per l'utilizzo medio del backend delle istanze nel gruppo di istanze. Con RATE, devi specificare un numero target di richieste al secondo su base per istanza o per gruppo. (Solo i gruppi di istanze a livello di zona supportano la specifica di un per l'intero gruppo. I gruppi di istanze gestite a livello di regione non supportano definire una tariffa massima per gruppo).

La modalità di bilanciamento e la capacità target che specifichi condizioni in cui Google Cloud determina quando una VM di backend si trova piena capacità. Google Cloud tenta di inviare il traffico a VM in stato integro che hanno capacità rimanente. Se tutte le VM sono già al limite della capacità, la percentuale o la frequenza di utilizzo target viene superata.

Quando colleghi un gestore della scalabilità automatica al backend di un gruppo di istanze di un HTTP(S), il gestore della scalabilità automatica scala il gruppo di istanze gestite e mantengono una frazione della capacità di gestione del bilanciamento del carico.

Ad esempio, supponiamo che la capacità di servizio di bilanciamento del carico di un gruppo di istanze gestite sia definita come 100 RPS per istanza. Se crei un gestore della scalabilità automatica il criterio di bilanciamento del carico HTTP(S) e impostarlo per mantenere un utilizzo target livello di 0,8 o 80%, il gestore della scalabilità automatica aggiunge o rimuove istanze di un gruppo di istanze gestite per mantenere l'80% della capacità di distribuzione o 80 RPS per in esecuzione in un'istanza Compute Engine.

Il seguente diagramma mostra l'interazione del gestore della scalabilità automatica con un gruppo di istanze gestite e un servizio di backend:

La
  relazioni tra gestore della scalabilità automatica, gruppi di istanze gestite
  dei servizi di backend.
Il gestore della scalabilità automatica monitora la capacità di gestione del gruppo di istanze gestite, che è definita nel servizio di backend, e esegue la scalabilità in base all'utilizzo target. In questo esempio, la capacità di pubblicazione viene misurata nel valore maxRatePerInstance.

Configurazioni di bilanciamento del carico applicabili

Puoi impostare una di tre opzioni per la capacità di pubblicazione del bilanciamento del carico. Quando creare prima il backend, puoi scegliere tra l'utilizzo massimo del backend, il numero massimo di richieste al secondo per istanza il numero massimo di richieste al secondo dell'intero gruppo. La scalabilità automatica funziona solo con utilizzo massimo del backend e richieste massime per 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 lo scalatore automatico è configurato per mantenere l'80% di questa frequenza, lo scalatore automatico può aggiungere o rimuovere istanze quando le richieste al secondo per istanza cambiano.

La scalabilità automatica non funziona con il numero massimo di richieste per gruppo perché questa impostazione è indipendente dal numero di istanze nel gruppo. Il bilanciatore del carico invia continuamente il numero massimo di richieste per gruppo al gruppo di istanze, indipendentemente dal numero di istanze nel gruppo.

Ad esempio, se imposti il backend in modo da gestire un massimo di 100 richieste al secondo per gruppo, il bilanciatore del carico invia 100 richieste al secondo al gruppo, indipendentemente dal fatto che il gruppo abbia due o 100 istanze. Poiché questo valore non può essere modificato, la scalabilità automatica non funziona con un carico che utilizza il numero massimo di richieste al secondo per gruppo.

Abilita la scalabilità automatica basata sulla capacità di gestione del bilanciamento del carico

Console

  1. Vai alla pagina Gruppi di istanze nella console Google Cloud.

    Vai a Gruppi di istanze

  2. 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.
  3. In Modalità di scalabilità automatica, seleziona On: aggiungi e rimuovi istanze a gruppo per abilitare la scalabilità automatica.
  4. Specifica il numero minimo e massimo di istanze che il gestore della scalabilità automatica dovrà creare in questo gruppo.
  5. Nella sezione Metriche di scalabilità automatica, fai clic su Aggiungi metrica.
  6. Imposta Tipo di metrica su Utilizzo bilanciamento del carico HTTP.
  7. Inserisci il valore in Utilizzo bilanciamento del carico HTTP di destinazione. Questo valore viene considerato come una percentuale. Ad esempio, per l'utilizzo del bilanciamento del carico HTTP al 60%, inserisci 60.

  8. Puoi utilizzare il Periodo di attesa per impostare il periodo di inizializzazione, che indica gestore della scalabilità automatica: il tempo necessario per l'inizializzazione della tua 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.

  9. Salva le modifiche.

gcloud

Per abilitare un gestore della scalabilità automatica in grado di scalare in base alla capacità di gestione, utilizza set-autoscaling sottocomando. Ad esempio, il seguente comando crea un gestore della scalabilità automatica scala il gruppo di istanze gestite di destinazione per mantenere il 60% del servizio e la capacità di archiviazione. Oltre al parametro --target-load-balancing-utilization, è necessario anche il parametro --max-num-replicas quando crei un autoscaler:

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 utilizzare il flag --cool-down-period per impostare il periodo di inizializzazione, che indica gestore della scalabilità automatica: il tempo necessario per l'inizializzazione della tua 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 metodo Sottocomando instance-groups managed describe:

gcloud compute instance-groups managed describe example-managed-instance-group

Per un elenco dei comandi e dei flag gcloud disponibili, consulta la documentazione di riferimento di gcloud.

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 metodo regionAutoscalers.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 name, target e autoscalingPolicy campi. autoscalingPolicy deve definire loadBalancingUtilization.

Puoi utilizzare il campo coolDownPeriodSec per impostare il periodo di inizializzazione, che indica gestore della scalabilità automatica: il tempo necessario per l'inizializzazione della tua 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 saperne di più sull'abilitazione della scalabilità automatica basata sul bilanciamento del carico capacità di distribuzione, completa il tutorial Scalabilità automatica globale di un servizio web su Compute Engine.

Passaggi successivi