Балансировка эластичной нагрузки AWS: наблюдение за чрезвычайно длительным начальным временем соединения

В течение нескольких дней мы часто видим чрезвычайно длительное начальное время соединения (15 с - 1,3 минуты) для наших ELB при выполнении любого запроса через ssl. Как ни странно, я мог наблюдать это только в Google Chrome (не Safari, ни Firefox, ни завитке).

Это не каждый запрос, а около 50% запросов. Это происходит с первым запросом (OPTIONS-вызов).

Наша настройка такова: Cross-Zone ELB, который подключается к серверу node.js(в настоящее время в 2 AZ в eu-west-1). Все экземпляры здоровы, и как только запрос приходит, он обрабатывается нормально. В настоящее время в системе практически нет нагрузки. Cloudwatch для ELB не сообщает о каких-либо ошибках подключения к серверу, ни SurgeQueue (значение 0), ни счету переполнения. Показатели ELB показывают низкую задержку (< 100 мс). У нас есть Route53, настроенный для перехода на ELB (мы не видим проблем с DNS, см. Прикрепленный снимок экрана).

У нас есть разные REST-API, которые имеют эту настройку. Это происходит со всеми ELB (каждый из них подключается к автономному серверу node.js). Все эти ELB настроены таким же образом через наш шаблон облачной информации.

ELB также выполняет наше SSL-окончание.

Что может привести к такому поведению? Возможно ли, что ELB настроены неправильно? И почему он может отображаться только в Google Chrome?

время запроса

Ответ 2

Просто следить за @Никитой Огурцовым отличный ответ; У меня была та же проблема, за исключением того, что это была только одна из моих подсетей, которая была закрытой, а остальная публика.

Даже если вы считаете, что ваши подсети являются общедоступными, я рекомендую вам дважды проверить таблицы маршрутов, чтобы убедиться, что у них все есть шлюз.

Вы можете использовать одну таблицу маршрутов, в которой есть шлюз для всех ваших подсетей LB, если это имеет смысл

VPC/Subnets/(select subnet)/Route Table/Edit

Ответ 3

Это может быть проблема с локтой амазонки. Длина локтя - количество экземпляров с номером запроса. В то время вы должны увидеть некоторые запросы. Amazon добавляет несколько экземпляров, чтобы соответствовать нагрузке. экземпляры достижимы во время запуска, поэтому ваши клиенты получают этот тайм-аут. это полностью случайность, поэтому вы должны:

  • ping elb, чтобы получить все используемые ip

  • используйте mtr для всех найденных ip

  • Следите за CloudWatch

  • Найдите некоторые подсказки

Ответ 4

Решение. Если вы настроены на DNS для прямого входа в ELB → вам следует уменьшить TTL ассоциации (IP, DNS). IP может измениться в любое время с помощью ELB, чтобы вы могли нанести серьезный ущерб вашему трафику.

Клиент сохраняет некоторый IP-адрес из кэша ELB, поэтому вы можете иметь эти проблемы.

Удлинители эластичной нагрузки Когда вы создадите балансировщик эластичной нагрузки, вы должны настроить его для приема входящего трафика и запросов маршрута к вашим экземплярам EC2. Эти параметры конфигурации сохраняются контроллером, и контроллер гарантирует, что все балансировочные устройства работают с правильной конфигурацией. Контроллер также будет контролировать балансировщики нагрузки и управлять емкостью, используемой для обработки клиентских запросов. Он увеличивает емкость за счет использования либо больших ресурсов (ресурсов с более высокими характеристиками производительности), либо более индивидуальных ресурсов. Служба балансировки эластичной нагрузки будет обновлять запись системы доменных имен (DNS) балансировки нагрузки, когда она масштабируется, чтобы новые ресурсы имели соответствующие IP-адреса, зарегистрированные в DNS. Созданная DNS-запись включает в себя параметр Time-to-Live (TTL), равный 60 секундам, с ожиданием того, что клиенты будут повторно искать DNS по крайней мере каждые 60 секунд. По умолчанию балансировка эластичной нагрузки возвращает несколько IP-адресов, когда клиенты выполняют разрешение DNS, причем записи произвольно упорядочиваются по каждому запросу разрешения DNS. По мере изменения профиля трафика служба контроллера будет масштабировать балансировщики нагрузки для обработки большего количества запросов, одинаково масштабируясь во всех зонах доступности.

Best Practices ELB на AWS

Ответ 5

Проверьте группу безопасности тоже. Это была проблема в моем случае.

Ответ 6

Для меня проблема заключалась в том, что у меня была неиспользуемая "зона доступности" в моем классическом балансировщике нагрузки. После того, как я удалил нездоровую и неиспользованную зону доступности, постоянная задержка 20 или 21 секунда в "Первоначальном подключении" упала до 50 мс.

Примечание. Возможно, вам потребуется дать время для обновления. Для моего DNS TTL было установлено значение 60 секунд, поэтому я смогу увидеть исправление в течение минуты после удаления неиспользуемой зоны доступности.

Ответ 7

Для меня проблема была в том, что ALB указывал на экземпляр Nginx, у которого был неправильно настроенный преобразователь DNS. Это означало, что Nginx попытался использовать распознаватель, истекло время ожидания, а затем фактически начал работать немного позже.

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