Aislamiento para Cloud Service Mesh
En esta página, se muestra cómo configurar tu malla de servicios con un mejor aislamiento de solicitudes para tu servicio de backend creando una configuración de aislamiento.
Esta función proporciona compatibilidad de aislamiento adicional para los backends de tus servicios y, así, evitar el desbordamiento entre regiones.
De forma predeterminada, Cloud Service Mesh usa el algoritmo de cascada por región para decidir a dónde se debe enrutar el tráfico de usuarios. Con este algoritmo, Cloud Service Mesh enruta el tráfico a la región más cercana hasta que los backends se ejecutan en su límite de capacidad configurado. Después de eso, el tráfico comenzará a desbordarse hacia una región que esté más lejos.
Con esta función, según tu región de frontend y la configuración de aislamiento, el tráfico se limita a la región más cercana o local, y no se desbordará si la región más cercana se queda sin capacidad. Esto te ayuda a evitar posibles fallas en cascada y a limitar las posibles interrupciones en la misma región. De lo contrario, seguirás administrando la configuración del servicio a nivel global.
Si debes usar o no esta función depende de tus casos de uso reales, y debes explorar cuidadosamente las siguientes consideraciones antes de usarla:
- Si tus backends en una región están sobrecargados, es posible que Cloud Service Mesh siga enviándoles tráfico adicional, incluso si los backends en otras regiones pueden controlarlo. Esto significa que es más probable que cada región individual se sobrecargue debido al tráfico adicional, por lo que debes planificar en consecuencia.
- Tu tráfico aún se enruta con un plano de control global. Esto significa que aún existe la posibilidad de que se produzcan fallas coordinadas a nivel global en varias regiones.
- Esta función se configura con el recurso serviceLbPolicy. Se siguen aplicando todas las restricciones.
- Con el modo de aislamiento STRICT, las solicitudes fallan si no hay backends de servicio en la misma región.
Después de aplicar esta función, se pueden dar dos situaciones:
Aislamiento más cercano
El aislamiento regional más cercano es donde un frontend con backends ubicados en el mismo lugar se aislará solo en esa región. Si no hay un backend disponible en la ubicación local, se conectará a la región del backend mientras se optimiza la latencia de la red.
Aislamiento estricto
El aislamiento regional estricto es aquel en el que las ubicaciones de frontend solo pueden acceder a backends dentro de la región local. Los frontends sin backends de entrega en la región local descartarán todo su tráfico.
Cómo habilitar el aislamiento
gcloud
Sigue estos pasos para crear una configuración de aislamiento con Google Cloud CLI.
Ejecuta el siguiente comando para crear un
serviceLbPolicy
:gcloud network-services service-lb-policies create my-isolation-policy \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
Reemplaza ISOLATION_MODE por una de las siguientes opciones:
- NEAREST: El tráfico se envía a la región más cercana.
- STRICT: El tráfico falla si no hay backends de entrega disponibles en la misma región que el frontend.
Si no se proporciona de forma explícita, NEAREST es el valor predeterminado. Ten en cuenta que solo puedes especificar este campo si también se configura la marca
--isolation-granularity
.Como alternativa, si tienes una política existente, actualízala con el siguiente comando:
gcloud network-services service-lb-policies update POLICY_NAME \ --isolation-config-granularity=REGION \ --isolation-config-mode=ISOLATION_MODE \ --location=global
Reemplaza POLICY_NAME por el nombre de tu política existente.
Una vez que se crea o actualiza un recurso
serviceLbPolicy
, adjúntalo a tu recursobackendService
:gcloud compute backend-services update BACKEND_SERVICE_NAME \ ‐‐service-lb-policy POLICY_URL
Reemplaza BACKEND_SERVICE_NAME por el nombre de tu servicio de backend.
Inhabilita el aislamiento
Para inhabilitar esta función, tienes dos opciones:
- Establece
isolationConfigs
como no especificado. - Quita
ServiceLbPolicy
del servicio si es la única función que habilitaste con esta política.
Establece isolationConfigs
como no especificado
Ejecuta el siguiente comando para establecer isolationConfigs
como no especificado:
gcloud network-services service-lb-policies update my-isolation-policy \
--isolation-config-granularity=unspecified \
--isolation-config-mode=unspecified \
--location=global
Quita ServiceLbPolicy
del servicio
Ejecuta el siguiente comando para quitar ServiceLbPolicy
:
gcloud network-services service-lb-policies delete my-isolation-policy --location=global
Asistencia, diagnóstico y solución de problemas
En esta sección, se describen los posibles problemas que pueden surgir después de activar esta función.
Backends sobrecargados
Esta función proporciona compatibilidad con el aislamiento, por lo que el tráfico no se desplazará a una región remota si la región local está completa. Por lo tanto, algunos de tus servidores de backend podrían sobrecargarse si esta función está activada. Si este no es el comportamiento que buscas, considera desactivar esta función. También puedes considerar habilitar el ajuste de escala automático para controlar mejor las sobrecargas del backend.
Se cambió el tráfico
Esta función evita el desbordamiento de tráfico basado en la capacidad. Por lo tanto, si tus backends estaban sobrecargados antes de activar esta función, es posible que el tráfico ya se haya transferido a una región remota. En ese caso, activar esta función podría hacer que ese tráfico vuelva a cambiar.
No se cambió el tráfico
Esta función evita el desbordamiento de tráfico basado en la capacidad. Por lo tanto, si tus backends no estaban sobrecargados antes de activar esta función, es probable que la región más cercana pueda controlar todo el tráfico. En ese caso, activar esta función puede no causar cambios en el tráfico a corto plazo.
El tráfico se cambió después de que se agregaron o quitaron backends de una región
Cuando esta función está activada, es posible que se desvíe el tráfico si se agregan backends nuevos a una región. Esto es lo esperado, ya que Cloud Service Mesh intentará enrutar el tráfico a estos backends para optimizar la latencia general de la red. Del mismo modo, cuando se quiten los últimos backends, Cloud Service Mesh comenzará a enviar tráfico a una región remota. Este también es un comportamiento esperado.
Se produjeron errores en las solicitudes
Si el modo de aislamiento STRICT está habilitado y no hay backends que presten servicios en la misma región que el frontend, se espera que falle el tráfico. Si no es el comportamiento esperado, asegúrate de tener backends en cada una de las regiones a las que esperas que se envíe el tráfico.