пятница, 16 сентября 2011 г.

SQL 2008 R2 Cluster installation step-by-step: пошаговая инструкция по инсталляции кластера SQL 2008 R2

Инсталляция кластера SQL 2008 R2 достаточно проста, но пропустив некоторые шаги можно потом потратить много времени и усилий на исправление, так что неплохо иметь пошаговую инструкцию по инсталляции. Подразумевается, что уже имеется как минимум один узел (node) с установленным Windows 2008 R2 и подключенный к shared storage

1. Настройка MSDTC
Имеется большое количество приложений, использующих распределенные транзакции. Я считаю хорошим тоном ограничивать диапазон портов, которое может использовать MSDTC (по умолчанию это значение равно 1000-65536, что вызывает усталое отвращение у сетевого администратора). Лучше всего сделать это до кластеризации MSDTC.

Идем в Administrative tools - Component Services - правой мышкой на My Computer и затем Default Protocols, Properties.


Добавляем используемый диапазон портов (я делаю 5000-5200). Теперь сетевому администратору понадобится открыть только порты 135,5000-5200 для использования MSTDC.

2. Настройка shared storage (общие диски)

Идем в управление дисками. Картинка будет выглядеть приблизительно так:


Назначаем буквы и названия для диска кворума (Q)

и первого диска для инстанса (R).

Поскольку инстансов может быть много, а букв для дисков только 26, мы используем mounted volume, чтобы разделить по физическим дискам файлы баз данных и их логи. Для этого мы создадим папки на диске R:

и примонтируем следующий общий диск к папке Log:


Диск R должен выглядеть приблизительно так:

Кстати, MS SQL при установке не может назначить разрешения для mounted volumes, поэтому необходимо сделать это вручную (назначив Full Access на корень этого диска для NT SERVICE\MSSQL$(имя инстанса)). Другие проблемы, возникающие при установке на mounted volumes хорошо описаны здесь.

3. Создание Windows failover cluster

Добавляем необходимые компоненты в Server Manager - Failover Clustering and .NET 3.5:



Теперь можно ткнуть правой мышкой на Failover Cluster Manager и Validate a Configuration.

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


Если все замечательно, то можно начинать создавать кластер:


Выбираем узлы - члены кластера:

Далее выбираем имя кластера и его IP-адрес. Он будет использоваться для подключения консоли управления кластером, НО НЕ ДЛЯ MS SQL.

Кластер создан:

Теперь нужно добавить общие диски:

В разделе Storage появляется симпатичная картинка, типа этой:


Поскольку у нас есть раздел, являющийся Mounted Volume, он зависит от того раздела, на котором находится его смонтированная папка. Необходимо сконфигурировать зависимость (чтобы диск с папкой поднимался раньше). Для этого дважды кликаем на зависимый диск (которому мы НЕ присваивали букву) и создаем зависимость:

Далее необходимо настроить кворум. Выбираем Configure Cluster Quorum Settings:


На Technet можно найти описание различных конфигураций для кворума, но для конфигурации с двумя узлами подходит второй режим:

Выбираем диск для кворума:

Ваша картинка с дисками станет приблизительно такой:


4. Установка MS SQL 2008 R2 на первый узел в кластере

Запускаем setup и выбираем

Как устанавливается MSSQL знает каждый ребенок, поэтому остановимся на ключевых моментах:

В отчете имеется предупреждение о том, что отсутствует MSDTC. Это нормально, мы его установим позже.

Здесь мы задаем имя SQL сервера (по которому к нему будем обращаться) и название инстанса (если мы используем не default):


Далее выбираем рабочий диск для нашего инстанса:


Устанавливаем IP-адрес, по которому будем подключаться к SQL Server:


Не забываем установить пути к файлам (на общих дисках):


Остальное все сами знаете, как сделать. После установки окошко Cluster Manager будет выглядеть приблизительно так:


5. Установка MSDTC в кластере

Тут все просто - выбираем в консоли наш кластер, Services and Applications и в правой части консоли - Add a resource. В списке выбираем Add Distributed Transaction Coordinator.
Затем необходимо добавить зависимости к MSDTC. Ему необходимо сетевое имя и общий диск:


Затем можно правомышкоткнуть на него и Bring this resource online. Оно будет выглядеть приблизительно так:
6. Добавление узла в кластер

Тут тоже все достаточно прозрачно. Для начала желательно сделать Validate a Configuration для имеющейся ноды и той, которую мы планируем включать. Если проверка не выявила никаких проблем, то правой мышкой на раздел Nodes - add node. По окончании установки отчет сообщит, что на свежеподключенной ноде отсутствует MS SQL:

Подключаемся к этой ноде, запускаем setup и выбираем:

Процесс установки аналогичен. Выбираем, к какому кластеру мы ставим узел:
Если вы использовали доменный аккаунт для сервиса (а это рекомендуется), то надо будет еще раз набрать его пароль:

7. Конфигурация Kerberos

В случае, когда в домене используется Kerberos, в качестве сервисного аккаунта использован доменный аккаунт (для встроенных аккаунтов типа Local System конфигурировать Kerberos не требуется) и основной протокол подключения к кластеру TCP/IP (а не Named Pipes), следует дополнительно настроить Kerberos, используя утилиту setspn (подробную информацию и ссылку для скачивания можно найти тут). Вкратце, необходимо выполнить следующие действия:

1. Сделать пинг кластера по FQDN и удостовериться, что имя корректно транслируется DNS сервером:

ping mysqlcluster.mydomain.local

2. Сделать реверсивный пинг и удостовериться, что IP-адрес корректно транслируется DNS сервером в FQDN:

ping -a 10.10.0.1

Если в обоих случаях все получилось хорошо, то

3. Скачать утилиту setspn и сконфигурировать SPN:

setspn -A MSSQLSvc/mysqlcluster.mydomain.local <тут имя доменного аккаунта, под которым стартует сервис>

4. Если SQL cluster instance использует нестандартный порт, то дополнительно надо еще сделать

setspn -A MSSQLSvc/mysqlcluster.mydomain.local:<тут номер порта> <тут имя доменного аккаунта, под которым стартует сервис)

Шаги 1-4 необходимо повторить для каждого установленного инстанса.

По окончанию кластер будет готов.

5 комментариев:

artemk комментирует...

Спасибо за пост! Разжёвано для самых^w очень хорошо, сам бы не допёр наверно, как это поставить.

Andrey комментирует...

Пожалуйста, всегда приятно, когда это кому-то еще пригодилось :) Как я упоминал, в принципе ничего сложного там нет, надо просто не упустить тонкости. Например, этот момент с SPN я добавил относительно недавно, когда очень узкая группа скриптов стала вызывать ошибки аутентификации (до этого несколько лет все работало нормально)

Aleksey O комментирует...

Добрый день!

Спасибо за статью. Очень помогла при генерации кластера на Win2008. Для того кто долго делал бизнес критикал системы на Win2003 очень хорошо показаны новые окошки и менюшки. Прям курс переквалификации)))

Не совсем понятно про MSDTC. Зачем так заморачиваться если heartbeat - это отдельный провод между нодами или строго изолированная сеть в своём VLAN (или даже в отдельном свитче)? Тем более, что SQL это всегда failover cluster, а их почти никогда не делают территориально распределёнными. Максимум в разных зданиях. Поэтому и heartbeat очень редко выводят в общую сеть. Но всё равно замечание про MSDTC нужное!

Еще раз огромное спасибо!!!

Andrey комментирует...

Алексей, я очень рад, что Вам пригодилась данная статья. MSDTC нужен для обеспечения распределенных транзакций, если такого требования нет, то можно вообще обойтись без данного компонента.

_Лисенок_ Foxis комментирует...

Спасибо :)
Пригодилось :)