Isolamento per Cloud Service Mesh

Questa pagina mostra come configurare il mesh di servizi con un migliore isolamento delle richieste per il servizio di backend creando una configurazione di isolamento.

Questa funzionalità fornisce un supporto di isolamento aggiuntivo per i backend dei tuoi servizi per evitare l'overflow tra regioni.

Per impostazione predefinita, Cloud Service Mesh utilizza l'algoritmo di cascata per regione per decidere dove instradare il traffico degli utenti. Con questo algoritmo, Cloud Service Mesh instrada il traffico alla regione più vicina finché i backend non raggiungono il limite di capacità configurato. Dopodiché, il traffico inizierà a riversarsi in una regione più lontana.

Con questa funzionalità, in base alla regione di frontend e alla configurazione dell'isolamento, il traffico è limitato alla regione più vicina o locale e non si verifica un overflow se la regione più vicina sta esaurendo la capacità. In questo modo, puoi prevenire potenziali errori a cascata e limitare potenziali interruzioni nella stessa regione. In caso contrario, continui a gestire la configurazione del servizio a livello globale.

diagramma di isolamento

L'utilizzo o meno di questa funzionalità dipende dai tuoi casi d'uso effettivi e devi valutare attentamente le seguenti considerazioni prima di utilizzarla:

  • Se i backend in una regione sono sovraccarichi, Cloud Service Mesh potrebbe comunque inviare loro traffico aggiuntivo anche se i backend in altre regioni possono gestirlo. Ciò significa che è più probabile che ogni singola regione si sovraccarichi a causa del traffico aggiuntivo e che devi pianificare di conseguenza.
  • Il traffico viene comunque instradato con un control plane globale. Ciò significa che esiste ancora la possibilità di errori coordinati a livello globale in più regioni.
  • Questa funzionalità è configurata con la risorsa ServiceLbPolicy. Tutte le limitazioni continuano a essere applicate.
  • Con la modalità di isolamento STRICT, le richieste non vanno a buon fine se non sono presenti backend di gestione nella stessa regione.

Dopo aver applicato questa funzionalità, si possono verificare due scenari:

Isolamento più vicino

L'isolamento regionale più vicino si verifica quando un frontend con backend collocati viene isolato solo in quella regione. Se non è disponibile alcun backend nella località locale, verrà connesso alla regione del backend ottimizzando la latenza di rete.

Diagramma di isolamento più vicino

Isolamento rigoroso

L'isolamento regionale rigoroso si verifica quando le località di frontend possono raggiungere i backend solo all'interno della regione locale. I frontend senza backend di gestione nella regione locale perderanno tutto il traffico.

Diagramma di isolamento rigoroso

Attivazione dell'isolamento

gcloud

Per creare una configurazione di isolamento utilizzando Google Cloud CLI, segui questi passaggi.

  1. Esegui il comando seguente per creare un serviceLbPolicy:

    gcloud network-services service-lb-policies create my-isolation-policy \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    Sostituisci ISOLATION_MODE con una delle seguenti opzioni:

    1. NEAREST: il traffico viene inviato alla regione più vicina.
    2. STRICT: il traffico non va a buon fine se non sono disponibili backend di gestione nella stessa regione del frontend.

    Se non viene fornito esplicitamente, il valore predefinito è NEAREST. Tieni presente che puoi specificare questo campo solo se è impostato anche il flag --isolation-granularity.

    In alternativa, se hai una policy esistente, aggiornala con il seguente comando:

    gcloud network-services service-lb-policies update POLICY_NAME \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    Sostituisci POLICY_NAME con il nome della policy esistente.

  2. Una volta creata o aggiornata una risorsa serviceLbPolicy, collegala alla risorsa backendService:

      gcloud compute backend-services update BACKEND_SERVICE_NAME \
      ‐‐service-lb-policy POLICY_URL
    

    Sostituisci BACKEND_SERVICE_NAME con il nome del tuo servizio di backend.

Disattiva l'isolamento

Per disattivare questa funzionalità, hai due opzioni:

  1. Imposta isolationConfigs su Non specificato.
  2. Rimuovi ServiceLbPolicy dal servizio se è l'unica funzionalità che hai attivato con questa policy

Imposta isolationConfigs su Non specificato

Esegui questo comando per impostare isolationConfigs su non specificato:

gcloud network-services service-lb-policies update my-isolation-policy \
  --isolation-config-granularity=unspecified \
  --isolation-config-mode=unspecified \
  --location=global

Rimuovi ServiceLbPolicy dal servizio

Esegui questo comando per rimuovere ServiceLbPolicy:

gcloud network-services service-lb-policies delete my-isolation-policy --location=global

Supportabilità, diagnosi e risoluzione dei problemi

Questa sezione descrive i potenziali problemi che potrebbero verificarsi dopo l'attivazione di questa funzionalità.

Backend sovraccarichi

Questa funzionalità fornisce il supporto per l'isolamento, pertanto il traffico non verrà spostato in una regione remota se la regione locale è piena. Pertanto, se questa funzionalità è attiva, alcuni dei tuoi backend potrebbero essere sovraccarichi. Se questo non è il comportamento che stai cercando, valuta la possibilità di disattivare questa funzionalità. Puoi anche valutare di attivare la scalabilità automatica per gestire meglio i sovraccarichi del backend.

Il traffico è stato spostato

Questa funzionalità impedisce l'overflow del traffico basato sulla capacità. Quindi, se i tuoi backend erano sovraccarichi prima di attivare questa funzionalità, il traffico potrebbe essere già stato spostato in una regione remota. In questo caso, l'attivazione di questa funzionalità potrebbe causare lo spostamento di questo traffico.

Il traffico non è stato spostato

Questa funzionalità impedisce l'overflow del traffico basato sulla capacità. Quindi, se i tuoi backend non erano sovraccarichi prima di attivare questa funzionalità, è probabile che la regione più vicina sia in grado di gestire tutto il traffico. In questo caso, l'attivazione di questa funzionalità potrebbe non causare variazioni del traffico nel breve termine.

Il traffico è stato spostato dopo l'aggiunta o la rimozione di backend da una regione

Quando questa funzionalità è attiva, il traffico potrebbe essere spostato se vengono aggiunti nuovi backend a una regione. Questo è il comportamento previsto, poiché Cloud Service Mesh tenterà di instradare il traffico a questi backend per ottimizzare la latenza di rete complessiva. Analogamente, quando vengono rimossi gli ultimi backend, Cloud Service Mesh inizierà a inviare traffico a una regione remota. Anche questo è un comportamento previsto.

Richieste non riuscite

Se la modalità di isolamento STRICT è attiva e non sono presenti backend nella stessa regione del frontend, il traffico dovrebbe non riuscire. Se questo non è il comportamento previsto, assicurati di avere backend in ciascuna delle regioni in cui prevedi che venga inviato il traffico.