F5 Load Balancer повторно отправляет запрос по тайм-ауту

8

Позвольте мне предварить это словами: я не системный администратор, я программист.

Недавно наши системные администраторы установили балансировщики нагрузки F5. С тех пор я заметил, что каждый раз, когда запрос истекает и выдает 500, балансировщик нагрузки отправляет тот же запрос на наш другой сервер. IIS отправляет ответ о тайм-ауте, хотя скрипт на самом деле все еще работает. Даже POST-запросы дублируются, если скрипт выполняется более 5 минут. Мне кажется, что это потенциальная проблема, особенно на сайтах электронной коммерции, в которых участвует биллинг клиентов.

Это только проблема с некоторыми из наших более длительных скриптов (но это серьезная проблема). Мне сказали, что это ожидаемое поведение, и нам придется изменить наш код для соответствия. Итак, мои вопросы:

  • Это ожидаемое поведение?
  • В чем преимущество балансировщика нагрузки, повторяющего запрос после истечения времени ожидания, кроме того, что пользователю не нужно обновлять?
  • С этой архитектурой, если скрипт, который либо загружает сервер, либо запускает ресурсы, будет запущен на обоих серверах. Это действительно оптимально?
Джим Д
источник
Когда вы говорите «отправляет тот же запрос» на другой сервер, вы имеете в виду настроенные проверки работоспособности или запросы пользователей? Моего смысла нет, но это стоит уточнить. Ответ на это изменит ответ и / или любые предложения.
Макут
@mcauth повторно отправляет запрос пользователя. В основном, если пользователь выполняет какое-либо действие, которое вызывает ошибку 500, подсистема балансировки нагрузки отправляет тот же точный запрос на другой сервер, создавая два ответа из одного HTTP-запроса.
Джим Д
1
Я нахожусь на орбите Big-IP в течение достаточно долгого времени, и я никогда не знал, что он воспроизводит запрос, если ему не было специально сказано сделать это, скажем, через iRule, выполняющего HTTP :: collect для буферизации полезной нагрузки запроса. , Очень странно. Не видя работающего конфига, очень сложно сказать.
Макаут
Просто немного натолкну эту ветку, чтобы вы знали, что я решаю точно такую ​​же проблему. Вы получили дальнейшее решение?
BitMask777
@ BitMask777 - К сожалению, мы никогда не продвинулись дальше с этим. Это все еще поведение балансировщика нагрузки, и мы «имеем дело с этим».
Джим Д

Ответы:

3

Взгляните на эту запись о пассивном мониторинге приложений в Big-IP

Мои ответы на ваши вопросы, какими бы разочаровывающими они ни были,

  • Возможно (зависит от конфигурации пассивного мониторинга)

  • Пользователь не видит ошибку

  • Возможно (Хочу ли я обслужить ошибки своих пользователей или попробовать запрос в другом месте?)

«Действие при отключении службы» - настраиваемый параметр.

quadruplebucky
источник
Спасибо за Ваш ответ. Вы правы в том, что это немного разочаровывает, я надеялся на что-то более конкретное. Я полагаю, что конкретно объяснять, что нет однозначного ответа.
Джим Д
0

Если возникает ошибка 500, это указывает на проблему на веб-сервере. Затем F5 просто перешлет эту ошибку к подключающемуся клиенту. Он не будет «пересылать» запрос сам по себе. Это может произойти только в том случае, если клиент повторно попытается выполнить запрос. В этот момент этот запрос может быть сбалансирован по нагрузке для другого члена пула, хотя нет никакой гарантии, и он будет основываться либо на постоянстве, либо на используемом методе балансировки нагрузки (циклический перебор, наименьшее количество соединений и т. Д.).

Короче говоря, если у вас на F5 нет действительно сумасшедшего iRule, это поведение вызвано самим скриптом.

(Примечание: я полтора года работал инженером поддержки Nework для F5, работая с LTM)

Джеймс Шивей
источник