Стоит ли всё виртуализировать?

Существует две крайние точки зрения на виртуализацию – это зло и это панацея. Приверженцы первой категорически против виртуализации, для тестирования готовы достать новый сервер со склада, все ошибки системы валят на виртуализацию, готовы дать кучу ссылок на документы производителей об использовании продуктов только на железе либо на техподдержку с отказом решать вопросы с ПО, запущенном в виртуальных машинах. Приверженцы второй готовы завиртуализировать всё от контроллера домена до супер навороченной базы данных с интенсивными расчетами, бизнес-аналитикой.
Почему складывается такая ситуация? Да потому, что люди долгое время сидят на разных типах систем, которые они любят и, исходя из своих приверженностей, предвзято относятся к другим.
Что подразумевается под разными типами систем? Это системы с горизонтальной архитектурой и с вертикальной архитектурой.

Особенности вертикальной и горизонтальной архитектур

Параметр Вертикальные системы Горизонтальные системы
Память Большая совместно используемая Небольшая выделенная
Потоки Много взаимозависимых потоков Много независимых потоков
Межсоединения Сильносвязанные внутренние Слабосвязанные внешние
RAS Мощные RAS одиночной системы Мощные RAS с использованием репликации
Центральные процессоры Много стандартных Много стандартных
ОС Одна копия ОС на множество центральных процессоров Несколько копий ОС (по одной копии на 1-4 процессора)
Компоновка В одном шкафу Размещение большого числа серверов в стойке
Плотность размещения Высокая плотность размещения процессоров на единицу площади пола Высокая плотность размещения процессоров на единицу площади пола
Оборудование Стандартное и специально разработанное Стандартное
Масштабирование В пределах корпуса одного сервера В масштабе нескольких серверов
Расширение Путем установки в сервер дополнительных компонентов Путем добавления новых узлов
Архитектура 64-разрядная 32- и 64-разрядная

Все горизонтальные – кандидат номер один на виртуализацию, а вот вертикальные либо нецелесообразно виртуализировать, либо надо уделить много времени тестированию и настройке.
Масштабирование вертикальных систем практически линейно, знай добавляй процессоры, память, диски. Но это имеет явные ограничения в средах виртуализации, причем, как численно, так и качественно – проблемы с синхронизацией SMP-конфигураций до сих пор актуальны.
Если быть честным, виртуализация никуда не девается и для вертикальных систем, “Большие” серверы имеют аппаратную виртуализацию, на всех уровнях железа: памяти, процессорах, шинах. Нарезка “виртуальной среды” – домена, идет кусками железа, вот, держите, 3 процессора, 128 гб ОЗУ, а остальные 5 процессоров отдадим другим.
Возникает вопрос – откуда берутся такие статьи? Почему все хотят доказать, что гипервизоры быстры? По-моему, это всё от комплекса неполноценности. Абсолютное большинство вертикальных систем построены не на x86-архитектуре, так как эта архитектура ограничена для вертикального масштабирования по многим причинам (Intel не выпускает чипсетов, куча проблем с адресацией памяти), и на данный момент доступны 16- и 32-процессорные машины.

К сожалению, большие сервера дорого стоят, а мейнстрим у нас малый и средний бизнес, который и сидит на x86, потому что это дешёво. И этот бизнес динамично развивается, и хочет всё большего и нового. И поклонники виртуализации сидят в основном в этом сегменте. И гипервизоры, которые нас интересуют, построены на архитектуре x86/x86_64.

Чтобы хорошо работать гипервизорам, их производителями пришлось хорошо поработать с вендорами процессоров.  Мощности процессоров стало хватать для небольших вертикальных архитектур. И виртуализация стала двигать “большие” технологии в мейнстрим задёшево: high availability, fault tolerance. Развитие архитектуры пошло в диагональном направлении, берём малые “вертикальные” сервера и загоняем на них кучу “горизонтальных” приложений.

Типы приложений для вертикальной и горизонтальной архитектур

Вертикальные системы Горизонтальные системы
Большие базы данных

Базы данных транзакций

Хранилища данных

Углубленное извлечение данных

Серверы приложений

Приложения HPTC (не разбиваемые на разделы)

Web-серверы

Брандмауэры

Прокси-серверы

Работа с потоковым мультимедиа

Каталоги

Обработка XML

Приложения JSP

Шифрование SSL

Виртуальные частные сети (VPN)

Серверы приложений

Приложения HPTC (разбиваемые на разделы)

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

Ссылки: “Вертикальное и горизонтальное масштабирование систем“, и еще раз тоже самое в другом авторстве –  “Вертикальные и горизонтальные архитектуры“.

Leave a Reply

Your email address will not be published. Required fields are marked *