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 mediante la creación de una configuración de aislamiento.

Esta función proporciona compatibilidad de aislamiento adicional para los backends de tus servicios para evitar el desbordamiento interregional.

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, aún administrarás la configuración de tu servicio a nivel global.

Diagrama de aislamiento

El uso de esta función depende de tus casos de uso reales, y debes explorar detenidamente las siguientes consideraciones antes de usarla:

  • Si tus backends en una región están sobrecargados, es posible que Cloud Service Mesh aún les envíe tráfico adicional, incluso si los backends de otras regiones pueden controlar el tráfico. Esto significa que es más probable que cada región individual se sobrecargue debido al tráfico adicional, y 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 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 entrega en la misma región.

Existen dos situaciones después de aplicar esta función:

Aislamiento más cercano

El aislamiento regional más cercano es cuando un frontend con backends ubicados en el mismo lugar se aísla solo en esa región. Si no hay un backend disponible en la ubicación local, se conectará a la región de backend mientras se optimiza la latencia de la red.

Diagrama de aislamiento más cercano

Aislamiento estricto

El aislamiento regional estricto es cuando las ubicaciones de frontend solo pueden llegar a los backends dentro de la región local. Los frontends sin backends de entrega en la región local descartarán todo su tráfico.

Diagrama de aislamiento estricto

Cómo habilitar el aislamiento

gcloud

Sigue estos pasos para crear una configuración de aislamiento con Google Cloud CLI.

  1. 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:

    1. NEAREST: El tráfico se envía a la región más cercana.
    2. ESTRICTO: 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 establece 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.

  2. Una vez que se crea o actualiza un recurso serviceLbPolicy, adjúntalo a tu recurso backendService:

      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.

Cómo inhabilitar el aislamiento

Para inhabilitar esta función, tienes dos opciones:

  1. Establece isolationConfigs como no especificado.
  2. 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 después de activar esta función.

Backends sobrecargados

Esta función proporciona compatibilidad de aislamiento y, por lo tanto, el tráfico no se cambiará a una región remota si la región local está llena. Por lo tanto, algunos de tus backends 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 escalamiento automático para controlar mejor las sobrecargas de 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 cambiado a una región remota. En ese caso, activar esta función podría hacer que este 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 podría no causar cambios de tráfico a corto plazo.

Se cambió el tráfico después de que se agregaron o quitaron backends de una región

Cuando esta función está activada, es posible que se cambie 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.

Fallaron las solicitudes

Si el modo de aislamiento STRICT está habilitado y no hay backends que entreguen en la misma región que el frontend, se espera que falle el tráfico. Si no es el comportamiento deseado, asegúrate de tener backends en cada una de las regiones a las que esperas que se envíe el tráfico.