Aplicativos cliente hospedados no Kubernetes

Conexões de cliente de vários pods

Quando há vários pods se conectando um servidor Redis, é preciso que as novas conexões do pods sejam criadas de maneira escalonada. Se vários pods iniciarem em um curto período sem escalonar, isso causará um pico repentino no número de conexões de cliente criadas. O número alto de conexões leva a uma carga alta no servidor Redis e pode causar problemas de tempos limite.

Evite o mesmo cenário ao desligar vários pods ao mesmo tempo. Não realizar o desligamento escalonado pode causar uma queda acentuada no número de conexões, o que leva a pressão na CPU.

Recursos de pod suficientes

Verifique se o Pod que executa o aplicativo cliente recebe recursos suficientes de CPU e memória. Se o aplicativo cliente estiver sendo executado perto de seus limites de recursos, isso poderá resultar em tempos limite.

Recursos de nó suficientes

Um pod que executa o aplicativo cliente pode ser afetado por outros pods em execução no mesmo nó e limitar as conexões do Redis ou as operações de E/S. Portanto, sempre verifique se o nó no qual os pods do aplicativo cliente são executados tem memória suficiente, CPU e largura de banda de rede. A execução baixa em qualquer um desses recursos pode resultar em problemas de conectividade.

Configurações TCP e dos aplicativos cliente hospedados no Linux

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

Possível conflito de conexão com İSTİO/Envoy

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

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

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

Para evitar a interferência de conexão, recomendamos:

  • Prefira usar um cache não clusterizado ou um cache da camada Enterprise
  • Evitar configurar sidecars Istio em pods que estejam executando o código do cliente do Cache do Azure para Redis