четверг, 17 апреля 2014 г.

Настройка MS SQL Server AlwaysOn. Шаг за Шагом.


Технология AlwaysOn в MS SQL Server предназначена на повышения доступности ваших баз данных, еще один шаг к отказоустойчивости системы. Появилась она с версии MS SQL Server 2012  и предрекала в будущем замену технологии зеркалирования. Но уже сейчас видим, что в MS SQL Server 2014 присутствуют технология зеркалирование  и технология AlwaysOn. Что очень радует.

 В технологии AlwaysOn присутствуют элементы сразу несколько технологий высокой доступности сервера  MS SQL Server:

-кластеризация
 AlwaysOn как и кластер MS SQL Server имеет общее имя  и IP- адрес для экземпляров MS SQL Server , так же технология AlwaysOn работает как кластерная служба Windows. Для подключения клиентов к базе данных необходимо указать только один IP адрес.

- зеркалирование
В технологии AlwaysOn за основу взята технология зеркалирования MS SQL Server. Присутвует первичная реплика и до 4(3 в синхронном режиме) вторичных реплик(в MS SQL Server 2014 до 8 реплик). Возможен режим работ реплик: асинхронный и синхронный.

- доставка журналов (log shipping)
На вторичные реплики при инициализации база данных доставляется как при log shipping –е, т.е автоматически делается полная резервная копия  и журнал транзакций на общий ресурс и автоматически восстанавливается на вторичной реплике. Вторичные реплики доступны для чтения данных, как и при доставке журналов.

Небольшой перечень преимуществ технологии AlwaysOn:

- поддерживается автоматический переход на вторичные реплики
- вторичные реплики возможно использовать для чтения данных
- вторичные реплики возможно использовать для снятия резервных копий без создания нагрузки на первичную реплику
- поддерживается автоматическое восстановление страниц
-нет необходимости использования общего дискового пространства для баз данных (для гео-кластеров это исключает использование лицензии для репликации СХД к примеру на оборудование HP)

Итак, изучив немного теории и узнав преимущества технологии MS SQL Server

AlwaysOn, постараемся его настроить.

Необходимые требования:
1)Windows кластер (WSFC)  - MS SQL Server AlwayOn настраивается на windows кластере
2)MS SQL Server редакции Enterprise, который должен быть установлена на каждом узле Windows кластера(WSFC).
3)Наличие AD. Без этого и WSFC не настроите.
4) На установленных MS SQL Server-ах должны быть настроены одинаковые параметры сортировки

Более подробно об ограничениях и возможностях написано на сайте MSDN.

 После установки MS SQL Server, необходимо включить поддержку AlwaysOn High Availability  Groups на узлах кластера: открываем SQL Server Configuration Manager, выбираем вкладку  «AlwaysOn High Availability  » , активируем параметр «AlwaysOn High Availability  Groups».







Заодно здесь проверяем еще раз, работает ли MS SQL Server под доменной учетной записью.
Теперь создадим саму группу AlwaysOn.
Открываем вкладку AlwaysOn  High Availability, щелкаем правой кнопкой на «Availability Groups» выбираем «New Availability Group Wizard».

Указываем название группы доступности:

Под данным именем будет работать кластерная группа AlwaysOn , а так же служить именем для управлением доступности.

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

Далее необходимо включить реплики в группу AlwaysOn их настройки:


На данном изображении указаны, что сервер srv1\sql2012 является первичной репликой, srv2\sql2012  -вторичная реплика, настроена автоматическая обработка отказов(Failover) в обоих направлениях, режим работы синхронный и реплики доступны для чтения.

Во вкладке «Endpoints» указываются настройки конечных точек  зеркалирования , их порты и возможность шифрования передаваемых данных:

В следующей вкладке указываются настройки возможности снятия резервных копий:


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

Следующая вкладка, очень важная - указывается имя прослушивателя, т.е сетевое имя к которому будут подключаться пользователи, его порт и IP  адрес.





Необходимо указать имя прослушивателя и присвоит ему свободный IP адрес, желательно статистический не DHCP адрес. Порт так же лучше указать стандартный MS SQL server-ый 1433, либо в целях безопасности другой.

Если ноды Windows кластера находятся в разных подсетях, то нужно указать два IP адреса.

В следующем окне указываем сетевое имя каталога, куда будут создаваться копии баз данных для инициализации группы доступности AlwaysOn.


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




После этого создается группа доступности.





Группа доступности AlwaysOn создана
Предупреждение указанное на скриншоте, сообщает о неточной конфигурации права голоса кворума.

Данное сообщение появляется при настройке AlwayOn на серверах на ОС Windows2008r2. Для решения данной неточности необходимо скачать обновлении KB2494036. Его нужно установить на всех нодах WFCS . а установить параметры голосов на одной из нод.

Только в описании указано устанавливать параметр голоса 0, но у меня с данным параметром на заработало, а заработало с параметром 1. В результате на запрос :

SELECT  member_name, member_state_desc, number_of_quorum_votes

 FROM   sys.dm_hadr_cluster_members;

Параметр number_of_quorum_votes должен показывать 1 для всех нод и свидетеля кластера. В Window 2012 данные  параметры устанавливаются сразу .

Так же еще одно важное  замечание , при создание имя прослушивателя группы доступности AlwaysOn (в примере это “alwayslistener1”), регистрируется DNS имя компьютера в оснастке AD в каталоге Computers. Для этого кластерное имя должно имеет полные права на создание объекта в данном каталоге. Права выставляются в консоли ADSI


После создания группы доступности, у нас в консоли кластера появился сервис нашей группы доступности:


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

Управление группой AlwaysOn происходит в MS SQL Server Management Studio, правая кнопка на объекте «AlwaysOn High Availablity» выбрать «ShowDashboard»




Основные параметры:
1 – Название группы доступности
2 – Имя прослушивателя
3 – Статус группы доступности
4 – Тип Failover –а
5 – Статус первичной реплики
6 – Статусы баз данных в группе доступности
7 -  Переключение на вторичную реплику

upd. 13.07.2016
еще одно важный шаг был пропущен.
Чтобы использовать вторичные реплики только для чтения для коннектов с параметром подключения
applicationintent=readonly
 
необходимо настроить роутинг.
На каждой  реплики группы доступности AlwaysOn выполняет скрипт:
 
ALTER AVAILABILITY GROUP [srv_alwaysOn Group]
MODIFY REPLICA ON
'srv1' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('srv2,'srv1')));

ALTER AVAILABILITY GROUP [srv_alwaysOn Group]
MODIFY REPLICA ON
'srv2' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://srv1.domain.net:1433'));

 После этого можно проверить коннект только для чтения, запускаем MS SQL Management Studio, указываем прослушиватель и открываем меню Options, добавляем строку
Initial Catalog=DB NAME;ApplicationIntent=ReadOnly;
где "DB NAME"  - это база данных которая находится в группе доступности с репликой для чтения.



После успешного подключения проверяем нахождения нашего коннекта:
 
select  SERVERPROPERTY ('ComputerNamePhysicalNetBIOS')
в результате должны получить имя сервера с вторичной репликой.

 С основными моментами настройки группы доступности AlwaysOn разобрались. В следующей статье опишу основные операции с группой доступности AlwaysOn.
Высокой доступности Вам!

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

  1. Вы обещали следующую статью об основных операциях с группой доступности AlwaysOn, но так ничего и не написали :)

    ОтветитьУдалить
  2. Сколько нод в кластере должно быть, для реализации данного решения? Ответьте на pvmaiorov@gmail.com

    ОтветитьУдалить
    Ответы
    1. чтобы было отказоустойчивым , то минимум две ноды, но вы можете настроить и на одном узле AOn), только куда будете переезжать.
      в 2012 вы можете настроить на 5 серверах, в 2014,2016 на 9 серверах в общем, правда есть ограничения сколько реплик возможно в синхронном режиме.

      Удалить
  3. Коллега, а подскажите такой момент после создания группы, и закидывания в неё предположим 2-х баз из имеющихся 5, задал listeners, после чего подключился на него и увидел вновь все те же 5 БД, вместо назначенных мною двух, нормальное ли это поведение? и разграничение либо отдельными инстансами, либо правами доступа единственный в данном случае способ?

    ОтветитьУдалить
    Ответы
    1. да, это нормальное поведение, далее регулируется правами для пользователей, что желательней. Листенер это виртуальное имя активного узла AO реального ms sql server. Когда пользователь подключается ему применяется права этого реального инстанса. Если вы переедите на другой узел, то там буду ваши две бд AlwaysOn и бд которые там еще есть именно на втором узле. Просмотр бд можно регулировать разрешением "View any database" для роли public в свойствах сервера

      Удалить
  4. Добрый день. Есть такой вопрос: некоторое время назад администратором собирался WSFC для использования Always On. По результату оказалось что с серверами кластера невозможно работать используя IP самих серверов (эту проблему я тогда решил создав AG для каждой ноды, в которой был один сервер). Это так на самом деле или администратор где-то ошибся? В какой именно момент это происходит?

    ОтветитьУдалить
    Ответы
    1. Где то у вас ошибка.при настройке always on с узлами кластера работается без изменений, ip адреса их будут старые, кластерные wsfc.

      Удалить
  5. Здравствуйте. Подскажите, пожалуйста, возможно ли установка SQL не на всех узлах кластера? Хотелось бы использовать только два из четырех узлов для AlwaysOn.

    ОтветитьУдалить
    Ответы
    1. Да, конечно можно. Можно вообще использовать несколько экземпляров AO на одном кластере. Если нужна помощь, обращайтесь обсудим).

      Удалить
    2. Спасибо за ответ. А как будет определяться кворум в этом случае?

      Удалить
    3. Смущает вот эта формулировка:
      The quorum for AlwaysOn Availability Groups is based on all nodes in the WSFC cluster regardless of whether a given cluster node hosts any availability replicas.

      Удалить
    4. кворум это кластерная технология WSFC, а AO он работает на основе WSFC но у него свой механизм определения доступности и Failover, хотя и так же используется механизм WSFC. Все будет работать на нескольких узлах. Так же как и кластерный инстанс не обязательно разворачивать на всех узлах Win кластера. WSFC это технология позволяет построить отказоуточивое решение для различных служб: файловая, HyperV ,sql и т.д.

      Удалить
  6. Добрый день
    Можно ли настроить Always On на 5 серверах, на каждом из которых 4 экземпляра скуля? Только ли Enterprise подойдёт или хватит Standard?

    ОтветитьУдалить
    Ответы
    1. Enterprise только. В вашем бы случае я бы подумал , для чего на каждой ноде экземпляр сиквела, может подойдет по только по сайтам, плюс может лучше отдельно группы доступности сделать, когда много экземпляров тоже есть свои минусы.

      Удалить