Applicazioni client ospitate in Kubernetes

Connessioni client da più pod

Quando si hanno più pod che si connettono a un server Redis, assicurarsi che le nuove connessioni dai pod vengano create in modo sfalsato. Se più pod iniziano in breve tempo senza sfalsare, causa un picco improvviso nel numero di connessioni client create. Il numero elevato di connessioni comporta un carico elevato nel server Redis e può causare timeout.

Evitare lo stesso scenario quando si arrestano più pod contemporaneamente. Il mancato sfalsare l'arresto potrebbe causare un calo ripido del numero di connessioni che causano una pressione della CPU.

Risorse di pod sufficienti

Assicurarsi che al pod che esegue l'applicazione client vengano fornite risorse di CPU e memoria sufficienti. Se l'applicazione client è in esecuzione vicino ai limiti di risorse, può comportare timeout.

Risorse del nodo sufficienti

Un pod che esegue l'applicazione client può essere interessato da altri pod in esecuzione nello stesso nodo e limitare le connessioni Redis o le operazioni di I/O. Assicurarsi quindi sempre che il nodo in cui vengono eseguiti i pod dell'applicazione client disponga di memoria, CPU e larghezza di banda di rete sufficienti. L'esecuzione insufficiente su una di queste risorse potrebbe causare problemi di connettività.

Applicazioni client ospitate in Linux e impostazioni TCP

Se l'applicazione client cache di Azure per Redis viene eseguita in un contenitore basato su Linux, è consigliabile aggiornare alcune impostazioni TCP. Queste impostazioni sono descritte in dettaglio nelle impostazioni TCP per le applicazioni client ospitate in Linux.

Potenziale conflitto di connessione con Istio/Envoy

Attualmente, cache di Azure per Redis usa le porte 15xxx per le cache in cluster per esporre i nodi del cluster alle applicazioni client. Come documentato qui, le stesse porte vengono usate anche da Istio.io proxy sidecar denominato Envoy e potrebbero interferire con la creazione di connessioni, in particolare sulla porta 15001 e 15006.

Quando si usa Istio con un cluster cache di Azure per Redis, prendere in considerazione l'esclusione delle potenziali porte di collisione con un'annotazione istio.

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

Per evitare interferenze di connessione, è consigliabile:

  • Prendere in considerazione l'uso di una cache non cluster o di una cache di livello Enterprise
  • Evitare di configurare sidecar Istio nei pod che eseguono cache di Azure per Redis codice client