Что было бы наилучшим подходом к балансировке нагрузки как минимум на 2-3 веб-серверах Windows 2008 R2 IIS, на которых выполняется множество приложений .NET? Мой выбор выглядит следующим образом:
1) Аппаратный балансировщик нагрузки сетевых устройств, например Cisco CSS
2) Windows NLB
3) Какой-то прокси на базе Linux, либо haproxy, либо другой
Три сервера расположены как виртуальные машины на ферме vSphere, поэтому у меня есть возможность клонировать, чтобы увеличить количество экземпляров во время высокой нагрузки. Я управляю коммутатором, к которому подключены хосты vSphere (Cisco 3750), но не управляю инфраструктурой коммутации / маршрутизации, кроме клиентов.
(1) Слишком дорого и, вероятно, излишне для моих нужд. Я включил это на случай, если кто-то найдет хитрый способ сделать это на моем существующем сетевом комплекте, в чем я сомневаюсь.
(2) может показаться очевидным «встроенным» вариантом, но, похоже, довольно неудобно возится с сетевыми интерфейсами, многоадресной рассылкой и другими вещами, которые кажутся излишне сложными. Это также довольно глупо, поскольку он не может удалить хосты из пула, если они начинают выдавать 500 ошибок или иначе идут не так.
(3) - самый интересный вариант, поскольку он, по-видимому, предлагает максимальную гибкость и настраиваемость, но без необходимости возиться с сетью. Однако, хотя я знаком с возможностями обратного прокси в lighttpd и т. Д., Я не очень хорошо разбираюсь в других вариантах, таких как HAProxy, которые могут предложить гораздо больше.
Что бы вы выбрали, и есть ли что-нибудь, о чем я не подумал?
В Stackoverflow мы используем HAProxy для балансировки с нашими веб-серверами Windows Server 2008 R2 IIS 7 с большим успехом. Мы любим HAProxy и считаем его очень гибким.
Я использовал NLB для веб-сервисов IIS в течение многих лет с большим опытом. На самом деле это не балансировщик нагрузки, а скорее инструмент резервирования. Нагрузка не распределяется между серверами разумно, но действительно приятно иметь возможность отключить один сервер для обновлений и иметь все, что работает с полным временем безотказной работы. Я действительно рекомендую вам начать с NLB и посмотреть, подходит ли это вам. В конце концов, это бесплатно и очень просто.
О каком трафике вы говорите? Citrix предлагает бесплатную версию своего балансировщика нагрузки Netscaler в качестве виртуальной машины для ESX, Hyper-V и XenServer. Он называется Netscaler VPX Express и предлагает до 5 МБ пропускной способности для балансировки нагрузки. Он также включает лицензию SSL VPN на 10 пользователей в качестве решения для удаленного доступа. Я с большим успехом использую его внутренне.
Вот недавняя запись в блоге Citrix, в которой обсуждается недавний скачок бесплатной виртуальной машины с 1 МБ до 5 МБ: http://community.citrix.com/display/ocb/2011/02/28/NetScaler+VPX+Express+Sets+Your+Networks+(Even)+Free(-er+than+Before!)
Не совсем ответ, но это (эссе?) Может дать вам полезную справочную информацию, которая поможет вам в выборе: Масштабируемость приложений с помощью балансировки нагрузки