Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #118, ОКТЯБРЬ 2008 г.

Безотказный файлообменник: Строим отказоустойчивый кластер для файлового сервера в Windows Server 2008

Ульяна Смелая

Отказал сервер? При помощи службы кластеров Win2k8 можно обеспечить восстановление приложений, ресурсов и служб. Возможных конфигураций серверных кластеров великое множество, но мы разберем самый интересный и востребованный сценарий.

Отказоустойчивым кластером (Failover Cluster) называют группу компьютеров, которая функционирует как единая система для обеспечения высокой доступности. Пользователь или программа видят такой кластер, как один виртуальный сервер. Когда кластеризованный ресурс на одном из узлов выходит из строя, управление им возлагается на другой сервер. При восстановлении ресурса исходный сервер возвращает себе функции управления и переходит в оперативный режим. Прелесть в том, что весь процесс восстановления после отказа полностью прозрачен для пользователей.

В Win2k8 служба кластеров претерпела значительные изменения: упрощено проведение всех операций, начиная с этапа развертывания, добавлена поддержка теневых копий для быстрого восстановления конфигурации кластера, усовершенствованы механизмы работы с сетью и алгоритм взаимодействия с системами хранения. Кроме того, появилась новая модель безопасности, которая поможет решить ряд проблем, возникавших ранее. Так, в предыдущей версии для функционирования узла требовалась учетная запись службы кластеров, выполняемая с правами локального администратора. Такой пользователь в домене попадал под ряд политик, что могло вызвать сбой или недоступность сервиса. Теперь служба кластера использует локальную учетную запись с ограниченным набором прав, который позволяет ей правильно функционировать.

Подготовительные мероприятия

Требования к компьютерам, входящим в кластер, в общем-то, стандартны. Они должны иметь сертифицированное оборудование (желательно одинаковое). Параметры связи на сетевых адаптерах, версии Windows, архитектура (32-разрядная, x64 или Itanium), патчи и прочее ПО должны совпадать. Нужно, чтобы все системы входили в один домен. Предпочтительна одинаковая роль рядового сервера. Файловая система – только NTFS. Избегай образования единичных точек отказа, например, наладив связь между узлами кластера по нескольким сетям. Если узла два, как в нашем сценарии, то достаточно соединить их между собой при помощи отдельных сетевых карт. Хотя опыт показывает, что большая часть этих требований – обычная перестраховка, это не означает, что их можно совсем не придерживаться.

Диски или LUN (Logical unit numbers, логические номера устройств), которые предполагается задействовать в кластере, должны быть доступны только узлам кластера. Для подключения можно использовать iSCSI, диспетчер хранилища для сетей SAN или любой другой интерфейс, предоставленный производителем системы хранения. Для проверки видимости на одном из узлов будущего кластера следует перейти в Administrative Tools -> Computer Management -> Storage -> Disk Management (Администрирование -> Управление Компьютером -> Устройства хранения -> Управление дисками). Если нужные диски доступны в списке, значит, можно переходить к следующему этапу.

Установка требуемых компонентов

Как и все прочие сервисы Win2k8, по умолчанию компонент Failover Clustering не устанавливается. Его необходимо добавить самостоятельно. Сделать это можно из окна Initial Configuration Tasks («Задачи начальной настройки»), выбрав ссылку Add features («Добавить компоненты») в области Customize This Server («Настроить этот сервер»). Или, как вариант, из «Диспетчера сервера» (Server Manager). В результате появится мастер добавления компонентов Add Features Wizard, который весьма лаконичен и прост. Отмечаем пункт Failover Clustering, после чего нажимаем кнопку Next Install. И некоторое время ожидаем, пока кончится процесс установки и инициализации параметров.

Следующий этап: устанавливаем сервис, ради которого и собирается кластер. В нашем случае – переходим в Add Role и на втором шаге «Мастера добавления ролей» (Add Role Wizard) выбираем File Server. Нажимаем Next и отмечаем службы ролей (здесь будут предложены File Server, DFS, Resource Manager, Services for Network File System и другие). Выбор некоторых из них (например, распределенной файловой системы DFS) потребует дополнительных настроек. Повторяем установку Failover Clustering и File Server на каждом узле из группы серверов.

Советую проверить конфигурацию будущего кластера. Избежать проблем на раннем этапе, увидеть узкие места и сэкономить время поможет проверка на соответствие требованиям Failover Cluster настроек серверов, сети и систем хранения данных. Тестирование производят из окна Failover Cluster Management («Управление отказоустойчивыми кластерами»), которое можно вызвать из Administrative Tools. В разделе Management выбираем ссылку Validate a Configuration («Проверить конфигурацию»). Появится «Мастер проверки конфигурации» (Validate a Configuration Wizard). На втором шаге мастера Select Servers or a Cluster указываем на узлы, которые будут тестироваться. Для этого вбей имя узла в поле Enter name (или выбери из списка при помощи Browse) и нажми Add. Далее отмечаем тесты для выполнения. Перед созданием кластера рекомендуется пройти все проверки (Run all tests). А вот при подключении следующего узла некоторые тесты можно пропустить. По окончании проверок выводится информативная сводка (Summary). Тесты, которые помечены зеленым цветом, считаются пройденными.

Обрати внимание на тесты, которые помечены значком с восклицательным знаком (Warning; есть еще и Not Applicable, но они не так критичны). Если не будут убраны все предупреждения, «Мастер создания кластера», который мы собираемся вскоре запустить, скорее всего, прекратит работу из-за ошибки. Что делать, когда какие-то тесты не пройдены? Нажми на More about cluster validation tests, – так можно вызвать соответствующий раздел справки. Авось, поможет разобраться в ситуации. Чтобы просмотреть полный отчет по тестированию в окне веб-браузера, нажми ссылку View Report. Устрани найденные проблемы и повтори тест. После закрытия мастера отчет сохраняется в html-файле в каталоге SystemRoot\Cluster\Reports\Validation Report. Имя файла будет соответствовать дате и времени проведения теста.

Новые кластеры создаются при помощи «Мастера создания кластера» (Create Cluster Wizard). Вызывается он из окна консоли Failover Cluster Management (нажатием на ссылку Create a cluster). Консоль можно вызвать из Administrative Tools – или введя команду cluadmin.msc в окне терминала. Интерфейс консоли традиционен для Win2k8. Окно разделено на три области: в левой области показаны кластеры, а подменю открывает доступ к настройкам. В центре выводится информация о выбранном объекте. В правой же части можно активировать действия, также доступные из контекстного меню. Но при помощи этой консоли нельзя управлять кластерами предыдущих версий Windows, отмечу это специально.

Затем по подсказкам мастера последовательно добавляем в список серверы, которые будут входить в состав кластера. На странице Access Point for Administering the Cluster указываем имя кластера и его IPv4-адрес. Проверяем установки на странице Confirmation и, если все правильно, нажатием Next начнем процесс создания кластера. Едва мастер закончит работу, появится страница Summary. Посмотри, она не содержит записей об ошибках? Нет? Тогда создание кластера можно считать завершенным. Новый кластер появится в окне консоли Failover Cluster Management.

Подключиться к кластеру, которого нет в списке, можно щелчком по записи Failover Cluster Management. Появится контекстное меню. Выбери в нем команду Manage a Cluster.

Кластер создан, но необходимо еще кое-что сделать для оптимизации работы. Перемещаясь по вкладкам, проверь установки кластера. Чтобы сервера для обмена информацией внутри кластера не использовали сеть, предназначенную для передачи основного потока данных, нужно выбрать ее в списке Networks. Далее – в контекстном меню перейти к пункту Properties («Свойства») и активировать параметр Do Not Allow the Cluster to Use This Network («Запретить кластеру использовать эту сеть»). Есть еще один момент: в идеале каждый узел должен иметь одинаковое количество сетевых адаптеров, а их имена – обладать такими названиями, которые помогут администратору понять, к какой сети они подключены. По умолчанию интерфейсы имеют имена вроде «Cluster Network 1», «Cluster Network 2». Не очень-то удобно! Поэтому отметь сеть (в среднем окне будут выведены ее характеристики) и в контекстном меню ткни пункт Rename. Впиши новое имя сети. Аналогично поступаем и с остальными.

Добавить новый узел в кластер очень просто. Для этого в поле Nodes выбираем Add Node и следуем указаниям «Мастера добавления узла» (Add Node Wizard). Основной страницей мастера будет Select Server page, на которой указываются данные нового сервера. После нажатия на Next начнется процесс добавления узла. Результат этой операции будет показан в Summary. Сам видишь, ничего сложного.

Хочешь знать, что происходит при развертывании отказоустойчивого кластера в Active Directory? В контейнере «Компьютеры» создается ряд объектов виртуальных компьютеров (VCO – Virtual Computer Object). Они относятся ко всем ресурсам сетевого имени кластера, создаваемым, как «Точки доступа клиента» (CAP – Client Access Points). CAP понадобится даже для работы одноузлового кластера. Окно, требующее его создать, будет появляться несколько раз по ходу настроек – и еще успеет тебе надоесть. Так что, в меню Action выбери пункт Add a resource, затем Client Access Point и следуй указаниям еще одного мастера. Фактически, он похож на предыдущий: необходимо только указать незанятый IP-адрес для CAP и все.

Модели кворума

В обычном сценарии проблем не возникает, но что делать, если по какой-то причине кластер разделен? Например, отсутствует служебное сетевое подключение. В этом случае фактически получаем два кластера, которые будут выдавать разную информацию. Вот тогда и нужно определить, кому работать, а кому отключаться. Для этого нужен кворум (quorum). Сервера, оставшиеся без кворума, автоматически закрывают все службы.

Для серверов Windows кворум – понятие не новое. Однако в реализации Win2k8 есть существенные изменения. Кворум – это не объект кластера, а целая концепция, позволяющая сохранить работоспособность всей системы в случае недоступности отдельных ее элементов. Кластер-то должен действовать, как единая группа, представляющая собой логический сервер. Все узлы обязаны работать согласованно и выдавать одинаковую информацию. Поэтому при настройке кластера выбор типа кворума весьма важен.

В Win2k3 «кворумом» называли общий диск с настройками кластера, потеря которого была критичной. Как вариант, предлагался кворум набора узлов, состоящий из общего SMB-ресурса. В этом случае для функционирования кластера требовалось участие большинства узлов. В Win2k8 используется модель единого кворума, определяющая результат на основе количества голосующих элементов кластера (свидетелей). Новая модель кворума позволяет гарантировать, что только одна часть будет выступать в роли кластера. Раздел с кворумом определяется числом голосующих элементов (узлов, дисков-свидетелей), или возможностью доступа к определенному ресурсу, такому, как диск-свидетель. В первом варианте все элементы равны, то есть можно получить кворум и без диска свидетеля.

Режим кворума определяет нужное количество голосов. В настройках Win2k8 доступно четыре режима. Настройка производится через меню More Actions – Configure Cluster Quorum Settings на странице Select Quorum Configuration:

  • Node Majority (большинство узлов) – удобен при нечетном количестве узлов, одноузловом кластере или кластере без общего хранилища данных. Голоса назначаются только узлам, свидетель или диск-свидетель отсутствуют. Для кворума должно быть доступно более половины узлов.
  • Node and Disk Majority (большинство узлов и диск) – удобен при четном количестве узлов. Голоса имеют узлы и общие диски. Кворум может быть получен, если доступно более 50% узлов (или меньше, если есть диск-свидетель).
  • Node and File Share Majority (большинство узлов и файловый ресурс) – как и предыдущий, только вместо диска-свидетеля используется файловый ресурс. Этот режим также рекомендуется при четном количестве узлов и кластере без общего хранилища данных.
  • No Majority: Disk Only (без большинства: только диск) - для кворума нужен диск-свидетель, количество узлов на решение не влияет. Отсутствие диска свидетеля в любом случае означает отсутствие кворума.

При установке кластера будет выбран наиболее оптимальный вариант (выводится в окне Summary). Менять кворум потребуется только при добавлении нового узла или других изменениях в структуре кластера. Режим «No-Majority: Disk-Only» подписан, как не рекомендованный, и соответствует модели общего кворума в старой версии кластеров. Учитывая, что есть другие варианты, трудно назвать ситуацию, когда он может быть востребован. В зависимости от текущей конфигурации, некоторые режимы могут быть также отмечены, как не рекомендуемые (not recommended for your current number of nodes).

Развертывание сервиса

Теперь, когда кластер поднят и протестирован, приступаем к последнему этапу – развертыванию необходимого сервиса или службы, которую он будет обеспечивать. Выбранная роль на этот момент уже должна быть установлена. Хотя есть возможность создания пустого (empty) сервиса: это можно сделать из меню More Actions – Create Empty Service or Application. Перед добавлением File Server необходимо, зайдя в Storage, убедиться, что дисковые ресурсы доступны кластеру. При необходимости можно добавить ранее не подключенные к кластеру диски: выбери в контекстном меню Add Disk и укажи устройство хранения. По окончании работы мастера новый диск перейдет из категории Local Disks в Clustered Disks.

Список поддерживаемых приложений доступен в меню Services and Applications. Нажми в области Actions ссылку Configure a Service or Application («Настроить службу или приложение») и на втором шаге High Availability Wizard укажи нужную роль или сервис. В нашем случае – это File Server. Если выбранная роль еще не установлена, мастер прекращает работу. Далее введи стандартные параметры: имя файлового сервера, его IP-адрес и тома, к которым нужно обращаться. По окончании работы мастера файловый сервер появится в дереве консоли Services and Applications. Выбираем его и в контекстном меню отмечаем пункт Provision a Shared Folder Wizard. Это вызовет одноименного мастера. Следуя его инструкциям, укажи параметры создаваемой общей папки: путь и имя, разрешения файловой системы и расширенные параметры протокола SMB (кэширование, число пользователей). После завершения мастера проверь работу файлового сервера. Затем переведи его в режим онлайн, выбрав в контекстном меню команду Bring this service or application online.

Кстати, для тестирования корректности перехода на другой узел кластера необязательно выдергивать сетевой кабель. Достаточно перевести сервис в оффлайн, нажав в этом же меню ссылку Move this service or application to another node. В дальнейшем за работой файлового сервера можно следить из консолей Server Manager, Failover Cluster Management и Event Viewer.

Хотя мы рассмотрели только создание кластера для файлового сервера, – в остальных случаях (для почты, печати, SQL, DHCP, etc) принцип настройки будет аналогичен.

Мастера помогут

Сегодня создание отказоустойчивого кластера в Win2k8 уже не требует специальных знаний от администратора. Нужно просто представлять себе конечный результат. Наличие множества мастеров и подсказок по ходу процесса заметно упрощают настройки и последующее управление. Думаю, у тебя все получится.

Кластерный сетевой интерфейс

Настоятельно рекомендую на каждый компьютер установить еще по одной сетевой карте и связать узлы отдельным сетевым кабелем. Это весьма пригодится, так как помимо Heartbeat-сообщений, которые предназначены для мониторинга состояния узлов кластера, по кластерному сетевому интерфейсу будут идти данные синхронизации и управления.

INFO

  • Узлы в составе Failover Cluster могут выполнять разные роли (быть почтовым, файловым, DHCP или веб-сервером, сервером печати или баз данных).
  • Microsoft для Failover Cluster поддерживает только совместимое «Certified for Windows Server 2008» оборудование.
  • Для определения готовности систем и сети предусмотрен ряд тестов в Validate a Configuration wizard. Они входят в состав консоли Failover Cluster Management.
  • Настройка NLB в Win2k3 рассмотрена в статье «Непотопляемый сервер», которую ты найдешь в X_02_2008.

WWW

Ознакомиться со списком всех изменений в Failover Cluster можно в документе по адресу go.microsoft.com/fwlink/?LinkId=62368.

WARNING

  • Варианты Win2k8 Web Server и Standard не поддерживают кластерную службу Failover Cluster.
  • Win2k8 не поддерживает NLB (Network Load Balancing, Служба балансировки сетевой нагрузки) и Failover Cluster на одном сервере.
Содержание