Isolamento para o Cloud Service Mesh

Nesta página, mostramos como configurar a malha de serviço com melhor isolamento de solicitações para o serviço de back-end criando uma configuração de isolamento.

Esse recurso oferece suporte de isolamento adicional para os back-ends dos serviços, evitando o estouro entre regiões.

Por padrão, o Cloud Service Mesh usa o algoritmo de cascata por região para decidir para onde o tráfego do usuário será roteado. Com esse algoritmo, o Cloud Service Mesh roteia o tráfego para a região mais próxima até que os back-ends estejam em execução no limite de capacidade configurado. Depois disso, o tráfego começará a estourar em uma região mais distante.

Com esse recurso, com base na região de front-end e na configuração de isolamento, o tráfego é limitado à região mais próxima ou local e não vai estourar se a região mais próxima estiver ficando sem capacidade. Isso ajuda a evitar possíveis falhas em cascata e limita possíveis interrupções na mesma região. Caso contrário, você ainda gerencia a configuração do serviço no nível global.

diagrama de isolamento

Se você vai usar ou não esse recurso depende dos seus casos de uso reais. Analise cuidadosamente as considerações a seguir antes de usá-lo:

  • Se os back-ends em uma região estiverem sobrecarregados, o Cloud Service Mesh ainda poderá enviar tráfego adicional para eles, mesmo que os back-ends em outras regiões possam processar o tráfego. Isso significa que cada região individual tem mais probabilidade de sobrecarga devido ao tráfego adicional, e você precisa planejar de acordo.
  • O tráfego ainda é roteado com um plano de controle global. Isso significa que ainda há chance de falhas coordenadas globalmente em várias regiões.
  • Esse recurso é configurado com o recurso serviceLbPolicy. Todas as restrições ainda se aplicam.
  • Com o modo de isolamento STRICT, as solicitações falham se não houver back-ends de serviço na mesma região.

Há dois cenários após a aplicação desse recurso:

Isolamento mais próximo

O isolamento regional mais próximo é quando um front-end com back-ends colocalizados é isolado apenas para essa região. Se nenhum back-end disponível estiver no local, ele será conectado à região de back-end ao otimizar a latência da rede.

Diagrama de isolamento mais próximo

Isolamento estrito

O isolamento regional estrito é quando os locais de front-end só podem alcançar back-ends na região local. Os front-ends sem back-ends de serviço na região local vão descartar todo o tráfego.

Diagrama de isolamento rígido

Como ativar o isolamento

gcloud

Siga estas etapas para criar uma configuração de isolamento usando a Google Cloud CLI.

  1. Execute o comando a seguir para criar um serviceLbPolicy:

    gcloud network-services service-lb-policies create my-isolation-policy \
        --isolation-config-granularity=REGION \
        --isolation-config-mode=ISOLATION_MODE \
        --location=global
    

    Substitua ISOLATION_MODE por uma das seguintes opções:

    1. NEAREST: o tráfego é enviado para a região mais próxima.
    2. STRICT: o tráfego falha se nenhum back-end de serviço estiver disponível na mesma região do front-end.

    Se não for fornecido explicitamente, NEAREST será o valor padrão. Só é possível especificar esse campo se o flag --isolation-granularity também estiver definido.

    Como alternativa, se você tiver uma política, atualize-a com o seguinte comando:

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

    Substitua POLICY_NAME pelo nome da política.

  2. Depois que um recurso serviceLbPolicy for criado ou atualizado, anexe-o ao recurso backendService:

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

    Substitua BACKEND_SERVICE_NAME pelo nome do serviço de back-end.

Desativar o isolamento

Para desativar esse recurso, você tem duas opções:

  1. Defina isolationConfigs como não especificado.
  2. Remova ServiceLbPolicy do serviço se ele for o único recurso ativado com essa política.

Definir isolationConfigs como não especificado

Execute o comando a seguir para definir isolationConfigs como não especificado:

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

Remover ServiceLbPolicy do serviço

Execute o comando a seguir para remover o ServiceLbPolicy:

gcloud network-services service-lb-policies delete my-isolation-policy --location=global

Suporte, diagnóstico e solução de problemas

Esta seção descreve possíveis problemas após a ativação desse recurso.

Back-ends sobrecarregados

Esse recurso oferece suporte de isolamento e, portanto, o tráfego não será transferido para uma região remota se a região local estiver cheia. Portanto, alguns dos seus back-ends poderão ficar sobrecarregados se esse recurso estiver ativado. Se esse não for o comportamento desejado, desative esse recurso. Você também pode considerar ativar o escalonamento automático para lidar melhor com as sobrecargas de back-end.

O tráfego foi transferido

Esse recurso impede o estouro de tráfego com base na capacidade. Portanto, se os back-ends estavam sobrecarregados antes de ativar esse recurso, o tráfego já pode ter sido transferido para uma região remota. Nesse caso, ativar esse recurso pode fazer com que esse tráfego seja transferido de volta.

O tráfego não foi transferido

Esse recurso impede o estouro de tráfego com base na capacidade. Portanto, se os back-ends não estavam sobrecarregados antes de ativar esse recurso, é provável que a região mais próxima seja capaz de processar todo o tráfego. Nesse caso, ativar esse recurso pode não causar mudanças de tráfego no curto prazo.

O tráfego foi transferido depois que os back-ends foram adicionados ou removidos de uma região

Quando esse recurso está ativado, o tráfego pode ser transferido se novos back-ends forem adicionados a uma região. Isso é esperado, já que o Cloud Service Mesh vai tentar rotear o tráfego para esses back-ends para otimizar a latência geral da rede. Da mesma forma, quando os últimos back-ends são removidos, o Cloud Service Mesh começa a enviar tráfego para uma região remota. Esse também é um comportamento esperado.

Falha nas solicitações

Se o modo de isolamento STRICT estiver ativado e não houver back-ends de serviço na mesma região do front-end, o tráfego vai falhar. Se esse não for o comportamento pretendido, verifique se há back-ends em cada uma das regiões para as quais você espera que o tráfego seja enviado.