Network Load Balancing (NLB) — это программная разработка, используемая в кластеризации Microsoft Windows для масштабирования работы IP-программ путем распределения клиентских запросов среди нескольких серверов в кластере.
NLB используется чаще всего для повышения производительности и уровня готовности веб-приложений, но может также использоваться для повышения производительности множества IP-приложений внутри вашего предприятия.
По сути NLB является сетевым драйвером Windows. Его операции прозрачны для стека сетевых протоколов TCP/IP:
Но данная технология, также, позволяет добиться высокой масштабируемости и надежности, а в совокупности с предложенными инструментами обеспечивает управляемость, простоту использования и настройки.
План:
Собственно по данной тематике хорошую документацию найти можно. Самыми основными источниками для меня были:
Очень хорошая документация с скринами и примечаниями. Пожалуй первой нужно читать её.
• Кластеры балансировки нагрузки в сети. Документация Microsoft.
Здесь можно найти также и раздел решения проблем, советы и рекомендации. Очень мощный источник, но нет скриншотов.
Этого должно хватить для понимания работы кластера и настройки его без всяких затруднений. В какой-то мере я повторю эту документацию, немного добавив от себя замечаний.
По сути NLB является сетевым драйвером Windows. Его операции прозрачны для стека сетевых протоколов TCP/IP:
Серверные приложения даже не подозревают о существовании кластера. Например, Apache, слушает IP адреса кластера как будто бы это обычные дополнительные IP адреса сервера. IIS их отображает в списке выбора слушаемых IP адресов вместе со всеми остальными IP адресами. Поэтому синхронизация данных, ложится на наши с вами плечи, и необходимо прибегнуть к репликации и синхронизации дисков.
Но данная технология, также, позволяет добиться высокой масштабируемости и надежности, а в совокупности с предложенными инструментами обеспечивает управляемость, простоту использования и настройки.
В нашем распоряжении должны быть:
• Один или больше виртуальный (не привязанных к определенному MAC адресу) IP адрес;
• По возможности на серверах должно быть установлено несколько сетевых адаптеров. Это не обязательно, но позволит повысить производительность серверов.
• Сервера должны быть подключены к маршрутизатору, который должен: принимать ответы ARP (Address Resolution Protocol), имеющие один MAC-адрес в полезных данных структуры ARP, но по заголовку Ethernet определяемые как пришедшие от станции с другим MAC-адресом; принимать ответы ARP для IP-адреса одноадресной рассылки с MAC-адресом многоадресной рассылки в полезных данных структуры ARP. Маршрутизаторы Cisco требуют создания статической записи ARP, поскольку не поддерживают разрешение IP-адресов одноадресной рассылки в MAC-адреса многоадресной рассылки. Если этого не предусмотреть, то при попадании пакета, ассоциированного с несколькими портами маршрутиатора не будет передаваться, и IP адреса кластера не будут пинговаться.
Если это все есть, можно приступать к созданию кластера…
Для примера предположим, что есть два сервера: Сервер1 (192.168.1.5) и Сервер2 (192.168.1.6). На каждом из серверов находится два сайта. Первый обрабатывает запросы по http и https. Второй сайт — по HTTP, также имеет FTP. Оба сайта должны иметь различные IP адреса. Для кластера выделены два виртуальных IP адреса (VIPa) – 195.168.1.10 и 192.168.1.20 .
Существуют несколько способов настройки: внесение изменений непосредственно в настройки сетевого подключения и использование мастера балансировка нагрузки сети (Network Load Balancing Manager).
Второй наиболее удобный, т.к. обеспечивает одинаковые настройки для всех включенных в кластер узлов, что обязательно для нормальной работы кластера. В следующем разделе описано использование этого метода.