Содержание
Общее описание NLB
В этой статье мы рассмотрим шаги по использованию функции балансировки сетевой нагрузки (NLB) в Windows Server 2016. Мы можем использовать NLB для управления двумя или более серверами как единым виртуальным кластером.
NLB — это масштабируемая функция высокой доступности, которую можно установить во всех выпусках Windows Server 2016. NLB распределяет сетевой трафик по набору серверов, балансируя рабочую нагрузку, которую должен обрабатывать каждый сервер. Он масштабируется, поскольку позволяет добавлять дополнительные серверы (также называемые узлами или хостами). Узел (или хост) в кластере NLB в Windows Server 2016 — это компьютер, физический или виртуальный, на котором установлена операционная система Windows Server 2016. На каждом узле или хосте работает копия серверных приложений, которые также работают на других хостах в кластере.
Кластеры NLB Windows Server 2016 могут иметь от 2 до 32 узлов. Когда вы создаете кластер NLB, он создает виртуальный сетевой адрес и виртуальный сетевой адаптер. Виртуальный сетевой адаптер имеет IP-адрес и mac адрес. Сетевой трафик на этот адрес распределяется равномерно по узлам кластера. В базовой конфигурации NLB каждый узел в кластере NLB обслуживает запросы со скоростью, примерно равной скорости всех остальных узлов в кластере. Когда кластер NLB получает запрос, он перенаправляет этот запрос узлу, который в настоящее время используется меньше всего. Вы также можете настроить NLB для направления трафика на определенный хост, который называется хостом по умолчанию.
Новым в Windows Server 2016 является то, что он включает в себя новый программный балансировщик нагрузки (SLB), вдохновленный Azure, в качестве компонента инфраструктуры программно-определяемой сети (SDN). Используйте SLB вместо NLB, если вы используете SDN, используете рабочие нагрузки, отличные от Windows, нуждаетесь в преобразовании исходящих сетевых адресов (NAT) или балансировке нагрузки на уровне 3 (L3) или не на основе TCP. Вы можете продолжать использовать NLB с Windows Server 2016 для развертываний без SDN.
Как работает балансировка сетевой нагрузки
Когда вы настраиваете приложение для использования NLB, клиенты обращаются к приложению, используя адрес кластера NLB, а не адреса узлов, которые участвуют в кластере NLB. Адрес кластера NLB — это виртуальный адрес, совместно используемый узлами в кластере NLB.
Установка компонента Network Load Balancing на Windows Server 2016
Участники тестовой лаборатории:
Мы будем использовать виртуальную тестовую лабораторию, созданную в Hyper-V.
DC1: Контроллер домена и DNS (pentagon.loc)
SERVER1: NLB1 — ip адресс 10.0.0.3 (Role — IIS, NLB)
SERVER2: NLB2 — ip адресс 10.0.0.2 (Role — IIS, NLB)
NLB CLUSTER IP — 10.0.0.200
Примечание: Нам необходимо выполнить следующие действия на обоих серверах-участниках, которые будут участвовать в кластере NLB.
1.На Сервере откройте Server Manager. Нажмите на Инструменты и выберите Add Role and Features.
2. На следующей странице, нажмите Next.
3. Выберите Role-based or feature-based installation и нажмите Далее.
4. Выберите сервер из пула серверов, на котором вы хотите установить функцию балансировки сетевой нагрузки, нажмите «Далее».
5. На странице выбора ролей сервера нажмите Далее.
6. Из списка найдите, Network Local Balancing и отметьте птичкой.
7. Появится новое окно, нажмите Add Features чтобы включить необходимые функции для управления NLB
8. Убедитесь, что выбрана NLB. Нажмите «Next.
9. Нажмите кнопку «Install», чтобы начать процесс установки.
10. Нажмите на Close.
Напоминание : нам нужно выполнить те же действия, на Server2
Помимо GUI , есть возможность также и установить через powershell
Invoke-Command -Computername Server1,Server2 -command {Install-WindowsFeature NLB, RSAT-NLB}
После установки функции NLB следующим шагом будет создание кластера NLB с использованием Windows Server 2016. Для выполнения этих шагов нам нужно открыть Network Load Balancing Manager на одном из узлов NLB.
Настройка NLB Cluster in Windows Server 2016
11. В консоли диспетчера серверов рядового сервера Server1 нажмите «Tools » и выберите «Network Load Balancing Manager».
12. Выберите и щелкните правой кнопкой мыши Network Load Balancing Clusters , а затем щелкните New Cluster.
13. Введите IP-адрес или имя второго рядового сервера в поле Host и нажмите Connect. Убедитесь, что имя интерфейса указано в списке, а затем нажмите next.
14. На странице New Cluster: Host Parameters , измените значение приоритета в соответствии с требованиями. Кроме того, убедитесь, что статус по умолчанию установлен как «Started«. Нажмите Next
15. На странице Новый кластер: IP-адреса кластера щелкните Add, чтобы добавить новый IP-адрес кластера.
16. Укажите IP-адрес кластера и нажмите кнопку ОК
Примечание. Этот IP-адрес является новым виртуальным IP-адресом кластера NLB, на котором будет работать служба хоста.
17. При необходимости вы можете добавить более одного IP-адреса, выполнив те же действия. Нажмите «Next.
18. Выберите режим работы кластера NLB.
Задаем имя кластера (Full Internet name) соответствующее указанному IP-адресу. В принципе это имя ни на что не влияет, но правильнее будет вписать сюда FQDN-имя, по которому клиенты будут обращаться к кластеру. Также не забудьте создать в DNS соответствующую запись.
Указываем режим работы кластера, который определяет, будет ли для операций кластера использоваться встроенный MAC-адрес адаптера:
Unicast или Multicast NLB
Network Load Balancing (NLB) может работать в двух режимах:
- Unicast
- Multicast
- IGMP multicast
Unicast
Стандартным рабочим режимом является режим Unicast. В режиме Unicast компенсация NLB изменяет MAC адрес сетевого адаптера, для которого включена NLB. Все узлы в кластере получают одинаковый MAC адрес. Входящий сетевой трафик приходит на все узлы кластера и направляется на привод фильтра NLB.
Multicast NLB
В режиме Multicast компенсация NLB присваивает каждому сетевому адаптеру (с активированной для него NLB) адрес Layer-2-Multicast. Оригинальный MAC адрес каждого узла остается неизменным.
Оба режима имеют свои сильные и слабые стороны. Преимуществом режима Unicast является то, что он работает в большинстве сетевых сред с практически всеми маршрутизаторами и коммутаторами. Одним из недостатков этого режима является то, что все узлы в кластере NLB имеют одинаковый IP и MAC адреса.
Одним из преимуществ режима Multicast является то, что все узлы в кластере сохраняют свои оригинальные MAC адреса. А недостатком такого режима является то, что Multicast NLB требует дополнительной конфигурации на подключенных коммутаторах, поэтому нужно создавать статическую ARP запись на коммутаторе, который связывает Кластерный IP адрес (VIP = виртуальный (Virtual) IP адрес) с общим кластерным MAC адресом.
Заметка: возможность поддерживать режим Multicast на коммутаторе зависит от производителя коммутатора. Есть также дополнительная информация о режиме Multicast, которую необходимо прочесть перед включением Multicast NLB в вашей сети.
Многоадресный IGMP (IGMP Multicast) — Многоадресный режим с поддержкой протокола групповой передачи данных (Internet Group Management Protocol, IGMP). Включение поддержки IGMP дает возможность ограничить широковещательный трафик, т.е. обеспечить прохождение трафика к NLB-кластеру только через порты, обслуживающие узлы кластера, а не через все порты коммутатора. Для обеспечения этого режима необходимо включить поддержку IGMP на сетевом оборудовании.
Примечание. Все узлы кластера должны работать в одном режиме — либо в одноадресном, либо в многоадресном. NLB не поддерживает смешанную среду одноадресной и многоадресной рассылки внутри одного кластера.
19. На странице New Cluster: Port Rules выберите существующее правило для порта и щелкните edit.
20. Введите диапазон портов. От 80 до 80 (поскольку нам нужен только номер порта 80 для кластера IIS NLB). Выберите режим привязки равным нулю. Нажмите кнопку ОК.
21. Нажмите кнопку ADD чтобы добавить новое правило для порта 443, выполнив те же действия.
22. Нажмите Finish.
23. Подождите, пока узел Server2 не будет успешно добавлен. Цвет значка добавленного узла NLB должен быть зеленым.
Создать кластер через powershell
New-NlbCluster -InterfaceName "Ethernet 3" -OperationMode Unicast -ClusterPrimaryIP 192.168.0.101 -ClusterName nlb.pentagon.loc
Add-NlbClusterNode -InterfaceName "Ethernet 3" -NewNodeName "server2" -NewNodeInterface "Ethernet 5"
Создать А запись в DNS через powershell
invoke-command -computername dc1 {Add-DnsServerResourceRecord -ZoneName «pentagon.loc» -A -Name «nlb» -IPv4Address «10.0.0.200»}
Добавьте второй узел NLB в существующий кластер NLB:
24. Щелкните правой кнопкой мыши существующий кластер NLB и выберите Add Host To Cluster.
25. Введите Server2 в поле Хост и нажмите Connect. Убедитесь, что имя интерфейса указано в списке, а затем перейдите к следующему.
26.На странице New Cluster: Host Parameters измените значение приоритета в соответствии с требованиями (2). Кроме того, убедитесь, что состояние по умолчанию установлено как «Started». Когда будете готовы, нажмите Next.
27. Нажмите Finish, чтобы завершить процесс добавления второго узла NLB в существующий кластер NLB.
28. Убедитесь, что второй узел NLB успешно добавлен. Цвет значка должен быть зеленым.
Тестируем конфигурацию NLB с веб-сайтом по умолчанию:
Я уже установил службу IIS на обоих рядовых серверах, чтобы протестировать кластер NLB. Мы получим доступ к веб-сайту по умолчанию, используя IP-адрес кластера NLB.
Установить IIS можно через powershell
Устанавливать нужно будет на каждом сервере
Import-Module ServerManager
Add-WindowsFeature Web-Server -IncludeAllSubfeature
29. Откройте веб-браузер. Введите IP-адрес кластера балансировки сетевой нагрузки в адресной строке.
Также можно создать свою страницу
<!DOCTYPE html>
<html>
<title>ADLUKASHIN.RU Support</title>
<body>
<h1>Welcome to TEST LAB</h1>
<p>Hello world!</p>
<em>This page is generated from SERVER1 node.</em>
</body>
</html>
Убедитесь, что вы можете получить доступ к веб-сайту по умолчанию. Вы обращаетесь к серверу SERVER1 из-за приоритета NLB 1.
30. Удалите историю просмотров веб-страниц и снова получите доступ к IP-адресу кластера балансировки сетевой нагрузки с помощью Internet Explorer.
31. На этот раз вы обращаетесь к серверу Server 2 из-за балансировки нагрузки NLB.
В результате у нас получился NLB кластер, состоящий из двух узлов.
Настройка параметров кластера
После добавления всех узлов можно приступать к настройке кластера. Кликаем правой клавишей на имени кластера и переходим на пункт «ClusterProperties».
На вкладке Cluster IP Addresses можно изменить существующий адрес кластера или добавить новый. Балансировки сетевой нагрузки позволяет настроить для одного кластера несколько IP-адресов, для каждого адреса назначить собственное имя и настроить правила обработки трафика. Для этого не требуется выделять отдельный адаптер, так что можно настраивать несколько виртуальных NLB кластеров на одном сетевом адаптере.
На вкладке Cluster Parameters можно настроить соответствие имени и IP-адреса кластера и изменить режим его работы.
И на вкладке Port Rules настраиваются правила обработки трафика всеми узлами кластера. При создании кластера создается правило по умолчанию, которое надо изменить, поэтому выделяем его и жмем «Edit».
Правило порта включает в себя следующие настройки:
Cluster IP Addresses — IP-адрес кластера, для которого будет действовать это правило. По умолчанию отмечен чекбокс All, что означает воздействие данного правила на все адреса в кластере.
Port Range — диапазон портов, на которых будет обрабатываться трафик кластера. По умолчанию указаны все порты, что не очень правильно. Например, если у вас кластеризовано веб-приложение, использующее для клиентского доступа порт 80 TCP, то указываем этот порт как начало и конец диапазона. Если нужно указать несколько портов, то для каждого придется создать отдельное правило.
Protocols — протоколы, к которым будет применяться данное правило: TCP, UDP или оба.
Filtering Mode — режим фильтрации. Здесь мы указываем, как именно будет обрабатываться трафик кластера. Можно выбрать из двух режимов:
1) Multiple host — трафик по указанным портам будет распределяться среди всех узлов кластера. В этом случае нужно выбрать режим сходства (affinity), который определяет привязку клиента к определенному узлу кластера:
- None — привязка не используется. Все новые соединения распределяются по разным узлам в зависимости от нагрузки;
- Single — привязка осуществляется по IP-адресу клиента. После того, как клиент осуществил подключение к определенному узлу кластера, в течение установленного сеанса все новые соединения с его IP будут направлены на тот же узел кластера;
- Network — привязка основана на принадлежности клиента к определенной частной подсети. Когда один клиент устанавливает соединение к некоторому узлу, все соединения из этой подсети будут направлены на тот же узел.
Также обратите внимание на чекбокс Timeout minutes. Установка галки включает режим расширенного сходства (Extended Affinity), который обеспечивает привязку в отсутствие активных текущих подключений от клиента к узлу, а также позволяет клиентам сохранять соответствие с узлом при изменении конфигурации кластера. Здесь мы можем указать время, в течение которого клиент будет привязан к определенному узлу при отсутствии активного текущего подключения с его стороны.
2) Single host — весь трафик по указанным портам будет обрабатываться одним узлом кластера, а если этот узел недоступен — то направлен на следующий узел, вычисляемый по номеру Handling Priority (приоритет обработки). Приоритет присваивается узлу при добавлении сервера в кластер и может быть изменен в свойствах узла.
Disable this Port Range — отметив этот пункт, мы запретим обработку трафика на указанных портах. Как я уже говорил, весь сетевой трафик, не подпадающий под действие правил портов, обрабатывается действующим узлом кластера с минимальным идентификатором хоста. Чтобы избежать ненужной нагрузки, весь нецелевой трафик можно запретить. Так в случае с 80 портом достаточно создать 2 правила и запретить весь трафик на портах 0-79 и 81-65535.
При создании правил порта нужно учесть, что:
• Правила на всех узлах кластера должны быть идентичны. При попытке присоединить к кластеру узел с иными правилами или с другим числом правил он не будет принят в кластер;
• Чтобы балансировка сетевой нагрузки корректно обрабатывала IP-фрагменты, не следует использовать значение None для сходства, если выбран протокол UDP или Both;
• Если NLB используется для балансировки нагрузки трафика VPN (напр. PPTP/GRE или IPSEC/L2TP), то для правил порта используйте режим сходства Single или Network.
Настройка параметров отдельного узла
Кроме настройки всего кластера есть возможность настраивать параметры отдельных его узлов. Для этого выбираем узел, кликаем на нем правой клавишей и выбираем «Host Properties».
В окне Host Parameters мы сможем:
• Изменить идентификатор узла, изменив тем самым его приоритет при обработке нецелевого трафика;
• Изменить выделенный IP — изменить, удалить или добавить новый. Кстати, выделенный IP-адрес для работы NLB вовсе не обязателен, и при желании его можно вообще не использовать;
• Изменить дефолтное состояние узла. Так по умолчанию после перезагрузки узел сразу стартует и начинает обрабатывать клиентские подключения. Изменив дефолтное состояние узла на Stopped и указав хранить это состояние, тем самым мы предотвратим автоматический старт и начало обработку клиентских подключений сервером после перезагрузки. Это может понадобиться для проверки корректности работы сервера, например после установки обновлений.
Также заглянем в правила портов. Здесь нас интересуют два пункта:
Load Weight — процент нагрузки. В режиме фильтрации Multiple Hosts параметр Load Weight используется для того, чтобы задать процент трафика, который должен обрабатываться этим узлом по соответствующему правилу. По умолчанию используется вариант Equal, при котором происходит равномерное распределение нагрузки между всеми узлами кластера. Чтобы задать для узла определенный процент, нужно убрать галку и указать значение от 1 до 100. Значение 0 вообще исключает данный узел из обработки трафика.
Обратите внимание, что сумма значений Load Weight для каждого узла параметра не обязательно должна составлять 100 процентов. Реальная часть трафика для каждого узла рассчитывается динамически как частное от деления процента, заданного для узла, на суммарный процент для всего кластера.
Handling Priority — приоритет обработки трафика в режиме фильтрации Single host. Этот параметр указывает приоритет узла для трафика по данному правилу. Узел с наиболее высоким приоритетом будет обрабатывать весь трафик для этого правила, а при его недоступности трафик будет перенаправлен на следующий по приоритетности узел. Чем меньше значение Handling Priority, тем выше приоритет, значение 1 соответствует наиболее высокому приоритету.
Управление кластером
И немного об управлении кластером NLB. Управление можно осуществлять как на уровне отдельного узла, так и на уровне всего кластера. Для управления узлом кликаем на нем и выбираем «Control Host». Дальше на выбор, можно:
- Start — запустить обработку трафика на данном узле;
- Stop — остановить обработку трафика на данном узле. При этом все текущие соединения будут закрыты;
- Drainstop — остановить обработку трафика на узле, предварительно обработав все текущие подключения. В этом варианте остановки узел обрабатывает текущие клиентские подключения, но не принимает новых;
- Suspend — приостановить обработку трафика на данном узле;
- Resume — соответственно возобновить приостановленную работу.
Для того, чтобы совсем удалить узел из кластера, надо выбрать пункт «Delete Host».
Выбрав пункт «Control Ports» можно управлять действием правил: включить (Enable), отключить (Disable) или приостановить обработку новых подключений (Drain). Это может потребоваться для того, чтобы временно исключить узел из обработки трафика кластера, например в целях диагностики.
Все то же на уровне кластера — кликаем на имени кластера и выбираем «Control Hosts». Здесь изменения применяются уже ко всем узлам.
Это руководство по установке и настройке функции балансировки сетевой нагрузки (NLB) в Windows Server 2016. Спасибо за чтение.
1 comment
[…] Источник […]