Aplicação cliente alojada no Kubernetes

Conexões de cliente de vários pods

Quando você tiver vários pods se conectando a um servidor Redis, certifique-se de que as novas conexões dos pods sejam criadas de maneira escalonada. Se vários pods começarem em um curto espaço de tempo sem cambalear, isso causará um aumento repentino no número de conexões de cliente criadas. O alto número de conexões leva a uma alta carga no servidor Redis e pode causar tempos limites.

Evite o mesmo cenário ao desligar vários pods ao mesmo tempo. A falha no desligamento escalonado pode causar uma queda acentuada no número de conexões que leva à pressão da CPU.

Recursos suficientes do pod

Certifique-se de que o pod que executa seu aplicativo cliente receba recursos suficientes de CPU e memória. Se o aplicativo cliente estiver sendo executado perto de seus limites de recursos, isso pode resultar em tempos limites.

Recursos de nó suficientes

Um pod em execução na aplicação cliente pode ser afetado por outros pods em execução no mesmo nó e limitar as ligações Redis ou as operações de E/S. Portanto, certifique-se sempre de que o nó no qual os pods de aplicativo cliente são executados tenha memória, CPU e largura de banda de rede suficientes. A escassez de qualquer um desses recursos pode resultar em problemas de conectividade.

Aplicativos cliente hospedados no Linux e configurações TCP

Se o seu aplicativo cliente do Cache do Azure para Redis for executado em um contêiner baseado em Linux, recomendamos atualizar algumas configurações de TCP. Essas configurações são detalhadas nas configurações de TCP para aplicativos cliente hospedados no Linux.

Potencial colisão de conexão com o Istio/Envoy

Atualmente, o Cache Redis do Azure usa as portas 15xxx para caches clusterizados para expor nós de cluster a aplicativos cliente. Conforme documentado aqui, as mesmas portas também são usadas por Istio.io proxy sidecar chamado Envoy e podem interferir na criação de conexões, especialmente nas portas 15001 e 15006.

Ao usar o Istio com um cluster do Cache do Azure para Redis, considere excluir as possíveis portas de colisão com uma anotação istio.

annotations:
  traffic.sidecar.istio.io/excludeOutboundPorts: "15000,15001,15004,15006,15008,15009,15020"

Para evitar interferências na conexão, recomendamos:

  • Em vez disso, considere usar um cache não clusterizado ou um cache de camada Enterprise
  • Evite configurar sidecars do Istio em pods que executam o Cache do Azure para código de cliente Redis