Aislamiento de Cloud Service Mesh

En esta página se muestra cómo configurar tu malla de servicios para mejorar el aislamiento de las solicitudes de tu servicio de backend creando una configuración de aislamiento.

Esta función proporciona asistencia de aislamiento adicional para los back-ends de tus servicios para 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 dirigir el tráfico de los usuarios. Con este algoritmo, Cloud Service Mesh dirige el tráfico a la región más cercana hasta que los back-ends alcancen el límite de capacidad configurado. Después, el tráfico empezará a desviarse a una región que esté más lejos.

Con esta función, en función de tu región de frontend y de la configuración del 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. De esta forma, puedes evitar posibles fallos en cascada y limitar las posibles interrupciones en la misma región. De lo contrario, seguirás gestionando la configuración del servicio a nivel global.

diagrama de aislamiento

Si debes usar o no esta función, depende de tus casos prácticos. Antes de usarla, debes tener en cuenta lo siguiente:

  • Si tus back-ends de una región están sobrecargados, Cloud Service Mesh puede seguir enviándoles tráfico adicional aunque los back-ends de otras regiones puedan gestionarlo. Esto significa que es más probable que cada región individual se sobrecargue debido al tráfico adicional, por lo que debes planificarlo en consecuencia.
  • Tu tráfico sigue enrutándose con un plano de control global. Esto significa que aún existe la posibilidad de que se produzcan fallos coordinados 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 ESTRICTO, las solicitudes fallan si no hay back-ends de servicio en la misma región.

Hay dos situaciones que se pueden dar después de aplicar esta función:

Aislamiento más cercano

El aislamiento regional más cercano es aquel en el que un frontend con backends colocados se aísla solo en esa región. Si no hay ningún backend disponible en la ubicación local, se conectará a la región del backend y se optimizará la latencia de la red.

Diagrama de aislamiento más cercano

Aislamiento estricto

El aislamiento regional estricto es aquel en el que las ubicaciones de frontend solo pueden acceder a los backends de la región local. Los front-ends que no tengan back-ends de servicio en la región local rechazarán todo el tráfico.

Diagrama de aislamiento estricto

Habilitar el aislamiento

gcloud

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

  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
    

    Sustituye ISOLATION_MODE por una de las siguientes opciones:

    1. MÁS CERCANA: el tráfico se envía a la región más cercana.
    2. ESTRICTO: el tráfico falla si no hay backends de servicio disponibles en la misma región que el frontend.

    Si no se proporciona explícitamente, el valor predeterminado es NEAREST. Ten en cuenta que solo puedes especificar este campo si también se ha definido la marca --isolation-granularity.

    Si ya tienes una política, puedes actualizarla con el siguiente comando:

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

    Sustituye POLICY_NAME por el nombre de la política que ya tienes.

  2. Una vez que se haya creado o actualizado un recurso serviceLbPolicy, adjúntelo a su recurso backendService:

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

    Sustituye BACKEND_SERVICE_NAME por el nombre de tu servicio backend.

Inhabilitar aislamiento

Para inhabilitar esta función, tienes dos opciones:

  1. Define isolationConfigs como no especificado.
  2. Quita ServiceLbPolicy del servicio si es la única función que has habilitado con esta política.

Definir isolationConfigs como sin especificar

Ejecuta el siguiente comando para definir isolationConfigs como no especificado:

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

Quitar a ServiceLbPolicy del servicio

Ejecuta el siguiente comando para quitar el 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 desviará a una región remota si la región local está llena. Por lo tanto, algunos de tus back-ends podrían sobrecargarse si esta función está activada. Si no es el comportamiento que buscas, puedes desactivar esta función. También puedes habilitar el autoescalado para gestionar mejor las sobrecargas del backend.

Se ha desviado el tráfico

Esta función evita que se produzca un desbordamiento del tráfico en función de la capacidad. Por lo tanto, si tus back-ends estaban sobrecargados antes de activar esta función, es posible que el tráfico ya se haya desviado a una región remota. En ese caso, activar esta función podría provocar que ese tráfico se redirija de nuevo.

No se ha desviado el tráfico

Esta función evita que se produzca un desbordamiento del tráfico en función de la capacidad. Por lo tanto, si tus back-ends no estaban sobrecargados antes de activar esta función, es probable que la región más cercana pueda gestionar todo el tráfico. En ese caso, activar esta función puede que no provoque cambios en el tráfico a corto plazo.

El tráfico se ha desviado después de añadir o quitar back-ends de una región

Si esta función está activada, el tráfico puede desviarse si se añaden nuevos back-ends a una región. Esto es normal, ya que Cloud Service Mesh intentará enrutar el tráfico a estos back-ends para optimizar la latencia general de la red. Del mismo modo, cuando se eliminen los últimos back-ends, Cloud Service Mesh empezará a enviar tráfico a una región remota. Este es también el comportamiento esperado.

Solicitudes erróneas

Si el modo de aislamiento ESTRICTO está habilitado y no hay back-ends que sirvan en la misma región que el frontend, se espera que el tráfico falle. Si no es el comportamiento que esperabas, asegúrate de que tienes back-ends en cada una de las regiones a las que esperas que se envíe el tráfico.