Варианты балансировки нагрузки в циклическом режиме для одного клиента - PullRequest
1 голос
/ 26 апреля 2011

У нас есть сервер biztalk, который делает частые звонки на веб-сервис, который мы также размещаем.

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

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

Правильно ли это предположение и каковы здесь альтернативные варианты?

немного больше прибегнув к поиску, я могу отключить кэширование на стороне клиента для DNS: http://support.microsoft.com/kb/318803

... однако здесь указано, что время кэширования по умолчанию составляет 1 день, что не соответствует моему опыту

Ответы [ 2 ]

4 голосов
/ 27 апреля 2011

Вам необходимо балансировать нагрузку на более низком уровне с NLB Clustering в Windows или LVS в Linux (или другой эквивалентной части программного обеспечения). Если вы разрешаете клиентам веб-службы держать HTTP-соединение открытым дольше, чем один запрос / ответ, вы все равно не сможете получить гранулярность требуемой балансировки нагрузки, поэтому вам может потребоваться перенастроить серверы приложений, если это так. .

1 голос
/ 29 апреля 2011

Решением, которое мы наконец решили, была маршрутизация запросов приложений, которая является расширением IIS. В тестах это показало, что мы делаем то, что нам нужно, и нам (разработчикам) гораздо легче начать работу, чем аппаратному балансировщику нагрузки.

http://www.iis.net/download/ApplicationRequestRouting

...