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.
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.
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.
Como ativar o isolamento
gcloud
Siga estas etapas para criar uma configuração de isolamento usando a CLI do Google Cloud.
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:
- NEAREST: o tráfego é enviado para a região mais próxima.
- 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.
Depois que um recurso
serviceLbPolicy
for criado ou atualizado, anexe-o ao recursobackendService
: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:
- Defina
isolationConfigs
como "unspecified". - 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.