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

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

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

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

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

2 ответа

Решение

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам