Клиентские приложения, размещенные в Kubernetes

Клиентские подключения из нескольких модулей pod

При наличии нескольких модулей pod, подключающихся к серверу Redis, убедитесь, что новые соединения из модулей pod созданы с учетом времени. Если несколько модулей pod начинаются в течение короткого срока без разнесения во времени, это приводит к резкому увеличению числа создаваемых клиентских подключений. Большое число подключений приводит к высокой нагрузке на сервер Redis и может привести к истечению времени ожидания.

Старайтесь не использовать тот же сценарий при одновременном завершении работы нескольких модулей pod. Сбой при завершении работы может привести к выделению чрезмерного количества подключений, что приведет к нехватке ресурсов ЦП.

Достаточные ресурсы pod

Убедитесь, что модуль pod, на котором работает клиентское приложение, получает достаточно ресурсов ЦП и памяти. Если клиентское приложение работает близко к пределам ресурсов, это может привести к превышению времени ожидания.

Достаточные ресурсы узла

Модуль pod, в котором работает клиентское приложение, может подвергаться воздействию других модулей pod, выполняемых в том же узле, и ограничивать подключения Redis или операции ввода-вывода. Поэтому всегда убеждайтесь, что на узле, на котором выполняется клиентское приложение, достаточно памяти, ресурсов ЦП и пропускной способности сети. Недостаток этих ресурсов может привести к проблемам с подключением.

Клиентские приложения, размещенные в Linux, и параметры TCP

Если кэш Azure для клиентского приложения Redis выполняется в контейнере под управлением Linux, рекомендуется обновить некоторые параметры TCP. Эти параметры подробно описаны в разделе Параметры TCP для клиентских приложений, размещенных в Linux.

Потенциальный конфликт подключений с Istio / Envoy

В настоящее время Кэш Azure для Redis использует порты 15xxx для кластеризованных кэшей для предоставления узлов кластера клиентским приложениям. Как описано здесь, те же порты также используются Istio.io прокси-сервер боковой коляски с именем Envoy и могут препятствовать созданию подключений, особенно на порте 15001 и 15006.

При использовании Istio с кластером Кэш Azure для Redis рекомендуется исключить потенциальные порты конфликтов с заметкой istio.

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

Чтобы избежать помех с подключением, рекомендуется:

  • Вместо этого рекомендуется использовать некластеризованный кэш или кэш уровня Enterprise.
  • Избегайте настройки расширений Istio в модулях pod, выполняющих кэш Azure для клиентского кода Redis