MS Windows Server 2003, отказоустойчивый кластер

в 12:14, , рубрики: active directory, кластер, системное администрирование, метки: ,

Введение

Достался нам настоящий динозавр, — HP ProLiant DL380 G4 Packaged Cluster with MSA500 G2, это готовое решение от Hewlett Packard, два сервера с внешним хранилищем, подразумевающее построение кластера. Ну что ж, кластер так кластер, сказано сделано. Ранее опыта создания подобных систем не было, так что постараюсь описать процесс как можно подробней со всеми допущенными нами ошибками.
MS Windows Server 2003, отказоустойчивый кластер

Немного теории

Итак, зачем нужен кластер? Тут грубо говоря два варианта: или создание отказоустойчивой системы, или системы распределения нагрузки. В моём случае это отказоустойчивая система: изначально работает один сервер, если случается софтовый или аппаратный сбой в дело входит второй сервер, и некий сервис установленный на этих серверах достаточно быстро возобновляет работу. Не буду вдаваться в подробности сервиса для которого это всё делается, пусть для примера это будет программа которая что-нибудь пингует и создаёт об этом отчёт.

Для построения кластера необходимо учесть несколько фундаментальных условий: совместимое оборудование сегментов кластера — тут проблем нет, сервера у нас идентичные, так же совместимое ПО и общее дисковое пространство. Так же сегменты кластера должны находиться в одном домене. Так как система у нас будет независима в своей технологической сети, придется создавать ещё и домен. По хорошему нужно иметь отдельный сервер в качестве контроллера домена, а так как система должна быть отказоустойчивой, контроллеров домена должно быть два. Но в виду отсутствия этих самых серверов, сегменты кластера и будут контроллерами домена. Службы Active Directory не поддаются кластеризации, ну чёрт с ними, кластер кластером, а контроллеры домена сами по себе.

Дисковый массив

Начнём с подготовки жёстких дисков. Дисковый массив HP StorageWorks 500 G2 Modular Smart Array достался с девятью SCSI дисками по 146 гигабайт и двумя по 34 гигабайта. Подключен он к серверам через интерфейс SCSI, и управляется с помощью встроенной утилитой RAID-контроллера в самих серверах. Для общего дискового пространства будем использовать диски по 146 гигабайт, и объединим их в RAID-массив. Из возможных вариантов был выбран RAID 6, конечно по сравнению с пятым он менее производителен, что в принципе для нас и не критично, но зато и надёжней. Так же для кластера нужно создать технологический раздел наблюдения за кластером — quorum. Ему нужно не менее 50 мегабайт дискового пространства, так что для quorum'a будем использовать зеркало (RAID 1) из двух оставшихся дисков по 34 гигабайта, конечно многовато но меньше дисков нет. На борту же самих серверов установлены по два SCSI диска, их то же в RAID 1, и на них будут стоять операционные системы серверов.

Итак, у нас получается три RAID-массива RAID 1 и один RAID 6, причём из девяти дисков используется только восемь и один диск является резервным, так что теоретически RAID будет работать даже при выходе из строя трёх дисков.

MS Windows Server 2003, отказоустойчивый кластер

ОС и Active Directory

Изначально мы установили Windows Server 2008, но позже выяснилось что в HP ProLiant DL380 G4 используется параллельный SCSI, а поддержка параллельного SCSI, как тип общего запоминающего устройства была удалена в отказоустойчивом кластере на базе Windows Server 2008. Пришлось использовать Windows Server 2003, и о Hiper-V не может быть и речи. Так же хочу заметить, что нужно использовать Windows 2003 Enterprise или Datacenter, так как Windows Server 2003 Standard и Web Editon не поддерживают кластер.

С помощью мастера установки Active Directory создаём новый домен:

MS Windows Server 2003, отказоустойчивый кластер

MS Windows Server 2003, отказоустойчивый кластер

Полностью все этапы мастера показывать смыла я не вижу, обращу лишь внимание на некоторые моменты. Мастер установки AD предупреждает о отсутствии DNS. Роль DNS-сервера конечно можно было бы добавить до создания Active Directory, но можно это сделать прямо тут:

MS Windows Server 2003, отказоустойчивый кластер

Итак, когда Active Directory будет создана, нужно добавить учётную запись с правами администратора домена, для нашего будущего кластера, так как кластер настраивается под доменной учётной записью.
Учтёная запись будет называться Radioserver в домене Radio.local:

MS Windows Server 2003, отказоустойчивый кластер

Затем, подключаем второй сервер в качестве добавочного контроллера домена с помощью того же мастера установки Active Directory (dcpromo):

MS Windows Server 2003, отказоустойчивый кластер

Добавочный контроллер добавлен, мы можем увидеть контроллеры в окне управления Active Directory:

MS Windows Server 2003, отказоустойчивый кластер

Теперь можно приступить к созданию кластера.

Кластер

Для создания кластера необходимо закончить подготовку серверов. Общее дисковое пространство у нас есть, так же Quorum, теперь для отказоустойчивого сервера необходимо создать отказоустойчивую сеть. Сервера имеют по два сетевых адаптера, одна пара будет использоваться для внутренней связи между сегментами кластера, а вторая для связи с внешним миром, назовём их «Cluster» и «Lan» соответственно.

MS Windows Server 2003, отказоустойчивый кластер

Запускаем «администрирование кластером», действие — «создать новый кластер». Запускается мастер создания кластера, там необходимо указать домен и присвоить уникальное имя кластера, ведь для остальных устройств в сети наш кластер будет выглядеть как самостоятельный сервер. Затем указываем компьютер, который будет первым узлом нового кластера. Далее происходит анализ конфигурации:

MS Windows Server 2003, отказоустойчивый кластер

Если наша конфигурация не удовлетворяет кластеризации, желательно устранить все замечания, описание проблемы будет подробно изложена в журнале. Ну а если все пункты удовлетворены, вводим IP-адрес кластера и мастер предлагает конфигурацию будущего кластера. В этом же окне можно изменить автоматически выбранный раздел quorum'a, по умолчанию мастер выбирает самый маленький общедоступный раздел.

После завершения создания кластера мы видим что у нас получился кластер состоящий из одного узла с двумя кластерными группами и двумя сетями:

MS Windows Server 2003, отказоустойчивый кластер

В кластерных группах находятся ресурсы: Имя кластера, IP-адрес и quorum.

Теперь аналогично первому добавляем второй узел уже к созданному кластеру. И вот, наконец то кластер готов, что бы проверить его работоспособность можно попробовать в ручную переместить кластерные группы с одно узла на другой, так же искусственно спровоцировать этот переход, например отключением сетевого адаптера общественной сети — «Lan».

Итак, кластер готов, а что же делать дальше? Наше приложение, к сожалению, не поддерживает кластеризацию, а значит придётся его запускать в виртуальной машине.

Microsoft Virtual Server 2005 R2

Виртуальная машина выбрана — Microsoft Virtual Server 2005 R2 SP1 — Enterprise Edition. Устанавливаем виртуальную машину на оба узла, но перед этим необходимо добавить компонент Windows — «Сервер приложений»:

MS Windows Server 2003, отказоустойчивый кластер

После установки создадим скрипт, который будет использоваться службой кластера на узле 1 для перехода виртуального сервера на узел 2. Кроме того, когда служба кластеров останавливается, то провоцируется переход всех ресурсов на узел 2. Скрипт содержит одну строчку — «net stop clussvc», сохраняем его под именем «C:Stop_cluss_script.cmd». Заходим в групповые политики (gpedit.msc), выбираем «Завершение работы» и добавляем наш скрипт:

MS Windows Server 2003, отказоустойчивый кластер

Данный скрипт нужно добавить на обоих узлах. Затем на обоих узлах в папке "%systemroot%Cluster" добавляем скрипт «Havm.vbs», который будет запускать виртуальную машину при смене узла.

MS Windows Server 2003, отказоустойчивый кластер

Что бы наша виртуальная машина запускалась на обоих узлах, её нужно поместить на общий диск — D(data). Для этого нужно добавить общий диск как ресурс кластера. Заходим в Администрирование кластера и выбираем операцию «Новая группа», там указываем предпочитаемых владельцев, — это наши два узла. Группу назовём «SmartPTT». Теперь в созданной группе создаём ресурс «DiskStorage», аналогично добавляем владельцев и выбираем из выпадающего диска физический диск.

С помощью Virtual Server Administration Website создаём виртуальную сеть. В качестве виртуального сетевого адаптера выбираем адаптер, соответствующий адаптеру публичной сети кластера — «Lan».

MS Windows Server 2003, отказоустойчивый кластер

Теперь нужно перенести файл конфигурации на общий диск, для этого в навигационной панели наводим на «Virtual Networks», кликаем «Configure», затем нажимаем «View All». Наводим мышь на только что созданную сеть и выбираем «Edit Configuration»:

MS Windows Server 2003, отказоустойчивый кластер

MS Windows Server 2003, отказоустойчивый кластер

Так мы узнаем где по умолчанию сохранён файл конфигурации. Теперь в Virtual Server Administration Website кликаем «Back», наводим указатель мыши на нашу сеть и выбираем «Remove». Целью данного шага является не отмена создания виртуальной сети, а очищение системной информации Virtual Server в случае перемещения .vnc файла на кластерное хранилище. Если данную операцию пропустить, то виртуальная сеть будет работать некорректно.

На общем диске хранилища создаём папку «SmartPTT», тут будут находиться файлы виртуальной машины. И переносим сюда ClusterNetwork.vnc.

MS Windows Server 2003, отказоустойчивый кластер

Далее в Virtual Server Administration Website, наводим на «Virtual Networks», кликаем на «Add» указываем новое местоположение нашего .vnc файла, после чего кликаем «Add». Затем при создании виртуальной машины в Virtual machine name нужно не просто ввести имя, а ввести путь хранения конфигурации виртуальной машины, указав нашу папку в хранилище, — «D:SmartPTT...vnc».

На странице Master Status, эскиз созданной машины. Если будет предложено включить VMRC сервер, установить контроль ActiveX, сделайте это. Нажмите ОК для любых последующих диалоговых окнах безопасности. Заходим в конфигурацию созданной нами машины и выбираем раздел CD/DVD, где указываем откуда брать установочные файлы. После чего нажимаем Turn On нашей машины и запуститься стандартная процедура установки ОС. Затем на узле 2 через Virtual Server Administration Website необходимо вручную указать файлы конфигурации нашего виртуального сервера.

Далее заходим в Администрирование кластера и создаём новый ресурс в нашей ранее созданной группе. Тип ресурса «Универсальный сценарий»:

MS Windows Server 2003, отказоустойчивый кластер

Указываем путь к нашему скрипту Havm.vbs — %systemroot%ClusterHavm.vbs, и зависимостях ресурса добавляем «DiskStorage», так как если общий диск будет недоступен виртуальной машине не откуда будет брать файлы конфигурации. На этом настройка закончена, устанавливаем на виртуальную машину операционную систему и сервис для которого это всё делалось.

Заключение

Напомню, наш сервис, — это к примеру программа которая что нибудь пингует и создаёт об этом отчёт. Что бы посмотреть отчёт вне виртуальной машины, отчёт должен сохраняться на диск доступный и виртуальной машине и всем остальным членам сети. Как выход из этой ситуации в ОС работающей на виртуальной машине был добавлен сетевой диск — наше хранилище Data. Сетевой диск был подключен через IP-адрес кластера, и в этом возникла проблема. Когда происходит перемещение ресурса кластера «IP-адрес кластера» остальные члены сети, в том числе и виртуальная машина не понимают то что кластер сменил адаптер, и продолжают ломиться уже на неактивный адаптер узла вышедшего из строя. В итоге IP-адрес кластера недоступен 5-10 минут, в следствии и наш сервис всё это время не может сохранять данные на сетевой диск.

Фалы

Stop_cluss_script.cmd
«Havm.vbs»

Автор: DartAlex


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js