Как справиться с кратковременным истощением портов в Envoy

Одна из проблем с обратными прокси-серверами, обрабатывающими несколько запросов от имени клиентов, заключается в том, что через некоторое время при большой нагрузке количество исходящих соединений от узла посланника к внутренним узлам исчерпает временные порты.

Предполагая, что мы назначили несколько IP-адресов / имен хостов для узла посланника, есть ли способ сообщить посланнику, что он использует эти IP-адреса / имена хостов в циклическом режиме при подключении к бэкэндам?

Использованная литература:

  1. https://blog.box.com/blog/ephemeral-port-exhauration-and-web-services-at-scale/
  2. https://making.pusher.com/ephemeral-port-exhauration-and-how-to-avoid-it/
  3. https://www.nginx.com/blog/overcoming-ephemeral-port-exhauration-nginx-plus/
  4. https://github.com/kubernetes/kubernetes/issues/27398

person Ashok Koyi    schedule 29.05.2018    source источник


Ответы (1)


Самый многообещающий вариант - найти способ включить мультиплексирование TCP между вашим прокси / LB и внутренними серверами.

Что такое мультиплексирование TCP?

Мультиплексирование TCP - это метод, используемый в основном балансировщиками нагрузки и контроллерами доставки приложений (но также и некоторыми автономными решениями для ускорения веб-приложений), который позволяет устройству повторно использовать существующие TCP-соединения. Это похоже на способ, которым работают постоянные соединения HTTP 1.1, в котором одно соединение HTTP может использоваться для получения нескольких объектов, тем самым снижая влияние накладных расходов TCP на производительность приложения.

Мультиплексирование TCP позволяет делать то же самое для приложений на основе TCP (обычно HTTP / web), за исключением того, что вместо повторного использования, ограниченного только одним клиентом, соединения можно повторно использовать для многих клиентов, что приводит к гораздо большей эффективности веб-серверов и более быстрые приложения.

Еще одно хорошее объяснение мультиплексирования TCP можно найти здесь.

Другой вариант - добавить больше экземпляров прокси в пул за балансировщиком сетевой нагрузки L4 и установить разумное значение лимита подключений для одного экземпляра. Каждый прокси без проблем будет нести определенную нагрузку. Если вам нужно обрабатывать периодические всплески нагрузки, вы можете установить стратегию автоматического масштабирования для пула прокси.

person VASャ    schedule 29.05.2018