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 servizi per evitare l'overflow interregionale.

Per impostazione predefinita, Cloud Service Mesh utilizza l' algoritmo a cascata per regione per decidere dove instradare il traffico utente. 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 del frontend e alla configurazione dell'isolamento, il traffico è limitato alla regione più vicina o locale e non si riverserà se la regione più vicina sta esaurendo la capacità. In questo modo, puoi prevenire potenziali errori a cascata e limitare le potenziali interruzioni nella stessa regione. In caso contrario, gestisci comunque 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 esaminare attentamente le seguenti considerazioni prima di utilizzarla:

  • Se i backend di una regione sono sovraccarichi, Cloud Service Mesh potrebbe comunque inviare loro traffico aggiuntivo anche se i backend di altre regioni sono in grado di gestire il traffico. Ciò significa che è più probabile che ogni singola regione venga sovraccaricata a causa del traffico aggiuntivo e 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à viene configurata con la risorsa serviceLbPolicy. Si applicano ancora tutte le limitazioni.
  • Con la modalità di isolamento STRICT, le richieste non vanno a buon fine se non sono presenti backend di pubblicazione nella stessa regione.

Esistono due scenari dopo l'applicazione di questa funzionalità:

Isolamento più vicino

L'isolamento regionale più vicino è quello in cui un frontend con backend colocalizzati 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 è quello in cui le località frontend possono raggiungere solo i backend all'interno della regione locale. I frontend senza backend di pubblicazione nella regione locale elimineranno tutto il traffico.

Diagramma di isolamento rigoroso

Attivazione dell'isolamento

gcloud

Segui questi passaggi per creare una configurazione di isolamento utilizzando Google Cloud CLI.

  1. Esegui questo comando 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 pubblicazione nella stessa regione del frontend.

    Se non viene fornito esplicitamente, NEAREST è il valore predefinito. 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 servizio di backend.

Disattivazione dell'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

Supporto, diagnostica e risoluzione dei problemi

Questa sezione descrive i potenziali problemi 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, alcuni backend potrebbero essere sovraccarichi se questa funzionalità è attivata. Se questo non è il comportamento che stai cercando, valuta la possibilità di disattivare questa funzionalità. Puoi anche valutare la possibilità 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à. Pertanto, se i 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à. Pertanto, se i 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 spostamenti di traffico a breve termine.

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

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

Le richieste non sono andate a buon fine

Se la modalità di isolamento STRICT è attivata e non sono presenti backend di pubblicazione nella stessa regione del frontend, è previsto che il traffico non vada a buon fine. Se non è il comportamento previsto, assicurati di avere backend in ognuna delle regioni in cui prevedi che venga inviato il traffico.