Облачные решения все плотнее смешиваются с привычными, и сегодня определить, на каком сервере запущено приложение, становится сложнее, да и ситуация может измениться в любой момент. Помимо физических сетей, в ЦОД присутствуют сотни виртуальных. Управлять этим зоопарком при помощи традиционных сетевых технологий все труднее. В Windows Server 2016 появился новый элемент Network Controller, реализующий концепцию программно определяемой сети (Software Defined Networking).

 

Возможности Network Controller

Network Controller — новая роль в составе Win 2016, пришедшая из Azure, обеспечивает единую точку управления и мониторинга для всех физических и виртуальных сетей домена, позволяя из одной точки настраивать IP-подсети, VLAN, маршрутизаторы и физические сетевые адаптеры Hyper-V-хостов. Используя Network Controller, мы можем управлять соединениями виртуальных машин Hyper-V, виртуальными коммутаторами, физическими сетевыми маршрутизаторами, настройками файрвола, VPN-шлюзами, в том числе и RRAS, и балансировкой нагрузки. Маршрутизацию обеспечивает использование протокола Border Gateway Protocol (BGP). Управление правилами брандмауэра позволяет контролировать трафик в любом направлении, используемом узлами кластера и отдельными VM. В качестве виртуальных сетей поддерживаются не только родные для MS NVGRE (Network Virtualization using Generic Routing Encapsulation, используется от Win 2012), но и VXLAN (Virtual Extensible LAN — VMware, Arista Networks, Cisco…). Функциональность, как мы видим, не ограничивается только виртуальными машинами, управлять можно также физическими серверами, являющимися частью кластера Windows Server. Для управления функциями Network Controller реализовано два API:

  • Southbound API. Используется для взаимодействия с сетевыми устройствами, службами и прочими элементами облака. Именно с его помощью обнаруживаются конфигурации и изменения, собираются данные о сети;
  • Northbound API. Представляет собой REST-интерфейс. Используется для мониторинга и управления сетью при помощи командлетов PowerShell, API REST или System Center 2016 Virtual Machine Manager (SCVMM 2016) и System Center 2016 Operations Manager (SCOM 2016). В последних двух вариантах доступен графический интерфейс.

Сетевой контроллер, используя SNMP и анализ сетевого потока, обнаруживает проблемы, связанные с задержками и потерями пакетов, и информирует о неправильно работающих устройствах в сети. Поддерживается новый инструмент Microsoft Message Analyzer, пришедший на замену Microsoft Network Monitor, он позволяет захватывать, отображать и анализировать трафик по различным протоколам, отслеживать и оценивать системные события, сообщения устройств, задержки и потери пакетов, искать и устранять неисправности. Ведется сбор SNMP-данных, определяется статус работы отдельных устройств. Есть возможность автоматического обнаружения и группирования устройств по некоторым характеристикам, с установлением зависимости между физическими и виртуальными устройствами. Например, в случае обнаружения проблем с определенными сервисами сетевой контроллер помечает все связанные серверы, VM, маршрутизаторы и прочее как неисправные. Для автоматического обнаружения физических и виртуальных серверов в сети используется механизм Data Center Bridging, реализующий несколько стандартов IEEE 802.1.

 

Установка роли Network Controller

Развернуть Network Controller можно как в доменной, так и в бездоменной сети. В первом случае аутентификация пользователей и сетевых устройств производится при помощи Kerberos, во втором потребуются сертификаты. Для знакомства и тестирования можно использовать единственный физический или виртуальный сервер. В промышленной среде для обеспечения высокой доступности следует развернуть кластер из нескольких серверов. Network Controller легко масштабируется, поэтому новые серверы добавляются в кластер очень просто. Клиенты для управления Network Controller могут использовать не только серверную ОС, но и Win 8/8.1/10.

Если узлы с ролью Network Controller развернуты в разных подсетях, следует в диспетчере DNS разрешить динамические обновления DNS для зоны, установив в свойствах зоны параметр Dynamic updates в Secure only. Тип зоны должен быть установлен в Primary или Active Directory-integrated. И установить разрешения для узлов в Security -> Advanced (Безопасность -> Дополнительно). Для тестовой среды с одним сервером это не нужно.

Каждый сервер и клиент, участвующий в соединении, потребует сертификат, содержащий в поле Subject имя компьютера. Это позволяет разрешить его через DNS. Сертификаты следует импортировать/экспортировать на остальные узлы и сделать доверенными для остальных участников. Будем считать, что все это уже сделано, и на управлении сертификатами останавливаться не будем. Для тестирования можно сгенерировать самоподписанный сертификат с помощью диспетчера IIS.

Установить роль Network Controller (Сетевой контроллер) можно при помощи диспетчера сервера, выбрав его в ролях сервера и подтвердив установку инструментов управления или PowerShell. Команда здесь проста:

PS> Install-WindowsFeature -Name NetworkController –IncludeManagementTools
Установка роли «Сетевой контроллер»
Установка роли «Сетевой контроллер»

По окончании установки в диспетчере сервера появится новая вкладка Network Controller, позволяющая просмотреть события. Управлять же основными функциями, как уже говорилось, можно при помощи командлетов PowerShell, решений SCVMM 2016 и SCOM 2016, предлагающих графический интерфейс. Последние трогать не будем, разберем PowerShell.

Модуль NetworkController содержит 45 командлетов. Получить их полный список можно при помощи

PS> Get-Command -module NetworkController

Все командлеты разбирать точно нет смысла, тем более примеры будут большие, рассмотрим основные моменты, позволяющие понять суть настроек. К сожалению, документация MS в части использования Network Controller с PowerShell пока весьма скудна, некоторые моменты приходится уточнять экспериментально, но разобраться путем проб и ошибок можно. Будем надеяться, что к окончательному релизу эта проблема будет решена.

Командлеты модуля NetworkController
Командлеты модуля NetworkController

Основой всего является приложение (объект) Network Controller, уже на котором строится кластер, обеспечивающий высокую доступность и масштабируемость. Причем кластер устанавливается всегда, даже в случае единственного экземпляра NetworkController.

 

Создание Network Controller

Для первого конфигурирования сетевого контроллера используется командлет New-NetworkControllerNodeObject, создающий объект узла сетевого контроллера узла. В качестве параметров необходимо указать имя, REST-интерфейс (должен выводиться в Get-NetIPConfiguration, иначе получим ошибку в последующем), сервер и отказоустойчивый домен (FaultDomain). Последнее — это еще одна фишка, пришедшая с Azure, позволяющая «распределить» установки NetworkController по разным стойкам. В случае выхода из строя одной стойки работоспособность сервиса не будет нарушена. Также опционально можно указать сертификат при помощи опции NodeCertificate.

PS> $NodeObject = New-NetworkControllerNodeObject -Name "Node1" -Server "example.org" -RestInterface "Ethernet0" -FaultDomain "fd0:/rack1/host1"
Создаем новый объект
Создаем новый объект

Повторяем эту операцию на всех узлах с ролью NetworkController. Этот объект используется для создания кластера. В параметрах необходимо указать вид аутентификации (в случае Active Directory — Kerberos, иначе x509 или None). Опционально указывается группа безопасности, пользователи которой могут управлять настройками NetworkController, расположение журналов, использование SSL и, при необходимости, сертификаты.

PS> Install-NetworkControllerCluster -Node $NodeObject -ClusterAuthentication "Kerberos" -ManagementSecurityGroup Example\NCAdmins -LogLocation "\\example.org\nc"

Для проверки параметров следует использовать командлет Get-NetworkControllerCluster. Теперь пришла очередь установки собственно сетевого контроллера. Параметры Install-NetworkController практически совпадают с параметрами предыдущего командлета, необходимо обязательно указать сертификат. Список всех сертификатов и их свойств можно получить при помощи Get-ChildItem и Get-Item. Предположим, у нас уже есть сертификат с именем сервера.

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

В Windows появилась функциональность для борьбы с читерами

Стало известно, что в Windows 10 Fall Creators Update, вышедшем неделю назад, заработала с…