Сегодня я решил рассказать как настроить кластер VMware, а также показать, как работают технологии VMware HA, Fault Tolerance и VMotion. Вкратце расскажу про каждую из этих технологий.
VMware VMotion
VMotion — это технология, которая позволяет переместить виртуальную машину с одного физического сервера на другой, не прерывая её работы. Зачем это нужно? Ну во-первых с помощью этой технологии можно непрерывая работы сервисов выключить сервер на обслуживание, предварительно переместив виртуальные машины на другие сервера. Во-вторых VMotion используется технологией DRS (Dynamic Resource Scheduler) для распределения виртуальных машин по физическим серверам в целях выравнивания нагрузки. Также есть технлогия Storage VMotion, которая позволяет без прерывания работы виртуальной машины переместить её виртуальный жесткий диск с одного дискового хранилища на другое. Технология Storage VMotion также может быть использована, для того чтобы отключить дисковый массив на обслуживание, например добавить жесткие диски, или перестроить RAID массив.
VMware HA
VMware HA — это технология, которая обеспечивает высокую доступность виртуальных машин. По сути сервер управления осуществляет мониторинг доступности виртуальных машин и хостов. Если хост перестал отвечать, то сервер управления перезапускает работавшие на нём виртуальные машины на другом хосте. Для виртуальной машины это аналогично нажатию кнопки «Reset» на сервере. Т.е. в случае выхода из строя физического сервера, через несколько минут виртуальные машины автоматически запускаются на оставшихся серверах.
Fault Tolerance
Fault Tolerance — это технология отказоустойчивости, которая обеспечивает доступность виртуальных машин 24/7. По сути одна и та же виртуальная машина работает на двух серверах одновременно, а точнее даже сказать, что на одном хосте работает активная машина, а на втором работает её пассивная копия. Между активной и пассивной копией происходит односторонняя репликация процессорных инструкций. И в случае, если отказывает хост, на котором работает активная копия виртуальной машины, мгновенно активируется пассивная копия. При этом переключение оказывается прозрачным для пользователей и служб. В отличие от технологии VMware HA, перезагрузки виртуальной машины не происходит. Технология Fault Tolerance имеет ряд ограничений, например виртуальная машина должна использовать только один процессор, да и сам список совместимых процессоров достаточно ограничен, но об этом ниже.
Конфигурация тестового стенда
Для начала, немного расскажу, что представляет собой мой тестовый стенд. Тестовый стенд представляет собой 2 рабочих станции: 1-я имеет процессор Core2Quad Q6600 с 8 ГБ оперативной памяти и RAID 0 из 4 жестких дисков SATA по 500ГБ (на базе контроллера 3ware 9650SE), 2-я имеет процессор Core i7 920, 12 ГБ памяти и RAID 0 из 4-х дисков SATA по 500 ГБ на встроенном контроллере. На первой рабочей станции установлен VMware ESX 4, на второй установлен Windows 7 x64 и VMware Workstation 7. Внутри VMware Workstation создано 3 виртуальных машины: VMware ESX 4, Windows 2003 R2 + vCenter Server и Windows Storage Server 2008 + iSCSI Target. Физические сервера подключены к гигабитному свитчу, встроенному в Wi-Fi роутер. Управление системой я осуществляю через ноутбук, который по RDP подключается к серверу vCenter. Кстати, чтобы запустить ESX внутри VMware Workstation 6.5, нужно в файл конфигурации виртуальной машины добавить 2 строчки:monitor_control.vt32 = «TRUE» и monitor_control.restrict_backdoor = «TRUE». Внутри VMware ESX, который установлен внутри VMware Workstation можно запускать только 32-х битные системы.
Настройка кластера VMware HA
Теперь собственно о том, как настроить кластер. Запускаем vSphere Client и подключаемся к серверу vCenter. Сначала нужно создать ЦОД, нажимаем правой кнопкой по корню консоли и выбираем New Datacenter, ну и называем его как-нибудь интуитивно понятно. У меня один называется Moscow, второй Piter, в соответствии с нашими офисами. Затем нужно создать кластер, для чего нажимаем правой кнопкой по нашему датацентру и выбираем New Cluster, затем нажимаем несколько раз далее, далее и финиш, оставив всё по умолчанию. Теперь в кластер нужно включить хосты, т.е. наши физические сервера (в моём случае один из них виртуальный), нажимаем правой кнопкой по кластеру и выбираем Add Host, указываем имя или IP адрес хоста и логин и пароль на доступ (root/*****). После этого на хостах будет сконфигурирован агент vCenter и хосты начнут управляться через сервер vCenter.
Прежде, чем включать HA, нужно учесть одну вещь: работоспособность VMware HA зависит от работоспособности службы DNS. Т.е. все хосты и сервер vCenter должны разрешать имена друг друга, причем как короткие, так и FQDN. Т.е. вам нужно либо правильно настроить DNS, либо на всех хостах и сервере vCenter прописать правильные соответствия имён и IP-адресов в hosts-файл. Так что вот некоторая полезная информация:
hosts файл в Windows — C:\windows\system32\drivers\etc\hosts hosts файл в Linux (на сервере ESX) — \etc\hosts список DNS серверов в Linux — /etc/Resolv.conf
А вообще, если у кого-то возникнут проблемы с включением HA, то читать тут:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003735
Также нужно правильно настроить сетевые модули и интерфейсы хостов. Для работы VMotion и Fault Tolerance, нужно, чтобы модули VMkernel всех хостов были объединены в одну сеть. Вообще рекомендуется эти модули включать в отдельный виртуальный свитч, который подключен к раздельным сетевым интерфейсам физического хоста. Но у меня в тестовой среде нет особого изобилия интерфейсов, поэтому модули VMkernel объединены в один свитч с обычной сетью. Также в свойствах модуля VMkernel должен быть разрешён VMotion.
Теперь можно включать VMware HA. Для включения HA, в консоли vSphere Clinet, подключенной к серверу vCenter нажимаем правой кнопкой по нашему кластеру и выбираем Edit Settings и ставим галку Turn On VMware HA, нажимаем OK. После этого все хосты, включенные в кластер, будут сконфигурированы для работы HA и Fault Tolerance.
В принципе всё готово. Напомню, что для работы HA и VMotion, жёсткие диски виртуальных машин должны располагаться на общих хранилищах (iSCSI, FC, NFS). Я использовал iSCSI на базе Windows Storage Server 2008. Далее я развернул виртуальную машину и установил внутри неё Windows Server 2003 R2, где я создал общую папку Share.
Запускаем VMotion
Чтобы переместить виртуальную машину с одного физического хоста на другой, нужно нажать правой кнопкой по виртуальной машине и выбрать Migrate. Затем указать, что мы хотим сменить хост или дисковое хранилище. Если мы мигрируем хост, то далее нужно будет указать на какой хост мы собираемся мигрировать машину. При выборе хоста, vCenter проверяет совместимость старого и нового хоста. Так, например в моём случае, ввиду различия процессоров на моих рабочих станциях (архитектуры Nehalem и Core), запустить VMotion с первого раза не получилось, мне было выдано, что хосты не совместимы (разные версии SSE).
Но эта проблема оказалась решаема. Нужно скрыть различающиеся биты идентификатора процессора от виртуальной машины. Для этого записываем различающиеся биты и регистр. В моём случае это CPU Level 1, регистр «ecx», различающиеся биты: —- —- *—* *— —- —-, чтобы их скрыть от виртуальной машины, нужно Выключить виртуальную машину, затем зайти в её свойства, перейти на вкладку Options, выбрать Advanced>CPUID MASK и нажать Advanced. Теперь нужно на место различающихся регистров вписать «0″, что означает «скрыть». Попытавшись выполнить миграцию ещё раз, я снова получил ошибку, но теперь уже из-за различий в регистре «edx». Это различие скорее всего вызвано тем, что ESX сервер на втором хосте работает внутри виртуальной машины, и ему недоступна 64 битная адресация памяти и VT. Со второй ошибкой поступаем точно также, как и с первой. Выписываем регистры и скрываем их от виртуальной операционной системы внутри виртуальной машины. В моём случае пришлось скрыть следующие регистры:
После этого VMotion заработал.
Работа VMotion
Как работает VMotion можно посмотреть на видео:
Работа VMware HA
Я также записал, как работает VMware HA, что тоже можно увидеть на видео ниже:
Настройка Fault Tolerance
Fault Tolerance включается очень просто. Нажимаем кнопкой по виртуальной машине, выбираем Fault Tolerance > Turn On Fault Tolerance.
После этого происходит создание пассивной копии виртуальной машины на втором хосте. На скриншоте ниже видно, что у виртуальной машины теперь два хоста: основной — vsphere4 и вторичный — vmwareesx4.
К сожалению попытка включить виртуальную машину в режиме Fault Tolerance не увенчалась успехом ввиду того, что FT вообще не поддерживается на данных процессорах.
Это ограничение уже никак не обойти, и нужно использовать совместимые процессоры. Ниже привожу таблицу совместимости процессоров для использования Fault Tolerance:
Так, что на моей тестовой системе, заснять видео, как работает Fault Tolerance не получится.