Aplicaciones cliente hospedadas por Kubernetes

Conexiones de cliente desde varios pods

Si tiene varios pods que se conectan a un servidor de Redis, asegúrese de que las nuevas conexiones de los pods se creen de manera escalonada. Si se inician varios pods en poco tiempo sin escalonarse, se produce un pico repentino en el número de conexiones de cliente creadas. El alto número de conexiones conduce a una carga elevada en el servidor de Redis y puede provocar tiempos de espera.

Evite el mismo escenario al apagar varios pods al mismo tiempo. Si no se escalona el apagado, podría producirse una caída fuerte en el número de conexiones, lo que podría provocar presión en la CPU.

Recursos de pod suficientes

Asegúrese de que el pod que ejecuta la aplicación cliente tenga suficientes recursos de CPU y memoria. Si la aplicación cliente se ejecuta cerca de sus límites de recursos, puede dar lugar a tiempos de espera.

Recursos de nodo suficientes

Un pod que ejecuta la aplicación cliente puede verse afectado por otros pods que se ejecutan en el mismo nodo y limitan las conexiones de Redis o las operaciones de E/S. Por lo tanto, asegúrese siempre de que el nodo en el que se ejecutan los pods de la aplicación cliente tenga suficiente memoria, CPU y ancho de banda de red. Si se agota cualquiera de estos recursos, se podrían producir problemas de conectividad.

Aplicaciones cliente hospedadas en Linux y configuración de TCP

Si la aplicación cliente de Azure Cache for Redis se ejecuta en un contenedor basado en Linux, se recomienda actualizar alguna configuración de TCP. Esta configuración se detalla en Configuración de TCP para aplicaciones cliente hospedadas en Linux.

Posible colisión de conexión con Istio/Envoy

Actualmente, Azure Cache for Redis usa los puertos 15xxx para las memorias caché en clúster para exponer los nodos de clúster a las aplicaciones cliente. Como se documenta aquí, los mismos puertos también los usa el proxy sidecar Istio.io denominado Envoy y podría interferir con la creación de conexiones, en particular en los puertos 15001 y 15006.

Al usar Istio con un clúster de Azure Cache for Redis, podría excluir los puertos de colisión potenciales con una anotación istio.

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

Para evitar interferencias de conexión, se recomienda lo siguiente:

  • Considere la posibilidad de usar en su lugar una caché no agrupada o una caché de nivel Enterprise.
  • Evite configurar sidecars Istio en pods que ejecutan el código de cliente de Azure Cache for Redis.