У нас есть один сайт на базе IIS, построенный на ASP.NET с DNN. Сейчас мы пытаемся настроить балансировку сетевой нагрузки для двух серверов. Поставщик услуг хостинга сказал нам, что этого будет достаточно, но мы, похоже, натолкнулись на кирпичную стену:
При трехсторонней балансировке нагрузки, известной как веб-ферма, единая система проверяет, какие серверы доступны. Если сервер выходит из строя, он пересылает запрос другому серверу.
Правильно ли приведенное выше предположение об ограничении балансировки сетевой нагрузки, что приводит к классической веб-ферме в качестве единственного решения, или есть что-то, что может настроить провайдер хостинга, чтобы предотвратить такое поведение, и заставить нас придерживаться только двух систем?
Фактически, вы столкнулись с одним из классических ограничений NLB. Кластер Windows NLB может только проверять, доступен ли сам узел, и не может проверять, работает ли фактическое приложение. В конечном итоге вам понадобится проверка работоспособности приложения, которая может быть выполнена с помощью балансировщика физической нагрузки или, возможно, программного балансировщика нагрузки, такого как Microsoft Маршрутизация запросов приложений (ARR).
Другая альтернатива, которая несколько нова, - это облачный балансировщик нагрузки, такой как предложение от Rackspace. Это дает вам преимущество наличия многих функций физического балансировщика нагрузки без затрат на внедрение физического оборудования.
Надеюсь, это поможет.
Изменить: NLB может выполнять проверки работоспособности каким-то образом, однако для этого по-прежнему требуется третий сервер. В System Center Operations Manager есть пакет управления, который может отслеживать приложения. Подробности об этом можно найти Вот. Если вы собираетесь добавить что-то подобное, вы можете также посмотреть на преимущества реального балансировщика нагрузки, который может выполнять необходимые проверки работоспособности.
Если у вас есть третья система (или две), она может распределять нагрузку на основе использования внутренних хостов, она может проверять доступность на более высоком уровне (приложении), а не только в сети. Это также проще, поскольку каждая система имеет только одну роль, балансировщик нагрузки только балансирует нагрузку и не должен иметь ничего другого, чтобы меньше вещей могло пойти не так.
Это могут делать сторонние продукты (например, NetScaler), для которых вы добавляете службы, привязанные к виртуальным серверам, настроенным в устройстве NetScaler. Устройство может автоматически проверять доступность приложений перед балансировкой нагрузки на серверы. Нет необходимости в ручном вмешательстве.