Windows Server 2019 Core в продакшне: меньше GUI - меньше боли
Развернули WS2019 Server Core как новый стандарт для файловых серверов и RDSH: заметно меньше поверхность атаки, обновлений и вынужденных перезагрузок в рабочее время.
Windows Server 2019 GA с октября 2018 - первые промышленные развёртывания в управляемой инфраструктуре
Windows Server 2019 вышел в общий доступ в октябре 2018-го, и к февралю мы наконец закрыли первую волну реальных развёртываний в managed-инфраструктуре - файловые серверы и RDSH у нескольких клиентов. Внедрили всё в Server Core - без GUI. И вот что из этого вышло.
Почему Core, а не с GUI
Разговор про Server Core в Microsoft ведётся давно, но на практике большинство контор до последнего ставило «с десктопом» - потому что привычно, потому что инженеры умеют, потому что «так надёжнее». Логика понятная, но сомнительная.
На деле Desktop Experience в Windows Server - это несколько дополнительных компонентов, каждый из которых:
- расширяет поверхность атаки - IE, Windows Media Player, .NET разные версии, графические подсистемы, всё это живёт в памяти и иногда имеет CVE;
- требует больше обновлений - Quality Updates для GUI-компонентов идут отдельно, их больше;
- провоцирует перезагрузки в рабочее время - потому что обновляются вещи, которые в Core просто не установлены.
WS2019 с этим заметно лучше WS2016 в части частоты перезагрузок после патчей - Microsoft продолжает работу над «Servicing Stack», и это чувствуется. Но даже на 2019-м Core патчится ощутимо реже, чем полная версия.
Что развернули
Первый проект - файловые серверы в небольшом холдинге. DFS-namespace поверх нескольких нод, AD-интеграция, квоты через FSRM. Всё это прекрасно живёт без GUI, настраивается через PowerShell или через RSAT с рабочей станции администратора.
Второй проект - RDSH-ферма. Здесь немного интереснее: сами RD Session Host-серверы - Core, но пользователи работают в сессиях с полным рабочим столом. Т.е. инфраструктура без GUI, а пользовательские сессии - со своим десктопом, как обычно. RD Connection Broker, RD Web Access поставлены на отдельные инстансы тоже в Core-режиме.
Инструменты управления
Здесь основная перестройка. Без GUI надо уметь работать с:
- Windows Admin Center (WAC) - веб-интерфейс от Microsoft, запускается на отдельной машине или шлюзе, управляет Core-серверами через WinRM. В 2018-м WAC вышел из preview, в нём уже можно делать 80% задач администрирования - диски, сети, роли, события, диспетчер задач. Не идеал, но вполне рабочий инструмент.
- PowerShell Remoting - для всего что сложнее.
Enter-PSSession,Invoke-Command, модули ServerManager, FSRM, RSAT-tools. Если инженер умеет в PowerShell, Core не вызывает дискомфорта. - RSAT на рабочей станции - старые добрые оснастки вроде ADUC, GPMC, DNS Manager прекрасно управляют Core-серверами удалённо. Оснастку открываешь на своей машине, подключаешься к серверу - GUI у тебя, сервер без него.
Windows Admin Center, кстати, периодически падает или глючит - версия пока молодая, и к этому надо быть готовым. Не критично, но нервно. PowerShell в таких ситуациях надёжнее.
Где споткнулись
Пара неожиданностей всё же была.
Первое - некоторые агенты мониторинга и резервного копирования. Старые версии агентов иногда проверяли наличие определённых GUI-компонентов при установке или работе. Один из клиентских backup-агентов отказался ставиться, пришлось разбираться с вендором. Решилось обновлением до свежей версии агента, но время потратили.
Второе - документация вендоров. Значительная часть инструкций по настройке специализированного ПО написана из расчёта «откройте такую-то оснастку, нажмите кнопку». В Core это не работает. Приходится переводить в PowerShell-эквиваленты, иногда нетривиально. Особенно весело с продуктами, где GUI - единственный задокументированный интерфейс настройки.
Третье - привычки клиентских инженеров. Там, где клиент сам частично администрирует инфраструктуру, Core требует договорённостей: кто и как подключается, как открыть Event Viewer, как перезапустить службу. Не рокетсайенс, но отдельный разговор.
Что в итоге
Файловые серверы работают несколько недель без происшествий. Из заметного: за этот период Patch Tuesday прошёл один раз, обновление применилось и потребовало перезагрузки - но в плановое окно, без дополнительных патчей на GUI-компоненты. На полной версии список обновлений был бы длиннее.
RDSH-ферма стабильна. Пользователи не заметили никакой разницы - и не должны были, сессия у них такая же.
Считаем подход рабочим и планируем его как стандарт для новых Windows-серверов в managed-проектах. Исключения - там, где требуется GUI по объективным причинам (специализированное ПО, которое не умеет иначе, или явное требование клиента). Но таких случаев меньше, чем кажется, если заранее проверить совместимость агентов.
Powershell-скиллы у команды подросли. Что само по себе неплохо.