Позвольте мне предварить это словами: я не системный администратор, я программист.
Недавно наши системные администраторы установили балансировщики нагрузки F5. С тех пор я заметил, что каждый раз, когда запрос истекает и выдает 500, балансировщик нагрузки отправляет тот же запрос на наш другой сервер. IIS отправляет ответ о тайм-ауте, хотя скрипт на самом деле все еще работает. Даже POST-запросы дублируются, если скрипт выполняется более 5 минут. Мне кажется, что это потенциальная проблема, особенно на сайтах электронной коммерции, в которых участвует биллинг клиентов.
Это только проблема с некоторыми из наших более длительных скриптов (но это серьезная проблема). Мне сказали, что это ожидаемое поведение, и нам придется изменить наш код для соответствия. Итак, мои вопросы:
- Это ожидаемое поведение?
- В чем преимущество балансировщика нагрузки, повторяющего запрос после истечения времени ожидания, кроме того, что пользователю не нужно обновлять?
- С этой архитектурой, если скрипт, который либо загружает сервер, либо запускает ресурсы, будет запущен на обоих серверах. Это действительно оптимально?
источник
Ответы:
Взгляните на эту запись о пассивном мониторинге приложений в Big-IP
Мои ответы на ваши вопросы, какими бы разочаровывающими они ни были,
Возможно (зависит от конфигурации пассивного мониторинга)
Пользователь не видит ошибку
«Действие при отключении службы» - настраиваемый параметр.
источник
Если возникает ошибка 500, это указывает на проблему на веб-сервере. Затем F5 просто перешлет эту ошибку к подключающемуся клиенту. Он не будет «пересылать» запрос сам по себе. Это может произойти только в том случае, если клиент повторно попытается выполнить запрос. В этот момент этот запрос может быть сбалансирован по нагрузке для другого члена пула, хотя нет никакой гарантии, и он будет основываться либо на постоянстве, либо на используемом методе балансировки нагрузки (циклический перебор, наименьшее количество соединений и т. Д.).
Короче говоря, если у вас на F5 нет действительно сумасшедшего iRule, это поведение вызвано самим скриптом.
(Примечание: я полтора года работал инженером поддержки Nework для F5, работая с LTM)
источник