Может ли балансировщик нагрузки распознать, когда рабочий процесс ASP.NET перезапускает и перенаправлять трафик? - PullRequest
1 голос
/ 19 декабря 2009

Допустим, у меня есть веб-ферма из шести веб-серверов IIS 7, на каждом из которых выполняется одно и то же приложение ASP.NET.

Они находятся за аппаратным балансировщиком нагрузки (скажем, F5).

Может ли балансировщик нагрузки обнаружить, когда рабочий процесс приложения ASP.NET перезапускается, и перенаправлять трафик с этого сервера до тех пор, пока рабочий процесс не будет перезапущен?

Ответы [ 4 ]

1 голос
/ 19 декабря 2009

То, что происходит во время перезапуска IIS, на самом деле является процессом пролонгации. Запускается новый рабочий процесс IIS, который принимает новые подключения, а старый рабочий процесс продолжает обрабатывать существующие подключения.

Это означает, что если вы настроите свой балансировщик нагрузки для использования алгоритма балансировки, отличного от простого циклического перебора, то он будет иметь тенденцию "естественным образом" отвлекать некоторые, но не все, соединения от перерабатываемого компьютера. Например, при использовании алгоритма «наименьшего количества соединений» соединения будут зависать дольше, пока сервер перезагружается. Или при использовании алгоритма производительности или задержки сервер утилизации неожиданно будет медленнее работать с балансировщиком нагрузки.

Однако, если вы не напишите какой-либо код или сценарии, которые явно обнаруживают или распознают повторное использование, это самое лучшее, что вы можете сделать - и в большинстве сред это также действительно все, что вам нужно.

0 голосов
/ 08 января 2013

IIS 6 и 7 перезапускают пулы приложений по умолчанию каждые 1740 минут. Он делает это с перекрытием, чтобы сервисы не подвергались влиянию.

http://technet.microsoft.com/en-us/library/cc770764%28v=ws.10%29.aspx

http://forums.iis.net/t/1153736.aspx/1

С другой стороны, в случае сбоя хороший балансировщик нагрузки (я уверен, что F5) может обнаружить сбой на одном из веб-серверов и отправить запросы оставшимся исправным веб-серверам. Это важная часть веб-инфраструктуры высокой доступности.

0 голосов
/ 19 декабря 2009

Это во многом зависит от интервала опроса балансировщика нагрузки, запрос от балансировщика должен завершиться неудачей, прежде чем он сможет принять решение о перенаправлении трафика

0 голосов
/ 19 декабря 2009

Мы используем балансировщик нагрузки Cisco CSS серии 11501. «Содержимое» keepalive , которое мы проверяем на каждом сервере, на самом деле является скриптом PHP.

service ac11-192.168.1.11
  ip address 192.168.1.11
  keepalive type http
  keepalive method get
  keepalive uri "/LoadBalancer.php"
  keepalive hash "b026324c6904b2a9cb4b88d6d61c81d1"
  active

Поскольку это динамический скрипт, мы можем сказать ему, чтобы он проверял различные аспекты сервера, и возвращает "1", если все хорошо, или "0", если не все хорошо.

В вашем случае вы сможете реализовать аналогичный сценарий проверки, который не будет работать, если рабочий процесс приложения ASP.NET перезапускается (или выключается).

...