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


8

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

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

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

  • Это ожидаемое поведение?
  • В чем преимущество балансировщика нагрузки, повторяющего запрос после истечения времени ожидания, кроме того, что пользователю не нужно обновлять?
  • С этой архитектурой, если скрипт, который либо загружает сервер, либо запускает ресурсы, будет запущен на обоих серверах. Это действительно оптимально?

Когда вы говорите «отправляет тот же запрос» на другой сервер, вы имеете в виду настроенные проверки работоспособности или запросы пользователей? Моего смысла нет, но это стоит уточнить. Ответ на это изменит ответ и / или любые предложения.
Макут

@mcauth повторно отправляет запрос пользователя. В основном, если пользователь выполняет какое-либо действие, которое вызывает ошибку 500, подсистема балансировки нагрузки отправляет тот же точный запрос на другой сервер, создавая два ответа из одного HTTP-запроса.
Джим Д

1
Я нахожусь на орбите Big-IP в течение достаточно долгого времени, и я никогда не знал, что он воспроизводит запрос, если ему не было специально сказано сделать это, скажем, через iRule, выполняющего HTTP :: collect для буферизации полезной нагрузки запроса. , Очень странно. Не видя работающего конфига, очень сложно сказать.
Макаут

Просто немного натолкну эту ветку, чтобы вы знали, что я решаю точно такую ​​же проблему. Вы получили дальнейшее решение?
BitMask777

@ BitMask777 - К сожалению, мы никогда не продвинулись дальше с этим. Это все еще поведение балансировщика нагрузки, и мы «имеем дело с этим».
Джим Д

Ответы:


3

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

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

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

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

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

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


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

0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.