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 impedire l'overflow tra regioni.
Per impostazione predefinita, Cloud Service Mesh utilizza l'algoritmo a 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 vengono eseguiti al limite di capacità configurato. Dopodiché, il traffico inizierà a riversarsi in una regione più lontana.
Con questa funzionalità, in base alla regione 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. Altrimenti, continui a gestire la configurazione del servizio a livello globale.
L'utilizzo di questa funzionalità dipende dai tuoi casi d'uso effettivi e devi esaminare attentamente le seguenti considerazioni prima di utilizzarla:
- Se i backend in una regione sono sovraccarichi, Cloud Service Mesh potrebbe comunque inviare traffico aggiuntivo anche se i backend in altre regioni possono gestirlo. Ciò significa che è più probabile che ogni singola regione venga sovraccaricata a causa del traffico aggiuntivo e devi pianificare di conseguenza.
- Il traffico viene ancora 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. Tutte le limitazioni sono ancora valide.
- Con la modalità di isolamento STRICT, le richieste non vanno a buon fine se non sono presenti backend di pubblicazione nella stessa regione.
Dopo aver applicato questa funzionalità, si verificano 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 posizione locale, verrà connesso alla regione di backend ottimizzando la latenza di rete.
Isolamento rigido
L'isolamento regionale rigoroso è una situazione in cui le posizioni frontend possono raggiungere solo i backend all'interno della regione locale. I frontend senza backend di pubblicazione nella regione locale interromperanno tutto il traffico.
Attivazione dell'isolamento
gcloud
Segui questi passaggi per creare una configurazione di isolamento utilizzando Google Cloud CLI.
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:
- PIÙ VICINA: il traffico viene inviato alla regione più vicina.
- 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 tua policy esistente.
Una volta creata o aggiornata una risorsa
serviceLbPolicy
, allegala alla risorsabackendService
: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 isolamento
Per disattivare questa funzionalità, hai due opzioni:
- Imposta
isolationConfigs
su non specificato. - Rimuovi
ServiceLbPolicy
dal servizio se è l'unica funzionalità che hai attivato con questa norma
Imposta isolationConfigs
su Non specificato
Esegui questo comando per impostare isolationConfigs
su unspecified:
gcloud network-services service-lb-policies update my-isolation-policy \
--isolation-config-granularity=unspecified \
--isolation-config-mode=unspecified \
--location=global
Rimuovere 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 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 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 dell'attivazione di 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 nuovo 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 dell'attivazione di 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 del traffico nel breve termine.
Il traffico è stato spostato dopo che i backend sono stati aggiunti o rimossi da una regione
Quando questa funzionalità è attiva, il traffico potrebbe essere spostato se vengono aggiunti nuovi backend a una regione. Questo comportamento è 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.
Richieste non riuscite
Se la modalità di isolamento STRICT è attivata e non sono presenti backend che gestiscono richieste nella stessa regione del frontend, è previsto un errore nel traffico. Se non è il comportamento previsto, assicurati di avere backend in ciascuna delle regioni in cui prevedi che venga inviato il traffico.