Декластеризация сервера MSCS Windows 2003 + SQL2005

image

Приветствую всех.

В данной статье я опишу свой опыт по преобразованию «железного» кластера MSCS в виртуальный сервер.

Наш кластер работал с 2008 года, задач накопилось много, в том числе критических, а поднять новый сервер было нереально. К тому же износившееся оборудование вот-вот должно было выйти из строя. Для нас выход был только один – виртуализация сервера в наш ЦОД, на VMware. Причем для меня была поставлена задача — уйти от кластеризации. Изучив кучу информации в сети, подходящей пошаговой инструкции я не нашел, поэтому решил составить свою.

Исходное состояние было следующее:

  • Кластер MSCS на Windows 2003 Enterprise edition SP2. Две ноды в режиме Active\Passive;
  • SQL Server 2005 Standard Edition, работающий в кластерном режиме;
  • Несколько WWW/FTP-сайтов на IIS, не в кластерном режиме. На каждый из 32 Web-сайтов по одному IP Address кластерному ресурсу. Грубо говоря, на сетевую карту навешивались дополнительные IP. Сайты работали только в интрасети;
  • 9 логических дисков с данными, 152 File Share ресурсов, все данные хранятся на дисковом массиве;
  • Настроенный планировщик задач, через него запускались некоторые специфические для нашей отрасли программы.

Для предварительной подготовки и тестирования сервера мы создали виртуальную «лабораторию».
В изолированную виртуальную сеть мы подключили три машины: виртуальная копия активной ноды кластера, виртуальная копия контроллера домена и обычная машина с Windows 7, на которой мы все будем тестировать. Заранее были сконвертированы в VMDK несколько дисков с базами SQL, www/ftp-сайтами, сетевыми папками, кворум диск.

Запускаем машины, настраиваем сетевые карты с такими же TCP/IP параметрами, как и в реальной сети. Подключаем диски к нашему серверу, назначаем соответствующие буквы, перезагружаемся. После этого кластер должен запуститься. Кстати говоря, в режиме одной ноды кластер сразу заработал, но нам он больше не нужен, тем более есть риск, что такая конфигурация будет работать некорректно в виртуальной среде.

Теперь нужно сохранить настройки сетевой карты и параметры сетевых ресурсов, т.к. после удаления кластерной службы их придется восстанавливать вручную. Я предварительно подготовил dump TCP/IP настроек при помощи команды netsh. Сетевые ресурсы я планировал создавать заново, командой «net share». Возможно, есть способ сделать бэкап настроек сетевых шар, но я его не нашел.

Итак, у нас есть файл ip.cfg и shares.txt(список команд net share). Делаем Snapshot, для того чтобы откатиться назад в случае неудачи.

Начинаем декластеризацию


  1. После запуска виртуальной копии второй узел кластера будет уже недоступен. Удаляем его командой Evict Node.

    image

    Может возникнуть такое сообщение, тут без вариантов, нажимаем ОК.

    image
  2. Далее настраиваем SQL. Нам нужно, чтобы он запускался в обычном режиме. В инструкциях, найденных в интернете, предлагают делать копии баз данных, удалять кластеризованный Instance, потом устанавливать Standalone Instance. Я нашел способ проще, через реестр:
    Удаляем ветки

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Cluster
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\Cluster

    image

    Изменяем ключи

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup\SqlCluster = 0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\Setup\SqlCluster = 0

    image

    В SQL Server configuration manager ставим сервисы на автозапуск.

    image
  3. Включаем службы WWW Publishing Service, Task Scheduler на автозапуск. Раньше они запускались вручную только на активной ноде.

    image

    image

  4. Удаляем последнюю ноду из кластера. После этого такие кластерные ресурсы как IP address и File Share удаляются из системы безвозвратно.

    image

  5. Чтобы пользователи потом смогли нормально работать с сетевыми папками, снова делаем правку реестра:
    В разделе реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters
    добавляем параметр DWORD «DisableStrictNameChecking», со значением 1

    image

  6. Восстанавливаем настройки сети:
    Netsh exec c:\ip.cfg

  7. Восстанавливаем сетевые ресурсы из текстового файла shares.txt. Просто копируем команды и вставляем в cmd. Я пробовал сделать bat-ник, но там возникала проблема с отображением русских символов в описаниях ресурсов.

  8. Перезагружаем сервер. После этого проверяем работу всех ftp-, www-, share-ресурсов в нашей лаборатории.


Если все в порядке, значит виртуальный сервер готов к переходу в обычную сеть.

Вкратце о переходе


Нюансы здесь могут быть разные, но принцип один: нужно отключить железный кластер, перенести ресурсы и настройки на новый сервер и включить его. В моем случае ресурсы – это IP-адреса, логические диски с данными, сетевые шары.
Мы не стали полностью удалять железный кластер из сети и AD, чтобы в случае неуспеха можно было все вернуть обратно.

Наши действия:

  1. Отключаем от сети и от дисков железный кластер. IP адреса освобождаются.
  2. Общий объем данных — 1,5 Тб, поэтому перевести сразу все диски в VMDK не получится, информация постоянно обновляется. Мы решили временно подключить их к виртуальному серверу как RDM, тем самым уменьшив время простоя во время перехода. Как показал опыт, лучше подключать их на выключенную машину. После запуска, на эти диски нужно назначить такие же буквы как на старом кластере, у нас, например, базы SQL-сервера запускались с диска S.
  3. Включаем виртуальный сервер в общую сеть, перезагружаем.


После перезагрузки корректно заработали FTP, WWW сервисы, SQL. На все действия ушло чуть меньше часа.
Некоторое время спустя появился глюк с сетевыми шарами, когда некоторые пользователи не могут зайти на них по старому имени кластера. Возможные варианты исправления:

  1. Проверить исполнение пункта 5 инструкции.
  2. Удалить старые записи на WINS-сервере для кластерного имени
  3. При развертывании кластера MSCS, в AD кроме учетных записей первой и второй ноды, создается третья учетная запись с именем кластера: ее описание — «Server cluster virtual network name account». Этой учетке нужно сделать disable.
  4. В DNS сделан алиас по имени кластера на первую ноду.

В настоящий момент виртуальный сервер работает исправно. Никаких глюков не наблюдается. Теперь можно спокойно отпраздновать Новый Год версии 2015. Всем спасибо за внимание.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 4

    0
    Как у вас SQL работает в VMware? Есть ли проблемы? Базы лежат на SAN или на HDD хоста?
      0
      После декластеризации проблем с SQL не было сразу. Спустя 2 недели после запуска по логам все отлично.
      Базы в SAN-сети и регулярно бэкапятся на СХД AVRORA
      0
      Вы могли бы раскрыть смысл задачи ухода от кластеризации? Ведь даже виртуальная среда никак не защищает от сбоев и длительных обновлений ОС. Почему просто не сделали P2V, ну или не добавили в аппаратный кластер две свежих ВМ, и удалили бы из кластера аппаратные серверы.
      Реально интересный вопрос, что сподвигло отказаться от кластера, — вижу что не лицензия на SQL, раз его не пере устанавливали на Standard. Поделитесь?
        0
        Лицензия на SQL имеется.
        Дополнительные виртуальные ноды в наш кластер не добавить — наше хранилище не позволяло организовать одновременный доступ к дискам из виртуальной инфраструктуры.
        + некоторые сложности в организации внутренней кластерной локалки.
        + множество мелких самописных задач, разработчики которых уже у нас не работают. Заново все это не собрать на новой ноде.

        В итоге декластеризация показалась нам самым простым и надежным вариантом.

      Only users with full accounts can post comments. Log in, please.