Объединение сетевых карт (Nic Teaming) в Windows Server 2019
- Что такое Nic Teaming
- Требования и ограничения к Nic Teaming в Windows Server 2019
- Методы настройки объединения сетевых интерфейсов
- Настройка Nic Teaming в Windows Server 2019
- Использование диспетчера серверов
- Режимы поддержки групп
- Режим балансировки нагрузки
- Добавление и исключение сетевых адаптеров из NIC Teaming
- Добавление группового интерфейса в нужный VLAN
- Создание NIC Teaming через PowerShell
- Ключи TeamingMode
- Ключи LoadBalancingAlgorithm
- Добавление сетевых адаптеров из NIC Teaming через PowerShell
- Удаление сетевых адаптеров из NIC Teaming через PowerShell
- Настройка VLAN на NIC Teaming через PowerShell
- Удаление группы сетевых интерфейсов через PowerShell
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разобрали вопрос, что такое cookie, их использование и удаление в случае необходимости. Сегодня я хочу написать пост на тему системного администрирования, а именно мы разберем, как производится объединение сетевых карт в Windows Servwer 2019, разберемся с понятием Nic Teaming, каких видов он может быть и какие сценарии его использования. Думаю, что эта информация окажется полезной.
Что такое Nic Teaming
Сейчас когда бизнес уже очень сильно зависит от доступности его сервисов, таких как корпоративная почта, файловый сервер, сайт с веб приложениями и CRM, и многое другое очень сильно встает вопрос по организации отказоустойчивости на разных уровнях. Одним из таких уровней является сетевой. В данной статье нам нужно рассмотреть про организацию отказоустойчивой сети в вашем Windows Server 2019. Сейчас уже себе сложно представить сервер, у которого было бы сетевых интерфейсов меньше двух, чаще всего их четыре и более. Раз они есть, то было бы здорово их объединить и использовать, как одно целое решая тем самым:
- Отказоустойчивость сетевой доступности
- Увеличение пропускной способности
Microsoft начиная с Windows Server 2012 услышала администраторов и внедрила в свою операционную систему функционал Nic Teaming. Объединение сетевых карт (Nic Teaming Network Interface Card Teaming (Load Balancing/Fail Over (LBFO))) - это технология группировки физических или виртуальных сетевых карт в один или несколько программных сетевых адаптеров, решающих проблемы в случае сбоя оборудования.
Предположим, что у нас вышел из строя один сетевой адаптер, в результате прохождение трафика перестроилось.
Ранее Nic Teaming мог быть реализован только посредством установки специальных драйверов на ваши сетевые карты. Эти драйвера позволяли вам через свойства сетевых адаптеров собирать пулы. Бывало так, что у вас на физическом сервере могли быть сетевые карты разных производителей, и в таком сценарии вы могли иметь проблемы с объединением сетевых карт. Благодаря встроенной возможности Windows Server 2019 эта проблема минимизируется.
Хочу отметить, что данная технология не нова и давно уже реализована и используется на сетевом оборудовании, там она называется LACP, или на системах хранения, например у Synology, там она называется Bonding, в Linux то же Bonding.
Требования и ограничения к Nic Teaming в Windows Server 2019
Как сказано в документации Microsoft драйвер сетевой карты должен иметь цифровую подпись Windows Hardware Qualification and Logo (WHQL). Если WHQL имеется, то вы может объединять адаптеры разных производителей.
Нужно учитывать, что для работы Nic Teaming сетевые карточки должны иметь одинаковую пропускную способность, если вы используете объединение от других производителей, то не используйте их совместно с инструментом Microsoft.
Так же вы не сможете объединить в группу карточки которые работают не по технологии Ethernet, такие как WWAN, Wi-FiInfiniband, сетевые адаптеры отладки ядра (KDNIC). Так же есть ряд технологий, которые не поддерживаются технологией объединения сетевых карт:
- TCP Chimney. TCP Chimney не поддерживается, так как TCP Chimney разгружает весь сетевой стек непосредственно к сетевому адаптеру.
- Для SR-IOV данные доставляются непосредственно на сетевой Адаптер без передачи через стек сети в виртуализации. Таким образом он не поддерживается для сетевых карт, для проверки или перенаправлять данные на другой маршрут в объединении.
- При настройке Qos, когда вы активируете политику качества обслуживания, тут могут быть проблемы из-за ограничения полосы пропускания
Методы настройки объединения сетевых интерфейсов
Существует три метода и два подхода по настройке ваших сетевых карт в общую сетевую группу:
- Первый метод, это локальный непосредственно на вашем сервере
- Второй метод, это удаленный подразумевает, что вы используете инструменты позволяющие вам выполнить настройку на удаленной системе.
Из инструментов я могу выделить:
- Использование оснастки "Диспетчер серверов"
- Командлеты PowerShell
Настройка Nic Teaming в Windows Server 2019
Производить настройку Nic Teaming я буду в моем тестовом домене Active Directory root.pyatilistnik.org. У меня есть виртуальная машина с установленной Windows Server 2019, где выполнена базовая настройка перед вводом в эксплуатацию. Так как я этот сервер использую, как хост управления Windows Admin Center и WDS сервер ,то мне хочется, чтобы он был более отказоустойчивый и производительный в плане пропускной способности.
Использование диспетчера серверов
Данный метод самый простой и часто используемый, так как подходит большинству системных администраторов, он позволит вам производить настройки тиминга и на серверах Windows Core. Открываем диспетчер серверов, в моем примере на сервере SVT2019S01, у него есть четыре гигабитные сетевые карты intel 82574L. Как видно по умолчанию в Windows Server 2019 объединение сетевых карт отключено, щелкаем по настройке.
В статье по настройке сети в Windows Server 2019 я вам показывал команду PowerShell показывающую вам сетевые настройки:
В результате видно, что мои адаптеры имеют 4 разных Ip-адреса, один статический 192.168.31.3 и три динамических, полученных от DHCP-сервера. Я сделаю пул состоящий из четырех сетевых адаптеров и назначу ему IP-адрес 192.168.31.3.
В результате у вас должно открыться окно "Объединение сетевых карт", оно будет разбито на три раздела:
- Раздел серверы - тут вы можете добавлять удаленные сервера для управления тимингом
- Раздел группы - тут вы создаете группы "Windows Nic Teaming"
- Адаптеры и интерфейсы - список ваших сетевых адаптеров, которые вы будите добавлять в группы
Объединение сетевых карт у нас начинается с создания новой группы. В разделе группы, нажмите кнопку "Задачи" и выберите пункт "Создать группу".
Откроется окно создания группы. Тут вам нужно выбрать под себя и свои задачи ряд параметров, а именно:
- Задайте удобное для вас имя Nic Teaming, отмечу, что оно ни на что не влияет
- Выберите адаптеры участники - это те сетевые адаптеры которые вы хотели бы видеть у себя в группе интерфейсов, я пока выберу два, остальные добавлю в момент, когда группа уже создана
Нажмите кнопку "Дополнительные свойства", в ней весь сок. Тут вы сможете настроить:
- Режим поддержки групп
- Режим балансировки нагрузки
- Резервный адаптер - это если вы хотите какой-то сетевой интерфейс держать про запас и если кто-то из группы будут не доступны, то он включится в дело и всех спасет, Нужно учитывать, что он не будет участвовать в передачи данных.
- Основной групповой интерфейс
Режимы поддержки групп
Режим поддержки групп (Teaming Mode) - это два режима, которые задают как у вас будет работать ваше объединение сетевых карт. Как я писал выше у вас три варианта: "Не зависит от коммутатора (Switch Independent)", "Статическая поддержка групп (Static Teaming) (IEEE 802.3ad draft v1)" и LACP (Link Aggregation Control Protocol (LACP, IEEE 802.1ax)).
- Не зависит от коммутатора (Switch Independent) - данный режим позволяет вам подключать сетевые адаптеры сервера к разным коммутаторам, добиваясь тем самым отказоустойчивости. Независимые от коммутатора опции означают, что нам не нужно вносить какие-либо изменения конфигурации на стороне коммутатора. Использование "Не зависит от коммутатора" означает, что исходящий трафик будет сбалансирован по нагрузке с использованием выбранного нами алгоритма, но поскольку коммутаторы не знают о балансировке нагрузки, входящий трафик не будет сбалансирован по нагрузке. Входящий трафик получает основной сетевой интерфейс, в случае если он сбоит, его функции перейдут другому адаптеру.
- Статическая поддержка групп (Static Teaming) (IEEE 802.3ad draft v1) - данный режим требует настройки коммутатора, чтобы он мог работать с командами Nic Teaming Windows Server 2019, и сетевые адаптеры должны быть подключены к одному и тому же коммутатору. Еще раз, цитируя официальную документацию : «Команды, зависящие от коммутатора, требуют, чтобы все члены объединения были подключены к одному и тому же физическому коммутатору или коммутатору с несколькими шасси, который разделяет идентификатор коммутатора между несколькими шасси». При статической поддержке групп вам необходимо в ручном режиме произвести настройки на вашем коммутаторе, вы выделяете под это дело статические порты и формируете группу. Этот режим обычно поддерживается коммутаторами серверного класса.
В режиме "Статическая поддержка групп" исходящий трафик при режиме балансировки (Хэш адреса "Address Hash") будет распределяться между всеми активными адаптерами в группе объединенных сетевых карт. Входящий трафик так же будет перенаправлен в соответствии с заданным алгоритмом нагрузки, который задан на коммутаторе.
- LACP (Link Aggregation Control Protocol (LACP, IEEE 802.1ax)) - данный режим требует настройки коммутатора, режим намного более динамичен. Мы настраиваем коммутатор, а не отдельные порты, что означает, что мы можем перемещать кабели, и мы все равно получим сценарий с балансировкой нагрузки. Когда коммутатор настроен, он узнает о вашей сетевой группе и обрабатывает динамическое согласование портов.
Режим балансировки нагрузки
При объединении сетевых карт вам не только нужно выбрать режим поддержки, но и еще необходимо задать режим балансировки, коих целых три:
- Хэш адреса (Address Hash)
- Порт Hyper-V (Hyper-V Port)
- Динамический (Dynamic)
Ниже я расскажу про каждый из них.
- Хэш адреса (Address Hash) - как можно догадаться из названия в данном режиме балансировки происходит вычисление хэш на основе адреса отправителя и получателя. Вычисленный хэш будет ассоциироваться с каким либо сетевым адаптером, и пакеты с таким хэшем будут прилетать именно ему. Хэш может вычисляться на основе следующих значений (Задаются через PowerShell):
- MAC-адрес отправителя и получателя;
- IP-адрес отправителя и получателя (2-tuple hash);
- TCP-порт отправителя и получателя и IP-адрес отправителя и получателя (4-tuple hash).
Если вы выбираете режим на основе портов, то это равномерное распределение трафика, но если у вас трафик не TCP/UPD, то применяться будет режим IP-адреса, если трафик не IP, то будет хэш на основе MAC-адреса.
- Порт Hyper-V (Hyper-V Switch Port) - Балансировка нагрузки порта Hyper-V связывает виртуальную машину с конкретным сетевым адаптером в группе, что может хорошо работать для хоста Hyper-V с многочисленными виртуальными машинами, так что вы распределяете их сетевой адаптер между несколькими сетевыми картами в вашей группе. Весь исходящий трафик данной ВМ всегда передается через этот сетевой адаптер. В данном режиме такой вид балансировки назначает независимые MAC-адреса виртуальным машинам. Этот режим очень хорошо работает в сценариях, где вы объединяете много виртуальных машин на физическом хосте Hyper-V, но ни одна из них не генерирует сетевую нагрузку, превышающую пропускную способность одного сетевого адаптера в группе. Объединение сетевых карт использует порт коммутатора Hyper-V Virtual в качестве идентификатора, вместо того чтобы использовать MAC-адрес источника, так как в некоторых случаях виртуальные машины могут быть настроены с использованием более одного MAC-адреса на порту коммутатора.
- Динамический (Dynamic) - это опция по умолчанию, представленная в Server 2012 R2, которая рекомендована Microsoft и дает вам преимущества обоих ранее упомянутых алгоритмов: он использует хеширование адресов для исходящего трафика и балансировку портов Hyper-V для входящего с дополнительной встроенной логикой для балансировки в случае сбоев/затыков
Разобравшись с основными понятиями, можно продолжить объединение сетевых карт. В своем примере я для начала объединю в NIC Teaming два сетевых интерфейса "Ethernet0" и "Ethernet1". Дополнительные настройки я выберу:
- Режим поддержки групп - Не зависит от коммутатора
- Режим балансировки нагрузки - Хэш адреса
- Резервный адаптер - нет (все адаптеры активны)
Применяем настройки, в итоге первый сетевой адаптер у вас сразу будет в зеленом, активном состоянии, дополнительный сетевой адаптер, может легко иметь статус "Неисправный, ожидает подключения". Связано это с тем, что идет сборка NIC Teaming, так что можете не беспокоиться.
Через пару секунд мы видим, что оба адаптера имеют статус "Активный" и все зелененькое.
В левой части вы будите видеть вашу группу объединенных сетевых интерфейсов и ее текущие настройки. Если необходимо их поменять, то кликаем по группе правой кнопкой мыши и из контекстного меню выберите пункт "Свойства".
В результате у вас откроется знакомое вам окно со всеми свойствами группы.
Теперь давайте мы с вами откроем окно "Сетевые подключения", обратите внимание, что у вас появился новый виртуальный адаптер (Microsoft Network Adapter Multiplexor Driver). У него своеобразный значок, отличный от обычных карт, открыв его свойства вы сразу можете увидеть, что его скорость стала 2 Гбит/с, это логично, у нас же произошло сетевое объединение двух адаптеров по 1 Гбит/с. Открыв свойства подключения, я вижу, что получил динамический IP-адрес от моего DHCP сервера, при желании вы можете задать статические настройки.
Если вы теперь попытаетесь посмотреть свойства любого из сетевых адаптеров участвующих в тиминге, то у них уже не будет своего IP-адреса, так как он выступает в роли силинка (Это можно сравнить с обычным патч кордом подключенным от коммутатора к серверу)
Убедиться в том, что это силинк можно. так же увидев, что в свойствах адаптера отключены пункты IP версии 4 и 6.
Так же это можно проверить, через команду IPCONFIG, которая выведет три сетевых интерфейса.
Еще хочу обратить внимание, что на интерфейсе NIC Teaming появился новый драйвер "Microsoft Load Balancing/Failover Provider", он и участвует в алгоритме балансировки трафика.
Добавление и исключение сетевых адаптеров из NIC Teaming
Давайте я в свою группу teaming-pyatilistnik добавлю третий сетевой адаптер. Для этого в диспетчере серверов в свойствах группы поставьте галки на против нужных. Я добавлю сетевые адаптеры "Ethernet2" и "Ethernet3", последний у меня будет, как резервный. Применяем.
Так же ждем настройки.
В итоге мы расширили наше объединение сетевых адаптеров, три активных и один резервный.
Проверяем утилитой IPCONFIG, видим, что в моей Windows Server 2019 один сетевой интерфейс, но 4-ре физических адаптера. Тиминг готов.
Благодаря этому, я добился пропускной способности в 3 Гбит/с и с одним резервным адаптером.
Для того, чтобы удалить один из сетевых адаптеров из NIC Teaming, в свойствах просто снимаем галку.
Удаление происходит практически моментально.
Добавление группового интерфейса в нужный VLAN
Я уверен, что у вас не плоская сеть и вы используете VLAN для разделения трафика. Настроить номер VLAN можно в диспетчере задач, вкладка "Групповые интерфейсы", вызовите свойства вашей группы сетевых адаптеров.
Ставим галку "Конкретная виртуальная ЛС", где в определенном поле нужно указать номер VLAN, обратите внимание, что данный номер будет дописан в название NIC Teaming.
- Перед включением объединения сетевых карт настройте порты физического коммутатора, подключенные к узлу Teaming, для использования режима магистрали (неизбирательного). Физический коммутатор должен передавать весь трафик на узел для фильтрации без изменения трафика.
- Не настраивайте фильтры VLAN на сетевых адаптерах с помощью параметров дополнительных свойств сетевого адаптера. Разрешите программе объединения сетевых карт или виртуальному коммутатору Hyper-V (при наличии) выполнить фильтрацию виртуальных ЛС.
Если вы планируете использовать VLAN внутри виртуальной машины Hyper-V, то настраивать виртуальную ЛС нужно на виртуальном коммутаторе, а не на группе объединения сетевых карт. Если у вас стоит задача в виртуальной машине использовать несколько виртуальных сетей, то вы каждый порт коммутатора настраиваете на нужный VLAN, никогда не делайте это внутри виртуальной машины. Если же вы используете виртуальные функций SR-IOV (VFs), то обязательно проверьте, что они находятся в одном VLAN, перед тем как их будите объединять.
Создание NIC Teaming через PowerShell
Чтобы создать сетевое объединение интерфейсов через командлеты, вам нужно открыть PowerShell от имени администратора. Первым делом вам нужно посмотреть список физических адаптеров, для этого введите:
В моем примере их 4-ре. Предположим, что я хочу объединить в NIC Teamin первые два адаптера "Ethernet1" и "Ethernet2".
Для создания мы будем использовать командлет New-NetLbfoTeam.
- -Name -Мы задаем имя нашего объединения сетевых карт
- -TeamMembers - указываем, какие сетевые адаптеры мы будем объединять
- -TeamingMode - режим поддержки групп
- -LoadBalancingAlgorithm - Режим балансировки
Ключи TeamingMode
- LACP (Link Aggregation Control Protocol (LACP, IEEE 802.1ax))
- Static (Статическая поддержка групп (Static Teaming) (IEEE 802.3ad draft v1))
- SwitchIndependent (Не зависит от коммутатора (Switch Independent))
Ключи LoadBalancingAlgorithm
- TransportPorts - это Хэш адреса (Address Hash)
- HyperVPort - это Порт Hyper-V (Hyper-V Port)
- Dynamic - это Динамический (Dynamic)
- IPAddresses - Использует IP-адреса источника и назначения для создания хэша, а затем назначает пакеты, которые имеют совпадающее значение хэша, одному из доступных интерфейсов. При указании этого алгоритма с TeamingMode параметром и значением SwitchIndependent весь входящий трафик поступает на основной интерфейс группы.
- MacAddresses - Использует исходные и целевые MAC-адреса для создания хэша, а затем назначает пакеты, которые имеют совпадающее значение хэша, одному из доступных интерфейсов. При указании этого алгоритма с TeamingMode параметром и значением SwitchIndependent весь входящий трафик поступает на основной интерфейс группы.
Вас спросят, действительно ли вы хотите создать объединенную группу сетевых интерфейсов, говорим "Y". Сразу вы увидите статус "Degraded", через некоторое время уже "Up".
Set-DnsClientServerAddress -InterfaceAlias teaming-pyatilistnik -ServerAddresses 192.168.31.1
Если нужно изменить поменять настройки вашей тиминговой группы, то для этого есть командлет Set-NetLbfoTeam. Допустим я хочу, чтобы режим поддержки групп был LACP, команда будет выглядеть вот так:
Хочу отметить, что если вы попытаетесь, как и в моем примере сделать, это на виртуальной машине, то получите ошибку;
Она вам прямым текстом скажет, что на виртуалках можно использовать только режим SwitchIndependent, на железных серверах все будет работать. Теперь давайте поменяем режим балансировки на IPAddresses, для этого пишем:
Добавление сетевых адаптеров из NIC Teaming через PowerShell
Предположим, что вы решили добавить еще один сетевой адаптер в объединение сетевых интерфейсов, как видим у меня NIC Teaming состоит из адаптеров "Ethernet0" и "Ethernet1", я добавлю "Ethernet2"
Пишем команду:
Удаление сетевых адаптеров из NIC Teaming через PowerShell
Если стоит задачу удалить сетевой адаптер из вашей группы объединенных сетевых интерфейсов, то выполним команду:
Настройка VLAN на NIC Teaming через PowerShell
Если нужно указать определенную виртуальную сеть (VLAN), то вы можете этого добиться командой:
Изменить командой Set-NetLbfoTeamNIC -Name "teaming-pyatilistnik - VLAN 2" -VlanID 3 (Меняем VLAN 2 на 3)
Обратите на имя главного интерфейса в группе "teaming-pyatilistnik - VLAN 2"
Вернуть VLAN по умолчанию, обязательно смотрите "Primary" интерфейс
Удаление группы сетевых интерфейсов через PowerShell
Для удаления есть команда:
Чтобы удалить все тиминги, введите Get-NetLbfoTeam | Remove-NetLbfoTeam
На этом у меня все. Мы разобрали создание, настройку, редактирование, удаление объединения сетевых интерфейсов в операционной системе Windows Server 2019. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.
Добрый день,
Столкнулся с определённой проблемой после объединения сетевых интерфейсов.
— сообщения в журналах о конфликте MAC-адресов (а-ля MAC у Team совпадет с MAC одного из интерфейсов);
— MAC у Team меняется, что осложняет резервацию IP-ареса в DHCP.
Можете прокомментировать ?
добрый день! А где вы такие сообщения видите, на DHCP сервере или на сервере с тимингом? Какой код ID сообщения?
Доброе время суток.
Я сделал все по вашей статье, за исключением того, что у меня две сетевых адаптера и нет резервного. В итоге, в окне состояния сетевых подключений написано 2 Гбит/с, но на практике таких скоростей не наблюдаю. Проверял копированием файла из одного сервера на другой.
рижим поддержки групп стоит LACP
режим балансировки — Dynamic
подключены сетевые адаптеры к свитчу HP 1910-24, на котором настроил Link aggregation.
Тигран, LACP не позволяет при соединениях хост-хост забирать всю полосу пропускания. Только одна физика. Вот если будет другая пара серверов, что погонят трафик через LACP, то они смогут забрать себе другую физику.
Грубо говоря 2G LACP делится 1+1 для разных хостов.
Доброго времени суток!
На скриншоте с проверкой готовности тиминга мак Ethernet0 и мак teaming-pyatilistnik одинаковы.
Так и должно быть?
Да.
С удовольствием бы увидел статью с раскрытым вопросом по переключению активного интерфейса а-ля LiveLink.(Когда сервер подключен напрямую (без коммутаторов) к кластеру межсетевых экранов в режиме Active/Standby как failover на Cisco ASA)
Есть 2 сервера с сетевыми картами объединенными в группу. Можно ли их соединять напрямую, минуя коммутатор?
да можно
Добрый день, подскажите; с двух портов физ. коммутатора приходит vlan1 (native) и vlan2 access (tagged) на два порта сервера с winsrv22 и ролью hyper-v, на одной из vm нужно использовать оба этих vlan, каким путем при настройке пойти — настройка vlan на группе объединения или на виртуальном коммутаторе? Попробовал использовать SET — все еще более запутанно. На 2008r2 где были дрова от hp все было проще, указываем 2 vlan в тиме и драйвер создавал два адаптера, которые и использовались в hyper-v, теперь ничего не понятно. Спасибо,
Здравствуйте!
Имеем сервер подключённый 4 сетевыми картами к коммутатору zyxel. При какой настройке можно получить максимальную скорость с сервера или на сервер ? пробовал lag static режим хэш, реальную скорость 1гбит получил. за коммутатором несколько клиентов по 1гбит которые скачивают или закачивают файлы на сервер
Вы так же пишите — «При указании этого алгоритма с TeamingMode параметром и значением SwitchIndependent весь входящий трафик поступает на основной интерфейс группы.»
Непонятно немного. на один интерфейс группы или на все ? И какой из интерфейсов основной? как узнать ?