Овладейте командным объединением NIC с помощью PowerShell и GUI

Хотите, чтобы серверы оставались доступными даже в случае выхода из строя основного коммутатора на работе? Хотите, чтобы ваш сервер имел доступ к нескольким VLAN без зависимости от конкретных драйверов определенного поставщика? Хотите упростить конфигурацию сети для физических и виртуальных хостов в вашей среде? Если вы ответили “да” на хотя бы один из этих вопросов, то этот статья для вас. Позвольте NIC Teaming сделать это.

NIC Teaming может улучшить отказоустойчивость ваших машин, более эффективно использовать сетевые ресурсы (балансировка нагрузки), настроить VLAN для использования машины и упростить конфигурацию сети.

В этой статье вы узнаете, что такое NIC teaming, какие существуют особые соображения при использовании NIC Teaming в виртуальных машинах и как его развернуть в вашей организации.

Предварительные требования

Вам не нужно быть экспертом в области Windows или администрирования сети, чтобы понять NIC teaming. Однако вам потребуется несколько технических и знаниевых предпосылок, чтобы понять и применить эту статью. Это:

  • Понимание того, как функционируют сети (MAC-адреса, IP-адреса, VLAN)
  • Доступ к Windows Server 2016 (или 2019) с двумя или более доступными сетевыми адаптерами – практически все, что вы увидите, также одинаково применимо к Windows Server 2016, 2012R2 и Windows Server 2012

Понимание NIC Teaming

В традиционной сетевой настройке для физического сервера вы обеспечиваете отказоустойчивость, подключая несколько сетевых кабелей от сервера к нескольким физическим коммутаторам (возможно, часть одной коммутаторной группы). Таким образом, у сервера всегда активны несколько IP-адресов, а балансировка нагрузки отсутствует.

Развернув команду NIC (сетевой интерфейс) на вашем сервере, вы можете поддерживать подключение к нескольким физическим коммутаторам, но использовать только один IP-адрес. Балансировка нагрузки становится доступной. Вместо ожидания истечения/обновления DNS-записей обеспечивается мгновенная отказоустойчивость, а управление становится проще.

Командировка NIC является возможностью в Windows Server, позволяющей группировать сетевые карты в “команды”. Каждая команда состоит из одного или нескольких участников команды (сетевых карт, находящихся в команде) и одной или нескольких виртуальных сетевых карт, доступных для использования.

Участники команды – это сетевые адаптеры, которые команда использует для общения с коммутатором. Интерфейсы команды – это виртуальные сетевые адаптеры, создаваемые при создании команды. Иногда сложно запомнить, что такое интерфейсы команды получают IP-адрес.

В чем разница между командировкой NIC и связыванием?

Командировка NIC является синонимом связывания NIC.

Командировка NIC доступна во всех выпусках Windows Server, начиная с Windows Server 2012. Эта возможность крайне гибкая и предоставляет администраторам гораздо более простое решение для Агрегации ссылок/балансировки нагрузки, отказоустойчивости и программно определяемой сети (VLAN).

У некоторых поставщиков оборудования есть аналогичные решения, однако реализация командировки NIC от Microsoft стремится обеспечить эти функции независимо от оборудования и поставщика.

В чем разница между командировкой NIC и мостом?

NIC Teaming позволяет создать интерфейс NIC, охватывающий один или несколько адаптеров NIC, находящихся в одной подсети. NIC Bridging позволяет объединить адаптеры NIC из разных подсетей для обеспечения связи между двумя подсетями.

При настройке команды NIC вы установите режим команды, режим балансировки нагрузки, резервный адаптер, и VLAN команды интерфейса. Каждый из этих компонентов объясняется ниже.

Режим команды

При создании команды NIC вы должны выбрать, какой режим команды использовать. Режим команды определяет, как сервер и коммутатор(ы) будут разделять трафик между несколькими соединениями. Существует три типа режимов команды: Switch independent, LACP и Static.

Switch Independent

Независимая команда позволяет подключать членов команды к нескольким коммутаторам без стека. Режим независимой команды – единственный режим команды, который не требует изменений конфигурации на подключенных коммутаторах. В этом режиме только MAC-адреса используются для управления интерфейсом, на который должны быть отправлены входящие данные.

Есть несколько ситуаций, когда можно выбрать режим независимой команды, например. Это может быть, когда:

  • вы не будете вносить изменения в конфигурацию подключенных коммутаторов
  • используются несколько коммутаторов без стека для членов команды
  • создается команда NIC внутри виртуальной машины (подробнее об этом в разделе Соображения при использовании виртуальных машин ниже)

Если вы предпочитаете использовать один адаптер для трафика и только в случае отказа физического соединения переключаться на резервный адаптер, вам необходимо использовать режим коммутации независимым переключателем и настроить резервный адаптер.

A standby adapter is not used often because it reduces the total bandwidth that is available for communicating with the server. The default setting is “None (all adapters Active)”.

Статическая

Статическая коммутация требует ручной настройки портов на коммутаторе, которые подключаются к командной сетевой плате (NIC) для образования группы агрегации каналов (LAG). Сервер и коммутатор разделяют трафик между всеми активными соединениями.

Если порт на одном из концов соединен с другим устройством, трафик будет разделен по этому соединению без его ожидания. Таким образом, это не поможет изолировать ошибки, такие как неправильно подключенные кабели.

Режим статической коммутации следует использовать только в том случае, если ваши коммутаторы не поддерживают LACP.

LACP коммутация аналогична статической коммутации, но также отслеживает, подключен ли каждый активный кабель в соединении к ожидаемой LAG. LACP не будет отправлять данные по соединениям, которые не подключены к ожидаемой LAG.

Используйте LACP, когда вы хотите, чтобы коммутатор был осведомлен о командной сетевой плате (NIC) с целью балансировки нагрузки данных, отправляемых коммутатором на командную сетевую плату (NIC).

Важно: режимы статической коммутации и LACP требуют подключения хоста только к одному коммутатору или одной стопке коммутаторов.

Режим балансировки нагрузки

Режим балансировки нагрузки определяет, как команда будет представлять интерфейсы для входящих данных и определять, какие адаптеры использовать для исходящих данных. Доступные варианты – Address Hash, Hyper-V Port и Dynamic

В отличие от “балансирующего нагрузку устройства”, входящий трафик не будет равномерно распределяться между каждым используемым командой участником.

Address Hash

Address Hash режим будет пытаться использовать исходные и целевые IP-адреса и порты для создания эффективного баланса между участниками команды. Если порты не являются частью соединения, будут использоваться только IP-адреса для определения способа балансировки нагрузки. Если в соединении нет IP-адресов, будут использоваться MAC-адреса.

При создании команды сетевого интерфейса можно заставить команду использовать IP+Port, только IP или только MAC-адрес. IP+Port является значением по умолчанию и обеспечивает лучший баланс между участниками команды. Чтобы использовать только IP или только MAC-адрес, вам придется создать команду сетевого интерфейса через PowerShell.

Хотя режим балансировки нагрузки Address Hash хорошо разделяет исходящий трафик между участниками команды, он не способен адаптироваться к пере/недоиспользуемым участникам команды. Кроме того, весь входящий трафик использует MAC-адрес основного интерфейса команды. Однако это ограничено одной ссылкой при использовании режима командования Switch Independent.

Вы должны использовать Address Hash при создании команды внутри виртуальной машины.

Hyper-V Port

Режим Hyper-V Port предназначен только для использования на хостах виртуальных машин Hyper-V. В этом режиме каждой машине на хосте виртуальных машин назначается MAC-адрес, а затем каждому из MAC-адресов назначается участник команды. Это позволяет обеспечить предсказуемость участников команды для каждой виртуальной машины в обычном режиме работы.

Предсказуемость участников команды для каждой виртуальной машины означает, что пропускная способность виртуальной машины ограничена максимальной пропускной способностью одного канала, через который она работает. Когда на хосте Hyper-V находится небольшое количество виртуальных машин, использование режима балансировки нагрузки Hyper-V Port, вероятно, не будет хорошо сбалансированным.

Обычно вам не нужно использовать режим Hyper-V Port, но вы можете обнаружить его полезность, если вам необходимо убедиться, что каждая виртуальная машина всегда использует один и тот же канал.

Динамический

Динамический режим использует лучшие функции режимов Address Hash и Hyper-V Port для балансировки исходящего и входящего сетевого трафика. Как и в режиме Hyper-V, входящий трафик разделен путем назначения участников команды разным MAC-адресам. Как и в режиме Address Hash, исходящий трафик разделен с помощью комбинированного хэша, полученного из IP/Port. Эта смесь обеспечивает лучшую балансировку по сравнению с любым из вышеуказанных методов.

Динамический режим балансировки имеет одно важное улучшение: динамическое мониторинг трафика. Когда алгоритм динамического режима определяет, что некоторые участники команды перегружены или недостаточно загружены, он будет перебалансировать исходящий трафик на других участников команды при необходимости.

Потоки TCP имеют естественный ритм, который позволяет предсказать будущие объемы/перерывы в трафике TCP; Microsoft называет их потоками. Динамический режим балансировки нагрузки также может предвидеть, через потоки, какие члены команды станут перегруженными или недостаточно загруженными и перераспределить исходящий трафик для подготовки.

Динамический режим почти всегда является лучшим вариантом балансировки нагрузки для использования.

Сеть виртуальных интерфейсов команды

При создании команды по умолчанию будет создан один сетевой интерфейс команды. У сетевого интерфейса команды есть настройка VLAN, чтобы пометить трафик на интерфейсе для определенной VLAN. Установка VLAN для командного интерфейса обычно выполняется только тогда, когда члены команды, из которых состоит командный сетевой адаптер, используют режим «транк».

После создания команды можно создать дополнительные командные интерфейсы на разных VLAN.

Предупреждение: Microsoft рекомендует никогда не устанавливать VLAN для интерфейса внутри ВМ. Вместо этого используйте расширенную опцию переключателя Hyper-V «ID VLAN» для определения VLAN для ВМ.

Командный адаптер в виртуальных машинах

Настройка командных адаптеров в ВМ имеет некоторые ограничения. Microsoft специально отмечает, что использование «Команды в Командах» (команды на уровне хоста и команды на уровне ВМ) может быть очень непредсказуемым и вызывать потерю соединения.

Традиционно, обеспечение отказоустойчивости для ВМ требовало, чтобы ВМ были подключены к нескольким внешним виртуальным коммутаторам. Вам приходилось планировать, какие ВМ будут использовать каждый виртуальный коммутатор, чтобы гарантировать, что ни один из них не станет перегруженным. Проблемы с балансировкой нагрузки были дополнительно усложнены возможностью перегрузки от других ВМ на хосте.

В настоящее время вы можете развернуть команду сетевых интерфейсов (NIC team) на хосте ВМ с помощью одного сетевого адаптера для каждой ВМ. Все ВМ получают полную отказоустойчивость от отказов физического порта или коммутатора. Трафик всех ВМ может быть равномерно распределен среди членов команды для получения гораздо лучшей пропускной способности и обработки перегрузок. Ваша конфигурация может выглядеть следующим образом:

A NIC Team topology

Иногда в ВМ используется команда сетевых интерфейсов (NIC teaming), чтобы включить SR-IOV для снижения нагрузки на ЦП сетевого стека. Для функционирования SR-IOV также требуется поддержка BIOS и NIC.

Требования

Использование команды сетевых интерфейсов (NIC teaming) в ВМ включает в себя следующие требования для “поддерживаемой конфигурации”:

  1. Вы должны использовать несколько адаптеров в ВМ.
  2. Адаптеры должны быть подключены к двум виртуальным коммутаторам типа “внешний”.
  3. Если подключаетесь к физическим коммутаторам, они должны находиться в одной L2-подсети.
  4. Режим NIC Team ВМ должен быть установлен в Switch Independent, а режим балансировки нагрузки должен быть установлен на *Address Hash*.

В Hyper-V вам также необходимо включить команду NIC Teaming для ВМ из вкладки “Расширенные возможности” каждого сетевого адаптера, который будет входить в команду. Вы можете увидеть пример ниже того, как выглядит эта настройка.

NIC Teaming Hyper-V option

Максимизация производительности

Хотя команда NIC Teaming имеет хорошую производительность “из коробки”, существуют различные сценарии, где вам может потребоваться улучшить производительность. Конкретные детали этих сценариев выходят за рамки данной статьи, но если вы хотите узнать больше о том, как повысить производительность, обратите внимание на следующие термины:

  • Удаленный прямой доступ к памяти (RDMA)
  • Встроенная команда Teaming (SET)
  • Масштабирование приемной стороны (RSS)
  • Виртуализация ввода-вывода с одним корнем (SR-IOV)

В целом, эти дополнительные настройки снижают некоторую нагрузку на процессор для сетевого стека и задержку между соединениями. Вы можете узнать больше о повышении производительности в статьях “Объяснение программного и аппаратного обеспечения” и “Повышение производительности с помощью RDMA с SET”.

Создание команды NIC на сервере Windows

Вооружившись знаниями о работе команды NIC Teaming и видением упрощения сетевого взаимодействия, вы теперь готовы создать команду NIC!

Для этой демонстрации будет создана команда NIC на виртуальной машине из-за ограничений демонстрационной среды. Настройка команды NIC на физическом сервере будет аналогичной, но если требуются какие-либо специфические шаги для виртуальной машины, они будут указаны.

Как проверить, включена ли команда NIC Teaming?

Команда NIC Teaming включена во всех версиях Windows Server, начиная с 2012 года (Server 2012, 2012R2, 2016 и 2019).

Развертывание команды NIC Teaming через графический интерфейс

Для начала запустите Server Manager на компьютере с установленной Windows Server. Убедитесь, что вы подключены к компьютеру, на котором хотите настроить команду NIC Teaming.

  1. Сначала щелкните правой кнопкой мыши на имени сервера, на котором будет создана команда NIC Teaming, и выберите Настроить NIC Teaming.
Configure NIC Teaming option in Server Manager

2. В панели Адаптеры и интерфейсы выберите NIC, которые хотите добавить в новую команду. Затем щелкните правой кнопкой мыши на выбранных адаптерах и выберите Добавить в новую команду.

Add to New Team option in Server Manager

Примечание: Вы можете настроить команду NIC Teaming с любой комбинацией одного или нескольких адаптеров (максимум: 32) и одного или нескольких интерфейсов команды.

3. Введите описательное имя команды и настройте дополнительные параметры, если это необходимо, и нажмите OK, чтобы создать команду.

В этом примере команда NIC Teaming настраивается на виртуальной машине. В результате режим команды совмещения или режим балансировки нагрузки не может быть использован. Если бы эта демонстрация была на физическом сервере, вероятно, вы бы использовали независимый переключатель или LACP, если использовали агрегацию каналов на коммутаторе.

New Team dialog box

Команда NIC Teaming теперь должна быть создана на сервере с установленной Windows.

Добавление дополнительных сетевых адаптеров или интерфейсов в команду NIC Team.

После создания команды вы можете добавить адаптеры в настроенную команду из окна NIC Teaming. Для этого щелкните правой кнопкой мыши на доступном адаптере и выберите Добавить в команду “<Имя команды>”.

Add to Team “Demo” option

Также вы можете добавить больше интерфейсов в команду, выбрав вкладку Team Interfaces, а затем щелкните ЗАДАЧИ —> Добавить интерфейс, как показано ниже.

Add Interface option

Как только появится окно ввода, введите VLAN, который будет использоваться, и при необходимости укажите имя, как показано ниже.

New Team interface dialog box

Развертывание команды NIC Teaming с помощью Windows PowerShell

Теперь, когда вы знаете, как настроить команду NIC team с помощью графического интерфейса, давайте рассмотрим, как это сделать с помощью PowerShell.

Поиск имен NIC

Сначала вам нужно решить, какие адаптеры NIC вы добавите в команду. Более конкретно, вам нужно определить имена адаптеров NIC.

Чтобы найти имена адаптеров NIC, используйте команду Get-Adapter. Запустите эту команду и обратите внимание на ваши варианты, как показано ниже.

Get-Adapter PowerShell cmdlet

После того, как вы отметили имена, теперь вы можете создать команду с помощью PowerShell! В этом демонстрационном примере мы будем использовать адаптеры Ethernet 3 и 4 для новой команды NIC Team.

Создание команды NIC Team

Теперь, когда у вас есть имена адаптеров, вам осталось только выполнить одну команду (New-NetLbfoTeam). Ниже приведен пример выполнения команды New-NetLbfoTeam и ее вывод.

В параметре TeamMembers вы будете использовать имена ранее полученных адаптеров NIC.

В этом примере TeamingMode установлено на значение SwitchIndependent. Если вы настраиваете порты коммутатора в LAG, вероятно, вам понадобится значение LACP. Если вы не используете LAG на коммутаторе, вероятно, вы выберете использование SwitchIndependent.

Значение параметра LoadBalancingAlgorithm установлено на Dynamic, потому что этот режим обеспечивает наиболее равномерное балансирование нагрузки между членами команды.

New-NetLbfoTeam -TeamMembers <NIC Names> -Name "<Desciptive Name>" -TeamingMode SwitchIndependent -LoadBalancingAlgorithm TransportPorts
Using the New-NetLbfoTeam PowerShell cmdlet

После завершения вы увидите новый виртуальный сетевой адаптер в списке адаптеров из Get-NetAdapter:

New virtual NIC created

Примечания по использованию сетевого адаптера на виртуальной машине:

– Вы должны использовать режим командной работы “SwitchIndependent”.
– Вы должны использовать один из типов хеширования адресов для алгоритма балансировки нагрузки (TransportPorts).
– Для физического сервера вместо TransportPorts следует использовать динамическое балансирование нагрузки.*

Добавление дополнительных сетевых адаптеров или интерфейсов в команду сетевых адаптеров

После создания команды сетевых адаптеров вы можете добавлять сетевые адаптеры и интерфейсы к ней так же, как в графическом интерфейсе. Чтобы добавить больше сетевых адаптеров в команду, используйте команду Add-NetLbfoTeamMember.*

Add-NetLbfoTeamMember -Name NIC1 -Team Team1

Вы также можете добавить больше интерфейсов команды с помощью команды Add-NetLbfoteamNIC.

Add-NetLbfoTeamNIC -Team Team1 -VlanID 42

Резюме

Теперь вы узнали, что такое командировка NIC, как она связана с производительностью/использованием виртуальных машин/упрощением сети и как ее развернуть с помощью графического интерфейса пользователя или PowerShell.

Source:
https://adamtheautomator.com/nic-teaming/