Isolamento para o Cloud Service Mesh

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

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

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

Com esse recurso, com base na sua 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 transborda se a região mais próxima estiver ficando sem capacidade. Isso ajuda a evitar possíveis falhas em cascata e limitar 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

O uso desse recurso depende dos seus casos de uso reais. Antes de usá-lo, analise com cuidado as seguintes considerações:

  • Se os back-ends de uma região estiverem sobrecarregados, a malha de serviço do Cloud ainda poderá enviar tráfego adicional para eles, mesmo que os back-ends de outras regiões possam processar o tráfego. Isso significa que cada região individual tem mais chances de ficar sobrecarregada devido ao tráfego adicional, e você precisa planejar de acordo.
  • Seu tráfego ainda é roteado com um plano de controle global. Isso significa que ainda há uma chance de falhas coordenadas globalmente em várias regiões.
  • Esse recurso é configurado com o recurso serviceLbPolicy. Todas as restrições ainda são válidas.
  • No 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 colocados é isolado apenas para essa região. Se não houver um back-end disponível no local, ele será conectado à região de back-end enquanto otimiza 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 estrito

Como ativar o isolamento

gcloud

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

  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. ESTRITO: o tráfego falha se não houver back-ends de serviço disponíveis na mesma região que o front-end.

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

    Se você já 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 atual.

  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 isolamento

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

  1. Defina isolationConfigs como "unspecified".
  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 o 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

Remova 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 ao isolamento. 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 podem ficar sobrecarregados se esse recurso estiver ativado. Se não é isso que você quer, desative o recurso. Você também pode ativar o escalonamento automático para lidar melhor com sobrecargas de back-end.

O tráfego foi transferido

Esse recurso evita o excesso 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 evita o excesso 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 no 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 tentará rotear o tráfego para esses back-ends e otimizar a latência geral da rede. Da mesma forma, quando os últimos back-ends forem removidos, o Cloud Service Mesh começará a enviar tráfego para uma região remota. Esse também é um comportamento esperado.

Falha nas solicitações

Se o modo de isolamento ESTRITO estiver ativado e não houver back-ends atendendo na mesma região que o front-end, o tráfego vai falhar. Se esse não for o comportamento esperado, verifique se você tem back-ends em cada uma das regiões em que espera que o tráfego seja enviado.