Ласкаво просимо до dev.net.ua Увійти | Приєднатися | Допомога

Ivan Bilokon

This blog is about my findings
Автоматизация создания отказоустойчивого кластера с CSV на Microsoft Windows Server 2008 R2 (1).

Кто хоть раз в жизни настраивал отказоустойчивый кластер (Failover Cluster) с CSV (Cluster Shared Volume) на Microsoft Windows Server 2008 R2 с количеством узлов больше 2-х, тот скорее всего очень мечтал об автоматизации этого процесса. Лично мне иногда приходится это делать для реализации миграции виртуальных машин на Microsoft Hyper-V. Хорошее пособие по настройке этого дела вручную здесь.

Основной неприятностью в данном процессе является необходимость подключения iSCSI Target к каждому из узлов кластера а так же активация фичи Failover Clustering на всех узлах. Процесс настройки самого iSCSI хранилища я рассматривать не буду, т. к. их существует множество разновидностей, как аппаратных, так и программных. Я использовал Microsoft iSCSI Software Target. Итак, стартовые позиции: на всех необходимых узлах установлена Windows Server 2008 R2 Enterprise (желательно с последним комплектом обновлений) с установленной ролью Hyper-V но без Failover Clustering, настроенный работоспособный iSCSI Target со всеми необходимыми дисками. Естественно, все узлы в одном домене.

Описание всего процесса я решил разбить на 2 статьи, в каждой из которых рассматриваются логически почти независимые операции.

Первая статья будет посвящена подключению таргета и активации фичи. Учитывая тот замечательный факт, что управлять встроенным в ОС iSCSI инициатором и настройкой фичей можно из командной строки, создание скрипта напрашивается само собой. Для универсальности процесс работы с инициатором и активацию фичи я решил разнести по разным скриптам.

Подключение iSCSI Target – connectTarget.bat.

@echo off

Rem устанавливаем автозапуск сервиса iSCSI инициатора

sc config msiscsi start= auto

rem запускаем сервис

net start msiscsi

rem для универсальности скрипт предполагает запуск с параметрами connectTarget <TargetPortal> <Port> <TargetIQN>

rem добавляем сервер

iscsicli addtargetportal %1 %2

rem добавляем таргет

iscsicli QAddTarget %3 %1

rem настраиваем автосоединение с таргет после перезагрузки

rem мы не используем аутентификацию, поэтому chapusername chappassword игнорируются

iscsicli persistentlogintarget %3 T * * * * * * * * * * * chapusername chappassword 0 * 0

rem выполняем соединение с таргетом

iscsicli qlogintarget %3

   

Активация фичи – AddFeature.bat.

@echo off

Rem параметром скрипта будет имя фичи

DISM /online /enable-feature /featurename:%1

   

Все вроде бы отлично, но эти скрипты позволяют выполнить свою функцию только в случае запуска непосредственно на каждом из узлов. А очень хочется запустить где-то в одном месте и чтобы все магическим образом сработало. Тут на помощь приходит замечательная утилита PsExec. Она позволяет выполнять команды на удаленных компьютерах, а в случае скриптов – может даже скопировать их на удаленную машину и выполнить. Для реализации нашей идеи создаем текстовый файл hostlist.txt, каждая строчка которого будет либо IP либо имя удаленного хоста. Приведенный ниже скрипт выполняет интересующую нас настройку на всех будущих узлах.

PreConfig.bat

@echo off

rem Initial parameters

rem iSCSI Target server IP or hostname

set TargetPortal=10.25.2.26

rem iSCSI Target port. Default is 3260

set TargetSocket=3260

rem iSCSI Target IQN

set TargetIQN=iqn.1991-05.com.microsoft:win-fn2t41fu88p-vmstore-target

rem Configuring Targets

echo Configuring Targets...

psexec @hostlist.txt -c connectTarget.bat %TargetPortal% %TargetSocket% %TargetIQN%

echo.

rem Configuring Failover Cluster Feature

echo Configuring Failover Cluster Feature...

rem запускаем скрипт на каждом хосте, указанном в hostlist.txt.

psexec @hostlist.txt -c AddFeature.bat FailoverCluster-FullServer

rem на всякий случай перезагружаем узлы, при этом указав причины перезагрузки и задержку в 1 минуту

psexec @hostlist.txt shutdown /r /t 60 /d p:2:4 /c "Restarted by Failover Setup Script"

   

Как видно из исходного кода, параметры таргета я задаю прямо в скрипте. Все 3 файла скриптов вместе с hostlist.txt нужно поместить в одну папку на одном из компьютеров, входящих в один домен с будущими узлами (это может быть не обязательно сам узел). Запуск PreConfig.bat производим из командной строки, запущенной от имени доменного администратора (или другого доменного пользователя с правами администратора).

Продолжение здесь.

Спасибо за внимание!

Posted: Wednesday, October 12, 2011 12:50 PM від Ivan Bilokon

Коментарі

Немає коментарів

Анонімні коментарі деактивовані. Увійдіть або Зареєструйтесь щоб мати доступ до ресурсів Спільноти.