Кластеризация — эффективный метод обеспечения высокой доступности. Она значительно эффективнее, гибче и экономичнее, если ее объединить с технологией виртуализации. Виртуальные кластеры создаются из виртуальных машин (ВМ), установленных на распределенных серверах одного или нескольких физических кластеров. Виртуальные машины в виртуальном кластере логически связаны виртуальной сеть на основе нескольких физических сетей.
Виртуальные кластеры создаются на базе физических машин или ВМ, размещенных на нескольких физических кластерах. Включение ВМ в виртуальный кластер выполняет динамически для реализации следующих условий:
- Узлами виртуального кластера могут быть физические машины или ВМ. На одном физическом узле можно разворачивать много ВМ с разными операционными системами.
- На ВМ работает гостевая ОС (она обычно отличается от ОС хоста), которая управляет ресурсами физической машины с ВМ.
- Цель использования виртуальных машин — консолидация многих функций на одном сервере. Это сильно повышает коэффициент использования сервера и гибкость приложений.
- Можно создавать наборы или реплицировать виртуальные машины на многих серверах для расширения распределенного параллелизма и повышения отказоустойчивости и возможностей восстановления в случае сбоя.
- Размер (число узлов) виртуального кластера может увеличиваться или уменьшаться динамически, подобно тому, как увеличивается оверлейная сеть при увеличении числа узлов.
- При отказе одного из физических узлов перестанут работать установленные на нем виртуальные машины. Однако отказ любой из ВМ не разрушит всю систему хостинга.
Нужно эффективно управлять виртуальными машинами, установленными на многих физических вычислительных узлах (которые тоже называют виртуальными кластерами) в высокопроизводительной виртуализованной вычислительной среде. Это предусматривает разворачивание, мониторинг и управление виртуальными кластерами в рамках крупных кластеров. Нужно также применять планирование ресурсов, балансировку нагрузки, консолидацию серверов, отказоустойчивость и другие методы. В виртуальной кластерной системе важно эффективно хранить большое число образов ВМ.
Для большинства пользователей и приложений можно создать стандартные экземпляры, такие как библиотеки программирования на уровне ОС или пользователя. Можно заранее установить эти пакеты приложений как шаблоны (которые тоже называются виртуальными машинами). С помощью этих шаблонов пользователи могут строить собственные наборы программ. Они могут также копировать новые экземпляры ВМ, используя шаблоны. Можно также создавать пользовательские компоненты, такие как библиотеки программ и приложений, заранее установленных на этих экземплярах.
Физические (хосты) и виртуальные (гостевые) машины могут работать под управлением разных операционных систем. Можно устанавливать отдельные ВМ на удаленных серверах или реплицировать на несколько серверов, состоящих в том же или другом физическом кластере. Граница виртуального кластера может меняться по мере добавления, удаления или динамической миграции ВМ со временем.
Быстрое разворачивание и эффективное планирование
Виртуальная среда должна поддерживать быстрое развертывание. В данном случае развертывание означает две вещи: максимально быстрое создание и распространение программных наборов (операционных систем, библиотек и приложений) на физическом узле в кластере и быстрое переключение среды выполнения с одного виртуального кластера на другой. Если пользователь прекращает работать с системой, соответствующий виртуальный кластер должен выключаться или быстро переходить в спящий режим, чтобы освободить ресурсы для виртуальных машин других пользователей.
В последнее время стал очень популярным принцип «зеленых вычислений». Однако ранее он ориентировался на экономию энергии на отдельной рабочей станции. Не хватало широты видения. Соответственно зачастую это не приводило к снижению потребления энергии в рамках кластера.
Применять технологии экономии энергии в рамках всего кластера можно только в средах с однородными рабочими станциями и определенными приложениями. Оперативная миграция ВМ позволяет переносить рабочую нагрузку между узлами. Однако это не обязательно гарантирует произвольную миграцию между виртуальными машинами.
Нельзя игнорировать дополнительную нагрузку, связанную с живой миграцией ВМ. Она может оказывать серьезное отрицательное влияние на уровень использования, пропускную способность и качество сервисов кластера. Поэтому задача заключается в определении, как спроектировать стратегии миграции для реализации зеленых вычислений, не снижая производительность кластера.
Другое преимущество кластеризации на основе виртуализации — балансировка нагрузки между приложениями виртуального кластера. Для получения информации для балансировки нагрузки можно использовать индекс нагрузки или количество входов пользователей. На основе этой модели можно реализовать автоматические механизмы горизонтального и вертикального масштабирования виртуального кластера.
Соответственно вы можете увеличить уровень использования ресурсов и сократить время отклика системы. Назначение виртуальным машинам наиболее подходящих физических узлов должно способствовать повышению производительности. Динамическая корректировка нагрузки между узлами за счет миграции ВМ полезна в случае разбалансировки нагрузки среди узлов кластера.
Высокопроизводительное виртуальное хранилище
При пользовательской настройке виртуальной машины шаблон ВМ можно распределить среди нескольких физических хостов в кластере. Для сокращения времени пользовательской настройки можно использовать существующие программные пакеты. Важно эффективно управлять пространством на диске, на котором хранится шаблонное ПО. Можно спроектировать архитектуру хранилища так, чтобы снизить дублирующие блоки в распределенных файловых системах или виртуальных кластерах и использовать хеши для сравнения содержимого блоков данных.
У ваших пользователей будут собственные профили, хранящие идентификационную информацию о блоках данных в соответствующих ВМ в пользовательском виртуальном кластере. При изменении данных создаются новые блоки данных. Вновь созданные блоки идентифицируются в профилях пользователей.
По сути развертывание группы виртуальных машин в кластере состоит из четырех шагов:
- Подготовка образа диска.
- Конфигурирование виртуальных машин.
- Выбор целевых узлов.
- Выполнение команды развертывания ВМ на каждом узле.
Во многих системах для упрощения процесса подготовки образа диска используются шаблоны. Шаблон представляет собой образ диска, который содержит предустановленную ОС, при этом он дополнительно может содержать определенные программы. Пользователи выбирают шаблон, соответствующий их требованиям, и делают дубликат, получая собственный образ диска.
Шаблоны могут быть в формате COW (Copy on Write). Файл нового COW-архива очень маленький, и его просто создавать и переносить. Поэтому вопрос дискового пространства стоит не так остро. Это также позволяет сократить время развертывания ВМ, делая его намного более эффективным, чем копирование всего файла образа.
Каждой ВМ назначается имя, образ диска, сетевые параметры, выделенные процессорные ресурсы и память. Конфигурации всех ВМ надо фиксировать в файле. Впрочем, это не эффективно при управлении большим числом виртуальных машин. Для упрощения процесса на виртуальных машинах с одинаковыми конфигурациями можно применять готовые профили. Система будет конфигурировать эти ВМ в соответствии с выбранным профилем.
В большинстве конфигураций используются одинаковые параметры. Некоторые из них, такие как UUID, имя и IP-адрес ВМ, вычисляются и назначаются автоматически. Обычно пользователей не интересует, на каком узле работает их ВМ.
При анализе стратегии размещения ВМ на хостах надо помнить основной принцип развертывания, который заключается не только в удовлетворении потребностей в виртуальных машинах, но и в разумной балансировке нагрузки в сети. Таким образом, вы сможете добиться эффективного баланса между имеющимися ресурсами и имеющейся рабочей нагрузкой.