Хай всем еще раз! Бета-тестинг конфиги закончен. Из всех старвиндов которые были доступны - наиболее устойчивым и безпроблемным (без вылета в бсоды) оказался старвинд 5.4 с псевдо-валидным ключом (ломалкой экзешника не рекомендую пользоваться). Несмотря на более худший функционал, но из 5 тестов аварийного выключения - живая нода под w2k8 в бсод не улетала. В то время когда 5.5 и 5.7b - это делали регулярно, 5.6 - консоль под W2K8 R2 SP1 не стартует.
Какие задачи ставились?:
1. Возможность плановых и не плановых(экстренных) выключений серверов, как вместе так и по-отдельности без пересбора HA Starwind. К примеру на техобслуживание, по указанию внешнего ИБП.
2. Сохранение отказоустойчивости 1 узла (на случай бсодов и другие неприятностей неожиданного характера).
Конфига:
2 сервера W2k8 R2 SP1 с гигабитной сетью между + гигабитная сеть наружу.
На обоих Hyper-V
на 1 сервере (основной) - поднята не кластеризованная виртуалка w2k3 (VHD, на фейк рейде10) с Starwind 5.4. Действие при завершении работы - сохранить виртуалку.
В настройках служб на выключение (правим через реестр параметры отвечающие за связи служб) - сначало стопаем службу кластера, а только затем Hyper-V.
Параметры загрузки сервака - стоит таймаут 1сек.
на 2 сервере (файловый) - поднят прямо на серваке Starwind 5.4 (на фейк рейде10).
Все остальные виртуалки, которые пользуются CSV (HA Starwind) - кластеризованы.
Таймаут на загрузку сервака - стоит 360 секунд.
Что получилось:
1. Хотим выключить оба сервака? - запускаем батник Shutdownall.bat - батник отправляет на шутдовн 2 сервер и с интервалом в n секунд делает пинг 2 сервера. Пинга нет - продолжаем сценарий - выключаем 1 сервак. При выключении 1 сервака он с начало стопает кластер (сохраняются виртуалки на CSV-HA, которые до этого перенеслись с 1 сервера, а затем сохраняет виртуалку на которой лежит Starwind c этим HA).
2. Включаем оба сервера после выключения - 1 сервак стартует без задержек, 2 сервак ждет 360 секунд (каждый сам перенастраивает тайм-ауты) (предполагаем что оба включены одновременно с возобновлением подачи электричества от ИБП и в BIOS стоит при подаче питания Power ON).
1 сервак стартует, запускает Hyper-V (опять же, порядок запуска и зависимости служб - добился путем установки на службу кластера таймаута, она самой последней стартует). Hyper-V загружает локальную виратулаку с HA-Starwind. Та обнаруживает что 2 узел в дауне и переводит HA в деградированное состояние (Это важно чтобы не произошло сплит-брайна!). К этому моменту стартует служба кластера, видит диск-свидетель и подымает кластер (на всякий - выставьте в хранилищах и прочих ресурсах параметры повторов попыток, что бы он так и не подвис, не увидив диск-свидетель, иначе гарантировано получите геморрой с конфигами кластеризованных VM когда он стартанет без диска-свидетеля увидив второй узел и получив кворум)
2 сервак на 360 секунде продолжает загрузку, загружается, запускает кластер, старвинд и hyper-v. Подсоединяется как узел к существующему кластеру, старвинд увидив что он был в шутдавне - начинает полную синхронизацию с виртуалки 1сервера.
ГЛАВНО! Чтобы 2 сервак всегда физически/программно стартовал позже чем тот, который с виртуалкой. Объясняю. Грузиться 2 сервак, видит что 1 пока лежит - помечает битым + сам битый. Грузиться 1сервак, грузит виртуалку из сейв-стейта с HA-starwind, Starwind видит второй сервак и считает его битым, а себя считает исправным. Синхра уже не пойдет между ними без вмешательства.
Вариант 2 - сплитбрайн. Штудавним только первый сервак, виртуалка уходит в сейв-стейт.
Второй сервак не шутдавнился и считает первый битым. Через n-время загружается первый сервак, выходит из сейв-стейта, видит себя и второй сервак как нормальным = начинает работать. Второй сервак - считает себя нормальным, а 1 битым. Получаем сплит-брейн (разделние мозгов) с весьма неприятными последствиями и геморроем.
3. Вариант выключения 1 из серверов.
3.1 Выключаем 2сервак - все как обычно - shutdown -s.
Включение - работает выше описанный алгоритм (с момента загрузки 2сервака).
3.2. Выключаем 1сервак. Тут есть ньюанс - виртуалку со старвиндом нужно перевести не в сейв-стат, а в шутдовн, что бы все операции записи были завершены корректно (на всякий). Как это сделать через батник - читаем маны и пишем shutdown1.bat (и делимся со мной). Пока у меня все ограничивается ручным выключением виртуалки со старвиндом и, затем, ручным выключением 1сервака. Для критически важных виртуалок в кластере - делают ручной dynamic migrate на 2узел кластера.
Включение - как обычно, грузится 1сервак, стартует hyper-v, starwind на виртуалке видит свой шутдавн и сливает зеркало с работающего 2сервера. Паралельно стартует кластер и все работает.
4. Аварийное завершение серверов (бсод).
Загрузка проходит нормально, при условии:
4.1. В бсод улетает только один сервер, второй продолжает работать
4.2. Если 1сервак (с виртуалкой) улетел в бсод или на рестарт и не успел из него вернуться с восстановлением HA starwind, а тут экстренное завершение работы по питанию (ИБП сказал, что щас сдохну, заряда нет) - получаем геморрой.
ЕСЛИ
Улетел 2сервак (без виртуалки HA), и не успел загрузиться/слить зеркало с работающего узла - ничего страшного, штатное завершение 1сервака (с виртуалкой) - происходит сейв и шутдавн всех серверов. Запуск как описан выше в п.2.
Теперь реальные тесты.
Гигабитка на встроенных сетевушках в матерях!
на 1серваке виртуалка лежит на том же фейк-массиве рейд10 (ich10r) из рапторов, что и система. Бэкапы делаются на другой, настоящий рейд с серверными-винтами.
на 2серваке файлы-диски HA starwind лежат на фейк рейде10 (Ich10r) из десктоп-винтов, разделяя параллельно свою участь с DFS, бэкапами.
(СРЕДНЯЯ). Скорость чтения/записи - 60мбайт/сек (тестил еверестом/аида, IOметром пока не было необходимости). Линейное чтение/запись показывает те же результаты что и эверест(нынешняя аида). Рандом - немножко падает до 45-50мбайт/сек. Виртуалки ворочаются шустро.
(МАКСИМУМ) Когда дисковые массивы и сеть не нагружена очередными бэкапами - до 70-80мбайт/сек.
Реальные тесты на аварийку. Выдергиваем с 1 сервака питание. Все гуд, стартует все нормально, хотя кеш на HA starwind включен, кеш на диске включен. Вносятся тормоза пока фейк-рейд прогонит своих 320гигов на проверку. Дергал так раз 5-6. И еще 1 раз был действительно непредвиденный из-за обновления от билли гейтса.
Выдергиваем с 2 сервака питания. Все гуд. Стартует все нормально. 5-6 раз. Непредвиденных пока не было.
Ну и если полный "П" - вырубаем ИБП. Получаем то-что имеем, вручную собираю HA, подкидываю таргеты кластеру. - Пашет, но на 1 виртуалке слетела конфига. Пересоздал, подцепил vhd этой виртуалки, добавил в кластер - пашет.
Еще 2 раза полный "П" и на третьем получаю бсод в одной из кластеризованных виртуалок. И вправду - а фигле, кеш HA starwindа то улетает при таких полных П. На пятом разе второй сервак отказался грузиться с бсодом. (фейк-рейд, кеш улетел и что-то зацепил, хард-рейды с батарейкой таким проблемам не подвержены).
И вот тут настает самое главное в жизни каждого сис.админа - Ежедневный бэкап систем, бэкап виртуалки на 1сервер и бэкап HA-дисков starwind на втором. Тушим 1сервак - F8 - восстанавливаю на момент до тестов (предусмотрительно сделал бэкап Starwind-виртуалки в сейв-стайте), 2-сервак - аналогично. Грузимся и мы готовы к понедельнику, началу рабочей недели. Впринципе, шадов-копи на 2к8 работает замечательно и снимает именно "моментное" состояние виртуалки. И рекомендую юзать бэкапы через эту службу. Иначе делая бэкап работающей 100гиговой виртуалки или дисков - вы получите однозначно косяки из-за того, что в момент бэкапа что-то в виртуалку/диск запишется. Тем самым получите часть старого/частьнового с вероятным бсодом или повреждением HA-дисков.
Как организовать бэкапы - это уже все индивидуально
----
P.S. так как серваки питаются через 3000вт ИБПешник то аварийный по питанию практически исключен (только отказ ИБП, что маловероятно). При потере внешней сети - серваки через n время или % от заряда начинают штатное завершение работы.
Не рекомендую юзать такую схему если у вас нет ИБП и не настроены/нет возможности организовать штатное выключение при потере внешней электросети.
ТАКЖЕ !НЕРЕКОМЕНДУЮ ЮЗАТЬ! снапшоты виртуалки на которой крутиться HA-starwind!. Скорость падает до 30мб/сек сразу при 1 снапшоте, и чем больше снапшотов тем хуже (мелкомягкие об этом тоже предупреждают!). Так же потом гемор при откатах - вручную объединять все дифф-VHD от снапшотов.
(варианты с дизелями, шкафами-АКБ тут неуместны, ибо тогда вы !должны! по ряду причин купить нормальные внешние дисковые полки с FC и не заниматься такой &%@# как я
Вроде все расписал, сумбурно вышло, но кто ищет - тот найдет и поймет. Если же вы не поняли, но все равно хотите "СРАЗУ!" внедрить в продакшен(произведственной) среде - лучше купите дисковую полку или посмотрите другие варианты.
3 месяца работает и отпуск пережило нормально. Только один раз внеплан вышел - когда синхронизивался HA после ручного рестарта первого сервера, то второй сервер с которой шла синхронизация ушла в бсод по вине мониторингового ПО (в последствии, его вынес в виртуалку, нефик!), естественно HA не синхронизировался до конца и развалился. К счастью, это все я делал после вечернего бэкапа. Поэтому потерь не было.
В кластере/на HA-старвинда крутиться VM w2k3(раздача инета, мониторинг и алармы), VM w2k3 (exchange 2k7, корпоративный мессенджер и все в этом духе), 3xVM XP в режиме терминалки (экзаменационное ПО, справочные и иформационные БД/проги и т.д.)
По итогам тестов: 1C 7.7
DBFбазы намного лучше живут в RAID1 из 2 SSD от интела, который throught-pass в некластеризованную виртуалку, которая является сервером терминалов, для работы с этой самой базой. О как загнул... чтение - 503мбайт/сек (с родителя - 510)!
Плюс такого подхода в том, что если сдыхает виртуалка, скрипт коннектит SSD-массив напрямую в винду и юзеры тискают иконку не терминалки, а 1С, которая указывает на сетевую шару с этими базами. Если и нода померла - юзеры выбирают другую базу - вчерашнюю копию, которая лежит на другом сервере и работаю только на чтение.
DBF база на HA-starwind - я никогда не рискну включать Starwindовский кеш на реляционных БД, впрочем как и любой другой кеш без "батарейки"! А без него, педалит жестко, да и с ним - тоже не шик. Была бы 10гбит оптика между серваками - может и поэксперементировал бы, а так 500мбайт/сек на чтение я по гигабитной сети не сниму.
А если у вас есть MSSQL и 1С 8 - флаг вам в руки, кластеризовать MSSQL и тогда можно кластеризовать и виртуалку с терминальным сервером, но тогда уже можно и полочку с дисками докупить.
С уважением, belsysnet.
UPD 07.06.2013: Ввиду отсутствия бюджета - мигрировали на Proxmox VE 3(для отказоустойчивости на софтRAID 1) + ФС CEPH. Полет нормальный. Избавились от фейк-рейдов для массивов хранения данных, что упрощает их восстановление в случае "наворачивания железок".