Когда ELB находится в нескольких зонах доступности, у него всегда есть несколько общедоступных IP-адресов - по крайней мере, один на зону.
Когда вы запрашиваете эти записи в поиске DNS, вы получаете всеиз этих записей (при условии, что их не очень много) или их подмножество (если их много, как в активном кластере со значительным трафиком), но они неупорядочены.
Еслипрограммное обеспечение для нагрузочного тестирования разрешает IP-адрес конечной точки и удерживает ровно один из IP-адресов - поскольку это вероятный результат - тогда весь трафик пойдет на один узел балансировщика, который находится в одной зоне, и будетотправьте трафик экземплярам в этой зоне.
А как насчет ...
Межзональная балансировка нагрузки
Узлы для вашегоРаспределитель нагрузки распределяет запросы от клиентов к зарегистрированным целям.Когда балансировка нагрузки между зонами включена, каждый узел балансировки нагрузки распределяет трафик по зарегистрированным целям во всех включенных зонах доступности.Когда межзонная балансировка нагрузки отключена, каждый узел балансировки нагрузки распределяет трафик по зарегистрированным целям только в своей зоне доступности.
https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html
Если настроена привязка, эти сеансыпервоначально приземлится в одном AZ, а затем будет придерживаться этого AZ, потому что они придерживаются первоначального экземпляра, в котором они приземлилисьЕсли кросс-зона включена, результат не совсем ясен, но либо узлы балансировщика могут предпочесть экземпляры в их собственной зоне в этом сценарии (при первом установлении липкости), либо это не было вопросом вопроса.Липкость требует координации, и трафик между AZ занимает ненулевое количество времени из-за расстояния (обычно <10 мс), но для балансировщика имеет смысл выбрать экземпляры своей локальной зоны для сеансов без установленного сходства. </p>
На самом деле, настройка программного обеспечения для нагрузочного теста для повторного разрешения конечной точки для каждого запроса на самом деле не является целью решения - важно убедиться, что (1) нагрузочное тестированиепрограммное обеспечение использует их все и не привязывается к одному и (2) что, если из-за масштабирования балансировщика под нагрузкой становится доступным больше адресов, программное обеспечение для нагрузочного тестирования расширяет свой пул целей.
В любом случае, эти записи DNS имеют TTL 60 секунд.Разве не является избыточным повторное разрешение DNS при каждом запросе?
Программное обеспечение может не видеть TTL, может не соблюдать TTL и, как отмечалось выше, может придерживаться одного ответа, даже если несколькодоступны, потому что это нужно только один для установления соединения. Каждый запрос не является строго необходимым, но он решает проблему.
Кроме того, разрешение DNS является обязанностью самой службы DNS, а не программного обеспечения для нагрузочного тестирования, не так ли?
Чтобы "разрешить DNS" в этом контексте простоозначает выполнить поиск DNS, что бы это ни значило в конкретном случае, будь то использование DNS-преобразователя ОС или прямой запрос к рекурсивному DNS-серверу.Когда программное обеспечение устанавливает соединение с именем хоста, оно "разрешает" (ищет) соответствующий IP-адрес.
Другое решение, ", использует стороннюю службу тестирования нагрузки для отправки запросов от глобально распределенных клиентов., " решает проблему случайно, поскольку распределенные клиенты - даже если они придерживаются первого увиденного ими адреса - с большей вероятностью увидят все доступные адреса.«Глобальный» аспект распределения отвлекает.
ELB полагается на случайное поступление запросов через внешние узлы в рамках стратегии балансировки.Загрузка программного обеспечения тестирования, дизайн которого игнорирует это не правильно тестирование ELB.Оба решения по-разному решают проблему.