Resolver problemas de escalabilidade na malha de serviço na nuvem

Esta secção explica os problemas comuns do Cloud Service Mesh e como os resolver. Se precisar de assistência adicional, consulte a secção Receber apoio técnico.

Fatores de escalabilidade

O Istiod envia a configuração a cada sidecar através de uma stream gRPC de longa duração. Tem várias caraterísticas que afetam o dimensionamento:

  • O tamanho da configuração a gerar:
    • Número total de serviços/pods e recursos do Istio
    • Para uma grande escala, ajuste as definições do Sidecar para reduzir o tamanho da configuração.
  • A taxa de alteração no ambiente:
    • Quando é criado um novo serviço ou a configuração do Istio é alterada, são enviadas atualizações completas aos proxies.
    • A adição de novos pontos finais é barata para o desempenho, porque apenas são enviadas atualizações incrementais.
  • O número de proxies para os quais a configuração é gerada:
    • Afetado pelo número de gateways e pods com um sidecar.

Considerações sobre o dimensionamento

O Istiod é bem dimensionado verticalmente (pedidos grandes) e horizontalmente (mais réplicas). Certifique-se de que os limites da CPU não são demasiado restritivos. Se o Istiod atingir o limite da CPU, pode ocorrer uma limitação, o que afeta negativamente a distribuição da configuração. Se tiver problemas de desempenho, pondere atualizar para a versão mais recente da Cloud Service Mesh, uma vez que cada versão tem otimizações de desempenho.

Para mais orientações sobre como dimensionar a sua malha, consulte o guia de práticas recomendadas de escalabilidade.

Carga desequilibrada

As alterações significativas no tamanho do cluster podem causar uma carga temporariamente desequilibrada devido às ligações de longa duração. Isto é mitigado por um tempo máximo de ligação de 30 minutos, o que pode resultar em mensagens de erro no Envoy, como gRPC config stream closed: 13, o que permite que a carga seja reequilibrada naturalmente.

Mitigue este problema tendo várias réplicas do Istiod (o valor predefinido é 2 réplicas) e pré-dimensionando se esperar dimensionamentos extremos do cluster.