ADG Оставить заявку
Блог Инфраструктура 5 мин чтения

Windows Server 1709 GA: ставим на тестовый стенд - образ контейнера похудел вдвое, Process Isolation работает

Windows Server 1709 вышел. Ставим на стенд: образ Server Core для контейнеров - 5 ГБ против 9 ГБ в 2016. Process Isolation позволяет гонять разные версии контейнеров на одном хосте.

Контекст момента

Windows Server 1709 GA - первый Semi-Annual Channel релиз с Hyper-V Server 1709, уменьшенным образом Server Core для контейнеров и поддержкой Process Isolation

Windows Server 1709 вышел в GA. Мы ждали его с июля и следили за изменениями в Nano Server в сентябре, поэтому в этот раз без долгих разговоров: поставили на тестовый стенд и смотрим что там внутри.

Что выпустили

Релиз включает несколько компонентов:

  • Windows Server 1709 - первый SAC-релиз, только Server Core, без Desktop Experience.
  • Hyper-V Server 1709 - бесплатный гипервизор, тоже первый в SAC-треке.
  • Windows 10 Fall Creators Update - на том же ядре 1709, выходит параллельно.

Лицензирование SAC-релизов - только через Software Assurance или подписку. Кто без SA - получает Windows Server 2016 LTSC и ждёт следующего LTSC.

Размер образа контейнера: цифры реальные

Это то, ради чего мы ставили стенд в первую очередь. Microsoft давно обещала сократить базовый образ Windows Server Core для контейнеров - и действительно сократила.

microsoft/windowsservercore на базе 1709 весит около 5 ГБ в сжатом виде. Тот же образ на базе Windows Server 2016 - около 9 ГБ. Разница существенная: не «немного меньше», а реально другой порядок для тех, кто деплоит много контейнеров или работает с медленными каналами.

Nano Server образ стал ещё компактнее - порядка 80-90 МБ в сжатом виде, это уже вполне сопоставимо с alpine-образами в Linux-мире. Правда, и применять его можно только там, где не нужен полный .NET Framework - об этом писали в сентябре.

Практически это означает: если у клиента реестр образов на слабом uplink или контейнеры гоняются на узлах с ограниченным диском - переход на 1709-based образы даёт ощутимую разгрузку.

Process Isolation - это важная история

В Windows Server 2016 с контейнерами была неприятная особенность: версия ядра хоста и версия ядра образа контейнера должны совпадать. Точнее, Windows поддерживал только Hyper-V Isolation для контейнеров с несовпадающими версиями, что означало накладные расходы на VM-слой и отдельный набор инструментов.

В 1709 Process Isolation стал полноценным. Это значит:

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

На практике это снимает одну из главных организационных болей Windows-контейнеров: необходимость держать отдельный хост под каждую версию образа. Раньше если нужно было обновить версию Windows Container в продакшне - это был отдельный хост для новой версии, параллельная работа, потом выключение старого. Теперь на одном хосте можно смешивать через Hyper-V Isolation, а изолированные приложения гонять через Process Isolation.

App Compatibility и совместимость с 2016-образами

Отдельная тема - совместимость приложений. Server Core 1709 убрал ряд компонентов которые были в 2016: WoW64 (запуск 32-битных приложений), Internet Explorer, ряд графических библиотек (GDI+).

Для контейнерных нагрузок это обычно не проблема - современные серверные приложения 32-битной версии не выпускают. Но для тех, кто хотел переупаковать legacy-приложение в контейнер без переработки - 1709 не подойдёт, там нужен 2016-образ.

Мы проверили несколько типичных сценариев:

  • ASP.NET Core 2.0 на .NET Core - работает без проблем на nanoserver-образе 1709.
  • ASP.NET 4.6 на полном .NET Framework - требует windowsservercore:1709, работает.
  • 32-битное приложение - не работает в 1709 Server Core, нужен 2016-based образ или Hyper-V Isolation с 2016-гостем.

Что с Hyper-V Server 1709

Поставили и его. Hyper-V Server - это бесплатная Microsoft-редакция только с гипервизором, без серверных ролей. Используем его у ряда клиентов как хост для нескольких VM там, где полная лицензия избыточна.

1709 версия пришла с обновлённым Shielded VM - теперь Linux-гости тоже можно запускать как защищённые виртуальные машины. Для нас это не приоритет прямо сейчас, но для клиентов с требованиями к изоляции - потенциально интересно.

Никаких сюрпризов при установке не было: WinPE, пара экранов, Server Core без GUI. Управление через PowerShell remoting как обычно.

Что дальше

На стенде всё выглядит нормально. Следующий шаг - взять один из наших managed-контуров где уже есть Windows-контейнеры в тестовой среде и посмотреть на реальный deployment с 1709-образами. Интересует прежде всего поведение Process Isolation под нагрузкой и время старта контейнеров по сравнению с Hyper-V Isolation.

Server Core App Compatibility в 1709 - это отдельный пакет который Microsoft анонсировала но пока не выпустила в GA. Он добавит обратно часть убранных компонентов (в том числе Internet Explorer и .NET 3.5) для тех кому это нужно. Ждём - это снимет часть вопросов по legacy-приложениям.

Для клиентов на Windows Server 2016 LTSC никаких действий не нужно: 1709 - SAC, для LTSC-сценариев не предназначен, всё работает как работало.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.