Hyper-V — дитя маркетинга или реальная альтернатива?
Привет, Хабр! Сейчас я задам вам вопрос, а вы задумайтесь: Что, очень популярное и когда-то вызывавшее трепет лично у вас, сегодня вспоминается только для «поностальгировать»? Наверняка, кто-то вспомнит Dendy или Super Nintendo, а некоторые свой пейджер. Так вот, к чему это я… Есть выражение «ничто не вечно». В сегодняшней статье рассмотрим, действительно ли это так в сфере разработки и стоит отказываться от VMWare в пользу Hyper-V в вопросе виртуализации? А также затронем плюсы обеих платформ и процесс перехода с одной на другую. Заглядывайте под кат!
Передаю слово автору.
Дисклеймер:
- Данная статья носит информативный характер и не преследует желание похайпить, а просто желание поделиться своей историей, которая, возможно, будет кому-нибудь полезна. Некоторые вещи сугубо индивидуальны, а суждения — личные.
- Нет, я не продался МS. Я просто долго искал статьи подобного плана как пищу для размышлений, но их не было. Пришлось делать самому.
- Блог МS — у меня нет инвайта, а товарищам идея статьи понравилась, и они предложили ее выложить.
- PR-а продукта не будет, будет рассказ про живое тестирование/внедрение.
А теперь у нас есть (ну практически есть) космический ядерный двигатель, план полететь на Марс в 2024 году и спутник за пределами нашей солнечной системы.
Так, собственно, к чему я это все веду. Это я к тому, что все это стало возможным благодаря (или вопреки) стремительно развивающимся компьютерным технологиям. Об одной из таких технологий сейчас и поговорим.
Эпиграф
Жила была одна компания. Ни большая, ни маленькая, ни высокая, ни низкая. Такой прям вылитый средний бизнес. Жила она себе с несколькими стойками оборудования, старого, от матери доставшегося. И наступил момент все это хозяйство обновлять. Посчитали товарищи стоимость оборудования, подумали, да надумали внедрять виртуализацию. А год был давний, из представителей славного рода универсальных виртуализаций только VMWare и была. В общем ее и внедрили. Шло время, менялись задачи, росли другие представители славного рода виртуализации. И пришло время снова выбирать себе представителя…
Главный вопрос ИТ-профессионала — «Зачем?»
(или «А нафига?»)
Позвольте представиться. Меня зовут Антон и я руковожу отделом инфраструктурных решений в одном их крупных российских ретейлеров. Как и в любой уважающей себя организации у нас используется виртуализация и, конечно же, наша всеми «любимая» 1С. Внедряли мы VMware давно, жили с ней, в принципе, неплохо (хотя историй добавивших мне седых волос тоже хватает), но, как и при любом развитии периодически приходится осматриваться вокруг, чтобы узнавать об альтернативных решениях.
А началась наша история перехода с того, что я увидел Hyper-V в одном углу вместе с VMware у квадранта Gartner. Тут-то я и призадумался. По итогу раздумий получилась вот такая табличка «за/против» перехода. А еще знаменитые косяки VMware с CBT… Прямо мнямка. Да еще и два раза в двух разных релизах. Прям огонь!
«Как узнать, что человек ярый веган. Никак. Он сам вам об этом расскажет.»
Так же и тут — как узнать ярого красноглазика. Никак. Он сам расскажет, что Linux — это божья благодать, а Windows — порождение князя тьмы.
Хейтеры 2×354 тут же встанут в стойку и, брызгая жидкостями, начнут рассказывать, как обновления Microsoft ломают к чертям вообще всю ОС. Это да, тут спорить не буду, есть у товарищей любовь к таким вот веселым подарочкам. Но в целом, процесс эволюции на мой взгляд у компании Microsoft доведен до совершенства. Революция — это не их, а вот эволюция — конек. И каждый выбирает то, что ему ближе.
Сразу оговорюсь — сравнение «by feature» тоже было, только в жизни никто «в здравом уме и крепкой памяти» не будет строить кластера по предельным значениям. Да и похожи они на самом деле практически как братья близнецы, а принципиальной разницы между тем, сколько сотен ядер можно отдать одной виртуальной машине я лично не вижу.
Fault Tolerance. Серьезно? Вы читали ограничения? Вы реально это используете в продакшене? Если да, то мне вас искренне по-человечески жаль… За все время ни разу не видел, чтобы это кому-нибудь реально пригодилось…
Проброс USB и PCI-девайсов. Тоже очень спорный момент. Эти вещи лишают виртуалку основного преимущества виртуализации — свободной миграции между хостами. Проброс PCI мы использовали, но как только смогли отказаться — облегченно выдохнули. Для проброса USB уже давным-давно придуманы и сделаны как софтовые, так и аппаратные решения. Сильно проще.
Кэширование данных на чтение на локальные SSD. Да, когда вышла очень радовался этой возможности. Но в реальности прирост не увидел даже на синтетических данных. А в рабочей среде периодически ловил дикие зависания этой системы (тут я не утверждаю, что вина системы —возможно это мои кривые руки что-то не так настроили). И вишенка на торте: кэширует эта система только блоки определенного размера, и надо потратить много времени на сбор информации о размере запроса к диску, думать какая именно виртуалка должна быть приоритетна в использовании этой технологии.
Зато у Hyper-V есть штатная возможность уменьшить диск. Знаете, сколько раз я мечтал о таком в VMware? Гораздо больше чем можно себе это представить.
Да, еще момент. Переход на другой гипервизор — это индивидуальное решение, но вот мой список стоп-факторов, при наличии которых на мой взгляд точно не стоит переходить на Hyper-V. Ну или очень внимательно все продумать и протестировать.
- У вас основная ОС на Linux-серверах.
- Вам нужно запускать экзотику.
- Вам нужны готовые виртуальные сервера от вендеров (думаю это просто вопрос времени).
- Вы не любите Microsoft.
- VMware вы получили на халяву вместе с оборудованием.
Табличка размышлений
За переход на Hyper-V | Против перехода на Hyper-V |
---|---|
Сокращение расходов на лицензии VMware | Известность платформы VMware |
На базе этой же платформы построен Azure | Размер дистрибутива (спойлер: Nano Server не является аналогом esxi — это немного другая идеология и позиционирование) |
Интересная сетевая виртуализация | Простая схема лицензирования |
Репликация на другие СХД виртуалок штатными методами | Поддержка большого числа разных ОС |
Бонусы при покупке комплекта для построения виртуализации (набор CIS, в который входят Windows Datacenter + System Center) | VMware уже работает |
Различные плюшки при разворачивании Windows-серверов | Нет поддержки именно гипервизора как отдельного продукта |
Можно уменьшать диски на лету | VDI тут можно использовать только для лабы/тестов. Для продакшена это не подходит |
Более оперативная поддержка новых версий Windows | Наличие интересных законченных решений для виртуализации, когда ты у одного вендора покупаешь и железо и софт, и получаешь одну консоль управления и одно окно техподдержки |
Это Microsoft | Это Microsoft |
«Прыжок веры»
Думал и гадал бы я еще долго, но тут сошлись звезды, и мы обновили парк серверов. А старые остались, причем неплохие, только уже медленные по нынешним меркам и к тому же морально устаревшие. И было принято стратегическое решение сделать ферму для разработки на базе Hyper-V. Перетащили сервера на новую площадку, обновили все прошивки серверов и понеслась.
План тестирования был прост:
- Берем сервер.
- Устанавливаем на него esxi. Ничего не меняем, настройки по умолчанию.
- Разворачиваем виртуальную машину.
- Производим тесты 5 раз:
a) Для 1С тест Гилева.
b) Для SQL — скрипт на запись.
- Настраиваем по Best Practice«s.
- Производим тесты 5 раз:
a) Для 1С тест Гилева.
b) Для SQL — скрипт на запись.
- Устанавливаем Hyper-V. Ничего не меняем, настройки по умолчанию.
- Разворачиваем виртуальную машину.
- Производим тесты 5 раз:
a) Для 1С тест Гилева.
b) Для SQL — скрипт на запись.
- Настраиваем по Best Practice«s.
- Производим тесты 5 раз:
a) Для 1С тест Гилева.
b) Для SQL — скрипт на запись.
- Ставим на физическую машину Windows Server, настраиваем по Best Practice«s и проводим тесты.
- Сравниваем и думаем.
Оборудование: Dell FC 630, 2 процессора Intel Xeon E5–2643 v4 (чисто под 1С), 512Гб памяти.
Диски: san-сеть на базе Dell SC 200 с Read-Intensive SSD.
Получили вот такие результаты:
VMWare без Best Practices | Тест Гилева | Тест SQL |
---|---|---|
1 | 22.42 | 12.2 |
2 | 18.6 | 17.51 |
3 | 18.12 | 7.12 |
4 | 26.74 | 7.18 |
5 | 26.32 | 4.22 |
VMWare с Best Practices | Тест Гилева | Тест SQL |
1 | 26.46 | 4.28 |
2 | 26.6 | 6.38 |
3 | 26.46 | 4.22 |
4 | 26.46 | 6.56 |
5 | 26.6 | 4.2 |
HyperV без Best Practices | Тест Гилева | Тест SQL |
1 | 27.17 | 4.32 |
2 | 26.46 | 6.08 |
3 | 26.04 | 4.24 |
4 | 26.18 | 5.58 |
5 | 25.91 | 6.01 |
HyperV с Best Practices | Тест Гилева | Тест SQL |
1 | 26.18 | 6.02 |
2 | 27.62 | 6.04 |
3 | 26.46 | 6.2 |
4 | 26.74 | 4.23 |
5 | 26.74 | 6.02 |
Физика | Тест Гилева | Тест SQL |
1 | 35.97 | 4.06 |
2 | 32.47 | 4.04 |
3 | 31.85 | 6.14 |
4 | 32.47 | 5.55 |
5 | 32.89 | 5.43 |
Легенда
Тест Гилева — больше значит лучше, абстрактные «попугаи».
Тест SQL — меньше значит лучше, время исполнения.
Что настраивали:
1. Шаги по подготовке хоста DELL Poweredge 630.
1.1. Настраиваем хост по рекомендациям от DELL
1.1.1. Включить Processor Settings → Virtualization Technology — включено.
1.1.2. Включить Processor Settings → Logical Processor — включено.
1.1.3. Включить System Profile Settings → Turbo Boost (в документации Turbo Mode) — включено.
1.1.4. Отключить Memory Setting → Node Interleaving (включает NUMA) — отключено.
1.1.5. Включить Power Management → Maximum Performance — похоже включено.
1.1.6. Отключить ненужные девайсы в Integrated Devices — не трогал.
1.1.7. Отключить System Profile Settings → С1E — отключено.
1.1.8. Включить Processor Settings → Hardware Prefetcher — включено.
1.1.9. Включить Processor Settings → Adjacent Cache Line Prefetch — включено.
1.1.10. Включить Processor Settings → DCU Streamer Prefetcher — включено.
1.1.11. Включить Processor Settings → Data Reuse — не нашел.
1.1.12. Включить Processor Settings → DRAM Prefetcher — не нашел.
1.2 Настраиваем хост по рекомендации
1.2.1 Настроить Fibre Chanel HBA.
1.2.1.1 При загрузке хоста зайти в QLogic Fast! UTIL (CTRL+Q).
1.2.1.2 Выбрать первый порт.
1.2.1.3 Сбросить настройки Configuration Settings → Restore Default Settings.
1.2.1.4 Включить Configuration Settings → Adapter Settings → Host Adapter BIOS → Host Adapter BIOS → Enable.
1.2.1.5 Включить Configuration Settings → Adapter Settings → Host Adapter BIOS → Connection Options → 1.
1.2.1.6 Включить Configuration Settings → Advanced Adapter Settings → Enable LIP Reset → Yes.
1.2.1.7 Включить Configuration Settings → Advanced Adapter Settings → Enable LIP Full Login → Yes.
1.2.1.8 Включить Configuration Settings → Advanced Adapter Settings → Login Retry Count → 60.
1.2.1.9 Включить Configuration Settings → Advanced Adapter Settings → Port Down Retry Count → 60.
1.2.1.10 Включить Configuration Settings → Advanced Adapter Settings → Link Down Timeout → 30.
1.2.1.11 Настроить второй порт по пунктам 1.2.1.3 — 1.2.1.10.
2. Шаги по тестированию на платформе VMware без best practices.
2.1 Устанавливаем VMware 5.5 со всеми апдейтами.
2.2 Делаем необходимые настройки на VMware (в кластер не включаем, тестим отдельно).
2.3 Устанавливаем Windows 2016 и все обновления.
2.4 Устанавливаем »1С: Предприятие». Настраиваем, если нужно пока ставим по дефолту, версия 1С — 8.3.10. (последняя).
2.5 На отдельной машине устанавливаем Windows 2016 с сервером SQL 2016 — со всеми апдейтами.
2.6 Проводим тесты (5 раз).
3. Шаги по тестированию на платформе VMware по best practices.
3.1.1 Поместить swap-файл на SSD диск. Cluster → Swap file location → Store the swap file in the same directory as VM. Configuration → VM Swapfile location → Edit.
3.1.2 Рекомендуется включить vSphere Flash Infrastructure layer — не знаю, насколько это реализуемо в наших реалиях.
3.1.3 Настроить SAN Multipathing через Host → Configuration → Storage → Manage Paths → Path Selection → Round Robin.
3.1.4 Включить Host → Configuration → Power management → Properties → High Perfomance.
3.2 Настраиваем VM согласно рекомендациям:
3.2.1 Используем paravirtual диски: VM → SCSI Controller → Change Type → Paravirtual.
3.2.2 Желательно использовать Thick provision eager zeroed.
3.2.3 Включаем VM → Options → CPU/MMU Virtualization → Use Intel VTx for instruction set and Intel EPT for MMU Virtualization.
3.2.4 Отключаем VM BIOS → Legacy diskette, VM BIOS → Primary Mater CD ROM.
4. Шаги по тестированию на платформе Windows Server без best practices:
4.1 Устанавливаем Windows Server 2016 Datacenter на хост и все обновления.
4.2 Делаем необходимые настройки на хосте.
4.3 Устанавливаем виртуальную машину с Windows и все обновления.
4.4 Устанавливаем »1С: Предприятие». Настраиваем, если нужно пока ставим по дефолту, версия 1С — 8.3.10 (последняя).
4.5 На отдельной машине устанавливаем Windows Server 2016 с сервером SQL 2016 со всеми апдейтами.
5. Шаги по тестированию на платформе Windows Server по best practices
Best practices изложены тут, тут и тут.
5.1 Настраиваем Host согласно рекомендациям:
5.1.1 Активировать MPIO: Enable-WindowsOptionalFeature – Online – FeatureName MultiPathIO
(Get-WindowsOptionalFeature – Online – FeatureName "MultiPathIO").State
5.2 Настраиваем VM согласно рекомендациям:
5.2.1 Используем Generation2 VM.
5.2.2 Используем fixed диски в VM.
Если жизнь на Марсе?
Вроде жизнь удалась, тесты показывают, что расчеты и ставки были верны и теперь наступит та самая искомая нирвана… Так я думал и надеялся до тех пор, пока мы в тестовом режиме не поставили кластер для разработчиков.
Врать не буду, установка действительно происходит просто и незатейливо. Система сама проверяет все, что ей нужно для счастья, и если чего нет, то отправляет вас за этим в ближайший гастроном показывает подробный отчет о том, что не так и даже дает советы по устранению проблемы. В этом плане мне продукт от Microsoft понравился гораздо больше.
Тут же вспомнилась история о пятидневной переписке с техподдержкой VMware о проблеме при переходе на 5.5. Оказалось, веселая штука. Если ты заводишь на SQL-сервере отдельную учетную запись для подключения vSphere, то пароль у нее должен быть не длиннее 14 символов (или 10, сейчас уже не помню), ибо дальше система банально обрезает и выкидывает как ненужную часть кусок пароля. Действительно, вполне себе обоснованное поведение.
Но все веселье началось позже. Один сервер вылетел и отказался видеть сетевую карту (в итоге ОС тут оказалась не при чем). Потом сервера начали терять кворум. Потом сервера хаотически стали вылетать из кластера. VMM толком не работал и зачастую просто не мог подсоединится к ферме. Потом сервера стали вставать на паузу в кластере. Потом при миграции машины стали видеться на двух хостах. В целом ситуация была близка к катастрофе, как мы думали.
Но, собравшись с духом, мы, все-таки, решили повоевать. И знаете, что? Все получилось. И оказалось, что проблемы с сетевой картой были аппаратные, проблема с кластером решились после правильной настройки сети. А после того, как мы переставили хостовые ОС и VMM на английские версии вообще все стало хорошо. И тут мне стало грустно… 2017 год, а все еще нужно ставить английскую Windows чтобы было меньше проблем. Это epic fail на мой взгляд. Зато бонусом получили гораздо более простой поиск по тексту ошибок.
В итоге кластер завелся, VMM работает корректно, а мы начали раздавать виртуалки пользователям.
Кстати, отдельного котла в аду заслуживает тот, кто придумал интерфейс и логику VMM… Сказать, что он непонятный — это ничего не сказать. При первом открытии у меня появилось полное ощущение что я смотрю на приборную доску корабля пришельцев. Вроде формы знакомые, но понимания что тут что и зачем нет никакого. Хотя возможно через много лет я привыкну. Или просто заучу действия как обезьянка.
Каково это, когда все-таки завел трактор?
В целом эмоции и ощущения у меня от перехода положительные. Шаблоны и их возможности для ОС от Microsoft не идут ни в какое сравнение с аналогами у VMware. Они прям очень удобные, с огромным количеством всяких свистелок и рюшечек, которые в целом достаточно толковые. Пока гоняем кластер для разработчиков, привыкаем к новой жизни.
Еще очень сильно, но очень приятно удивил вопрос миграцией машин из VMWare. Изначально я читал форумы, искал софт, думал как это будет. Оказалось, за меня уже все придумали. Мы в два счета подключили в VMM vCenter и прямо из VMM сказали «дорогой товарищ, дайте, пожалуйста, вот тех конфеток, уж больно они вкусные смигрируй мне пожалуйста вот эту виртуалку на новый гипервизор.» И самое что забавное — смигрировал. С первого раза. Без бубна и ошибок. И в итоге миграция, на тест которой я планировал выделить неделю уложилась в 40 минут, из которых 20 была сама миграция.
Чего не хватает:
- Маленького дистрибутива, заточенного именно под виртуализацию (аналога esxi).
- Нормальной консоли управления (консоль неудобная, особенно после управлялки от VMware, но есть надежда на проект Гонолулу. Во всяком случае, глядя на техническое превью, возникает понимание что продукт должен дать то самое удобство управления).
- Технической поддержки продукта виртуализации. Да, я знаю, что есть Premium Support, но это совсем не то, чего хочется.
Подводя итоги (если вам лень читать статью):
- Сейчас производительность двух платформ примерно одинакова.
- Производительность 1С такая же.
- В Hyper-V виртуальные диски можно как увеличивать, так и уменьшать. Причем онлайн.
- Очень, ну прямо очень, простая миграция с VMWare.
- Беда с поддержкой в привычном ее понимании.
- VMM крайне неудобная штука, особенно после vCenter. Но с другой стороны VMM это просто графическая оболочка для скриптов PowerShell, так что можно рулить всем этим через привычный Powershell CLI.
- Переход требует переучиваться и разбираться с тонкостями именно Hyper-V. Многие вещи и идеологические подходы разнятся.
- Шикарные шаблоны виртуальных машин с Windows. Удивительно удобно.
- Экономия денег.
- Более интересная на мой взгляд реализация Software-defined storage, но это «на любителя».
- Уважение за то, что весь Azure построен на собственных технологиях, которые потом приходят on-premise.
- Простая и очень плотная интеграция с облаком.
- Неплохая виртуализация сети, с многими любопытными моментами.
- На мой взгляд VDI — это не к Microsoft и Hyper-V. Но с другой стороны стрим проложений (RemoteApp) сделан весьма добротно, и для большинства компаний мало чем будет хуже, чем тот же Citrix.
- Слабая поддержка сторонними вендорами готовых образов виртуалок для Hyper-V (предположу, что явление временное).
- Весьма странная новая лицензионная политика (по ядрам).
Об авторе
Антон Литвинов — последние 6 лет работает в компании 585/Золотой. Прошел путь от сетевого инженера до руководителя отдела инфраструктурных решений и в итоге совмещает в себе мистера Джекила и доктора Хайда — фуллстак инженера и руководителя. В ИТ уже примерно 20 лет.