ГЕННАДИЙ ДМИТРИЕВ
Четырехузловой кластер с балансировкой нагрузки
без внешнего массива данных
Месяца 3-4 назад к нам на фирму за консультацией пришли сотрудники одной из крупных государственных организаций. Для тестовой лаборатории им необходимо было собрать недорогой кластер под вывод информации для пользователей через Internet Information Server (IIS). После некоторых раздумий и консультаций с умными людьми мной было найдено довольно оригинальное решение, о нем я и буду сегодня рассказывать.
О том, какие бывают кластеры, технологии, реализации кластеров в этой статье, я писать не буду. В Интернете достаточно информации на эти темы. Здесь я опишу конкретную реализацию конкретной задачи. Надеюсь, она будет вам интересна.
Задача
Для одного из учебных классов государственного предприятия потребовалось создать кластер для работы с проектно-исследовательской информацией. Важным моментом в данной реализации было то, что внешние клиенты могли работать с данной документацией через самый простой IIS. В качестве узлов кластера были закуплены 4 машины достаточно простой конфигурации, P4-2.4 ГГц/512 Мб/80 Гб SATA/2xLAN Adapter. После некоторых раздумий было решено использовать службу Network Load Balancing для распределения нагрузки между узлами кластера, а синхронизацию данных между серверами настроить с помощью службы Distributed File System. В качестве операционной системы достаточно выбрать Windows 2003 Server Standard Edition, поскольку она поддерживает обе необходимые нам службы.
Схема кластера представлена на рис. 1.
Рисунок 1
1-й этап. Подготовка серверов, установка домена, создание DNS-зон
На первом этапе мы устанавливаем на все сервера, операционную систему, настраиваем сетевое окружение на серверах, поднимаем Active Directory. В принципе можно обойтись и без него, однако мне показалось, что единая авторизация на серверах удобнее, чем ведение учетных записей на каждом из них.
- Имеем 4 одинаковые машины с двумя сетевыми картами в каждой.
- Ставим на все машины Windows 2003 Server (версия 2003-го сервера не имеет значения).
- Настраиваем системы, исходя из таблицы:
Настройки серверов
|
Server 1
|
Server 2
|
Server 3
|
Server 4
|
NetBIOS Name
|
NODE1
|
NODE2
|
NODE3
|
NODE4
|
DNS Name
|
node1.cluster.local
|
node2.cluster.local
|
node3.cluster.local
|
node4.cluster.local
|
Marvel OnBoard
Lan IP
|
192.168.100.1
|
192.168.100.2
|
192.168.100.3
|
192.168.100.4
|
MASK for Marvel OnBoard Lan
|
255.255.255.240
|
255.255.255.240
|
255.255.255.240
|
255.255.255.240
|
DNS Server
|
192.168.100.1
|
192.168.100.1
|
192.168.100.1
|
192.168.100.1
|
Name Connection
|
Private Cluster Connection
|
D-Link 530T IP
|
192.168.0.1
|
192.168.0.2
|
192.168.0.3
|
192.168.0.4
|
MASK for
D-Link 530T IP
|
255.255.255.0
|
255.255.255.0
|
255.255.255.0
|
255.255.255.0
|
Name Connection
|
Public Cluster Connection
|
- Для удобства переименуем название сетевых соединений, как Private и Public Cluster Connection, соответственно для кластерного и общего соединений.
- На первом сервере NODE1 поднимаем Active Directory «cluster.local». Все ставим по умолчанию.
- Проверяем DNS-записи серверов на основном контроллере домена.
- Удаляем зону «.». Поднимаем forward (обратную) зону Active Directory Integrated.
- Включаем остальные машины в домен в качестве Stand Alone Server.
2-й этап. Поднятие NLB-кластера
На этом этапе мы настраиваем службу NLB (Network Load Balancing). Вообще, честно говоря, эта служба имеет очень отдаленное отношение к понятию кластеров. Но уж так сложилось, что Microsoft назвала эту службу службой кластера. Как говорится, Microsoft by Design.
Все операции по созданию такого кластера проводятся на первом сервере с помощью оснастки «Network Load Balancing Manager».
- Переходим на первый сервер. Запускаем NLB Manager.
- Правой кнопкой на «Network Load Balancing Clusters –> Create New Cluster».
- В первом окне заполняем поля с адресом, маской подсети и названием кластера:
Рисунок 2
- На вкладке Cluster IP Address (рис. 3) можно ввести дополнительные адреса кластера. Мы пропускаем этот этап.
Рисунок 3
- На вкладке Port Rules можно указать, на какие порты IP будет отзываться кластер. Здесь можно либо ограничить отклик только на определенные порты вроде порта сервера IIS, либо оставить по умолчанию и настроить позже:
Рисунок 4
- На вкладке Connect выбираем первый сервер NODE1 и выбираем внешний интерфейс «Public Cluster Connection», на котором будет «висеть» служба NLB.
Рисунок 5
- Все настройки первого узла в кластере можно свести в таблицу:
Название параметра
|
Значение
|
IP Address
|
192.168.0.5
|
Subnet Mask
|
255.255.255.0
|
Full Internet Name
|
cluster.cluster.local
|
Cluster Operation Mode
|
Multicast
|
Port Rules
|
Все оставляем по умолчанию
|
Host
|
Node1
|
Interfaces for available for configuring a new cluster
|
Выбираем
«Public Cluster Connection»
|
- По окончании синхронизации данных получаем картину:
Рисунок 6
- После создания кластера из одного узла и генерации самого кластера подключаем остальные 3 узла.
- Правой кнопкой в NLB Manager на созданном кластере –> «Add new host for cluster».
- В окошке «Connect» выбираем по очереди NODE2, NODE3, NODE4 и для каждого из узлов выбираем «Public Cluster Connection».
- После всех процедур и генерации кластера в оснастке NLB Manager добавятся остальные узлы. В этой же оснастке мы сможем изменять параметры кластера, параметры узлов, как показано на рис. 7, 8.
Рисунок 7
Рисунок 8
3-й этап. Настройка IIS, настройка репликации данных
Третий этап по сути заключительный. На нем мы корректируем настройки IIS на всех четырех серверах и поднимаем репликацию содержимого IIS с первого узла в кластере на остальные. Все операции выполняются на первом сервере с помощью оснастки «Distributed File System Manager».
- Проверяем, чтобы на всех узлах был установлен IIS в одинаковой конфигурации. Состав пакетов значения не имеет, просто лучше, если на всех узлах будет одна конфигурация.
- На первом узле создаем директорию «C:IIS».
- Запускаем DFS Manager (Distributed File System Manager).
- На вкладке «Root Type» выбираем тип «Domain Root»:
Рисунок 9
- На вкладке «Host Domain»выбираем наш кластер «cluster.local»:
Рисунок 10
- На вкладке «Host Server» выбираем первый сервер node1.cluster.local:
Рисунок 11
- На вкладке «Root Name» вводим имя корневого каталога:
Рисунок 12
- На вкладке «Root Share» выбираем созданный нами каталог «C:IIS»:
Рисунок 13
- Все настройки корневого каталога можно свести в таблицу:
Название параметра
|
Значение
|
Domain Name
|
cluster.local
|
Host Server
|
node1.cluster.local
|
Root Name
|
|
- После создания корневой директории определяем общий доступ для каталога с содержимым IIS-сервера «C:\Inetpub\wwwroot».
- В DFS Manager выбираем «New Link», вводим имя ссылки. В поле «Path to Target» выбираем директорию с содержимым IIS-сервера, предоставленную в общий доступ, как показано на рисунке:
Рисунок 14
- Остальные операции по созданию конечных ссылок можно будет проводить в оснастке «Distributed File System Manager»:
Рисунок 15
- Далее необходимо создать ссылки на остальные сервера кластера. Для этого на каждом из узлов предоставляем в общий доступ каталоги с содержимым IIS-сервера.
- Выбираем «New Target» и по очереди добавляем оставшиеся три узла:
Рисунок 16
- После создания ссылки на второй узел нам будет предложено настроить репликацию между узлами кластера. Соглашаемся, выбираем первый узел (рис. 17). В качестве топологии репликации определяем ручной режим, как показано на рис. 18.
Рисунок 17
Рисунок 18
- Топологию время репликации мы можем изменить в любое время из оснастки «DFS Manager». Для репликации данных с первого узла на оставшиеся выбираем ручной режим, как показано на рис. 19, 20.
Рисунок 19
Рисунок 20
- После создания всех ссылок необходимо определенное время для предварительной синхронизации данных узлов. Обычно это занимает около 20-30 минут. Далее репликация данных будет проходить мгновенно, ну или почти мгновенно (по внутренней сети кластера). Результаты наших настроек наблюдаем в DFS Manager:
Рисунок 21
- Хочется также упомянуть, что репликация данных между серверами проходит от имени «System Account», поэтому при создании общего доступа к каталогам содержимого IIS-серверов достаточно прав на чтение. По крайней мере, у меня данный режим работал без особых проблем.
4-й этап. Последние штрихи
Последним штрихом у нас будет создание DNS-записи со ссылкой на внешний адрес кластера. Заходим в DNS Manager и создаем запись CNAME –> www.cluster.local –> cluster.cluster.local. Делаем это для того, чтобы при заходе на ссылку www.cluster.local мы автоматически попадали на внешний адрес кластера. В результате NLB будет разруливать ситуацию с нагрузкой на узлы кластера, а DFS поможет автоматически реплицировать данные с первого узла на остальные. Вот вроде и все.
Заключение
Данный документ не является панацеей по созданию кластеров, он лишь отражает мой опыт в создании нестандартных систем. На некоторых рисунках вы видите только два узла. Однако настройки остальных серверов идентичны и не представляют особой сложности.
Хочется выразить глубокую благодарность за неоценимую интеллектуальную помощь Андрееву Павлу, системному администратору Novavox.