Технология AlwaysOn в MS SQL Server предназначена
на повышения доступности ваших баз данных, еще один шаг к отказоустойчивости
системы. Появилась она с версии MS SQL Server
2012 и предрекала в будущем замену
технологии зеркалирования. Но уже сейчас видим, что в MS SQL Server 2014 присутствуют
технология зеркалирование и технология AlwaysOn. Что очень радует.
-кластеризация
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.Открываем вкладку 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 - Переключение на вторичную реплику
На каждой реплики группы доступности 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.
Высокой доступности Вам!
Вы обещали следующую статью об основных операциях с группой доступности AlwaysOn, но так ничего и не написали :)
ОтветитьУдалитьСколько нод в кластере должно быть, для реализации данного решения? Ответьте на pvmaiorov@gmail.com
ОтветитьУдалитьчтобы было отказоустойчивым , то минимум две ноды, но вы можете настроить и на одном узле AOn), только куда будете переезжать.
Удалитьв 2012 вы можете настроить на 5 серверах, в 2014,2016 на 9 серверах в общем, правда есть ограничения сколько реплик возможно в синхронном режиме.
Коллега, а подскажите такой момент после создания группы, и закидывания в неё предположим 2-х баз из имеющихся 5, задал listeners, после чего подключился на него и увидел вновь все те же 5 БД, вместо назначенных мною двух, нормальное ли это поведение? и разграничение либо отдельными инстансами, либо правами доступа единственный в данном случае способ?
ОтветитьУдалитьда, это нормальное поведение, далее регулируется правами для пользователей, что желательней. Листенер это виртуальное имя активного узла AO реального ms sql server. Когда пользователь подключается ему применяется права этого реального инстанса. Если вы переедите на другой узел, то там буду ваши две бд AlwaysOn и бд которые там еще есть именно на втором узле. Просмотр бд можно регулировать разрешением "View any database" для роли public в свойствах сервера
УдалитьДобрый день. Есть такой вопрос: некоторое время назад администратором собирался WSFC для использования Always On. По результату оказалось что с серверами кластера невозможно работать используя IP самих серверов (эту проблему я тогда решил создав AG для каждой ноды, в которой был один сервер). Это так на самом деле или администратор где-то ошибся? В какой именно момент это происходит?
ОтветитьУдалитьГде то у вас ошибка.при настройке always on с узлами кластера работается без изменений, ip адреса их будут старые, кластерные wsfc.
УдалитьЗдравствуйте. Подскажите, пожалуйста, возможно ли установка SQL не на всех узлах кластера? Хотелось бы использовать только два из четырех узлов для AlwaysOn.
ОтветитьУдалитьДа, конечно можно. Можно вообще использовать несколько экземпляров AO на одном кластере. Если нужна помощь, обращайтесь обсудим).
УдалитьСпасибо за ответ. А как будет определяться кворум в этом случае?
УдалитьСмущает вот эта формулировка:
Удалить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.
кворум это кластерная технология WSFC, а AO он работает на основе WSFC но у него свой механизм определения доступности и Failover, хотя и так же используется механизм WSFC. Все будет работать на нескольких узлах. Так же как и кластерный инстанс не обязательно разворачивать на всех узлах Win кластера. WSFC это технология позволяет построить отказоуточивое решение для различных служб: файловая, HyperV ,sql и т.д.
УдалитьДобрый день
ОтветитьУдалитьМожно ли настроить Always On на 5 серверах, на каждом из которых 4 экземпляра скуля? Только ли Enterprise подойдёт или хватит Standard?
Enterprise только. В вашем бы случае я бы подумал , для чего на каждой ноде экземпляр сиквела, может подойдет по только по сайтам, плюс может лучше отдельно группы доступности сделать, когда много экземпляров тоже есть свои минусы.
Удалить