SQL Server HADR. Failover Clustering

SQL Server Failover Cluster

SQL Server в отказоустойчивом кластере, в своей минимальной конфигурации, представляет из себя 2 ноды с sql server-ом на борту и одно общее файловое хранилище (SAN - Storage Area Network), которое хранит все файлы баз данных. При этом только одна из нод постоянно является активной (active node). Вторая нода (passive node) находится в режиме ожидания и в случае какого-то сбоя на активной ноде берет всё управление на себя. Между нодами обычно настраивают внутреннюю сеть (heartbeat network), которая позволяет определить "жив" ли сосед и в случае чего подменить его на боевом дежурстве. Одним из главных преимуществ отказоустойчивого кластера является инкапсуляция его работы от пользователя, которая осуществляется при помощи наличия единого(виртуального) ip-адреса (единая точка доступа к базе для пользователя) для всего кластера (схема, представленная ниже, взята вот отсюда)
Описывать как настраивается отказоустойчивый SQL Server кластер я не буду - в сети достаточно подобного материала (в конце статьи приведены ссылки). Остановлюсь лишь на ключевых моментах.

Какие редакции SQL Server 2012 поддерживают?

SQL Server 2012 Enterprise - до 16 нод в кластере. Поддерживает multi-subnet кластер.
SQL Server 2012 BI, Standard - до 2 нод в кластере.

Какие редакции Windows поддерживают кластер?

WinServer 2008R2 Enterprise, Datacenter - поддерживают как обычный, так и multi-subnet кластер
WinServer 2008 Enterprise, Datacenter - поддерживают только обычные кластеры

Какие режимы работы поддерживает?

SQL Server Cluster поддерживает только отказоусточивый(failover) кластер, то есть работает в режиме Active-Passive.

Какие службы MS SQL Server можно развернуть в кластере?

Из коробки в кластере работают все сулжбы, кроме SSIS, а именно:

  • Database Engine + SQL Server Agent
  • SSAS
  • SSRS
Для SSIS также можно настроить кластер, но придется немного потрудиться.

Как добавить новую службу MS SQL Server к существующему кластеру?

Пишут, что никак ;)
SQL Server 2008 does not support adding features to an existing failover cluster instance, so Analysis Services cannot be added to an existing instance of SQL Server. To share a resource group with an instance of SQL Server, you must choose to install Analysis Services during the initial installation of SQL Server
Доверяй, но проверяй.
Попробуемсъ. Если выбрать обычный способ установки службы (Add feature to existing server), то на этапе проверки правил инсталяции (Installation rules), возникнет ошибка Rule "Existing clustered or cluster-prepared instance" failed. 
Но не стоит сразу отчаиваться. Попробуем воспользоваться следующей инструкцией.
Для обхода данного правила придётся воспользоваться грязным хаком, отключив это правило при запуске инсталятора:

Setup.exe /SkipRules=StandaloneInstall_HasClusteredOrPreparedInstanceCheck /Action=Install

Что происходит при падении активной ноды?

При падении активной ноды, все клиентские подключения также отваливаются. При этом все незакрытые транзакции откатываются. Кластер автоматически определяет, что активная нода отвалилась и переключает все сервисы(одним из них является сервис MS SQL Server-а) на резервную ноду. Восстановление работы MS SQL Server-а на резервной ноде происходит достаточно быстро (секунды-минуты, в зависимости от объема баз данных и параметров их настройки). То есть, получается, что кластер не обеспечивает 100% uptime.

Включение/исключение нод в/из кластер(а)

Производится при помощи инсталлера MS SQL Server операциями:

  • Installation -- Add node to SQL Server failover cluster
  • Maintenance -- Remive node from SQL Server failover cluster

Для чего нужен кворум?

Кворум - диск в shared storage, необходимый для работы windows-кластера. Называют также общий кворум.

MS SQL Server multi-subnet clustering

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

Плюсы кластера

  1. При выходе из строя рабочего сервера с базой данных (могут быть как проблемы с железом, так и проблемы с программным обеспечением), переключение на резервный сервер осуществляется практически моментально. Время простоя минимально.
  2. Кластер оперирует всем sql-cервером, а не отдельными базами данных. Поэтому при переключении на резервную ноду не возникнет, например, проблем с логинами и паролями, а также другими настройками и параметрами, которые хранятся на уровне сервера.
  3. Единый connection string. При переключении базы данных на другую ноду, клиенту не нужно изменять строку подключения -- она едина для всего кластера.

Минусы кластера

  1. Нельзя использовать резервную ноду на чтение (аля реплика на чтение). Фактически вторая нода постоянно простаивает.
  2. Необходима дополнительная серверная лицензия.
  3. Необходим SAN.

Дополнительные материалы:

  1. Подробное описание процесса установки и настройки кластера http://www.sqlcmd.ru/sql_cluster_on_vmware_workstation-part01.html
  2. http://www.brentozar.com/archive/2012/02/introduction-sql-server-clusters/
  3. SQL Server 2012 Failover Cluster Installation
  4. Getting Started with SQL Server 2008 R2 Failover Clustering