Создание группы доступности AlwaysON на основе кластера Failover

Коротко о главном: каждый узел группы доступности должен быть членом отказоустойчивого кластера Windows. Каждый экземпляр SQL Server может иметь несколько групп доступности. В каждой группе доступности может быть до 8 вторичных реплик.

Что это и зачем требуется

Группы доступности AlwaysOn — это решение высокой доступности и аварийного восстановления, является альтернативой зеркальному отображению баз данных на уровне предприятия. Если БД не справляется с потоком запросов или есть опасения, что при сбое на сервере пропадут ценные данные, есть смысл использовать это решение. Группы доступности AlwaysOn могут отвечать за выполнение сразу двух задачи: высокий уровень доступности обеспечивает бесперебойную работу системы, а нагрузка по чтению из БД частично выполняется на репликах.

Создание группы доступности может понадобиться, если вам необходимо:

  • Создать избыточную доступность баз данных (в этом случае рекомендуем располагать ноды в геоудалённых дата-центрах, т.к. избыточная доступность предполагает доступность БД при любых технических неполадках на любой из нод);

  • Увеличить быстродействие ответов баз данных по принципу горизонтального расширения (в этом случае одна нода в кластере является мастером, осуществляющей операции записи и чтения, остальные ноды работают в режиме слушателей и позволяют считывать данные при запросах обращения)

При отказе основой реплики, кластер проголосует за новую основную реплику и Always On переведёт одну из вторичных реплик в статус основной. Так как при работе с Always On пользователи соединяются с прослушивателем кластера (или Listener, то есть специальный IP-адрес кластера и соответствующее ему DNS-имя), то возможность выполнять write-запросы полностью восстановится. Прослушиватель также отвечает за балансировку select-запросов между вторичными репликами.

Подготовка инфраструктуры

Сначала необходимо создать виртуальную машину и пользователей. В VDC создаем 3 ВМ, даём имена согласно ролей, выполняем настройки кастомизации.

cca6cfb7cf386ad383b28e6fcdc7ff20.png

После этого переходим к этапу настройки контроллера домена. Устанавливаем роли AD, DNS, Failover Cluster.

e90a78f10f43de63a181c9ad667d3c14.png852944b2a46dd54c30281e7f667864d3.png

Устанавливаем роль контроллера домена

03a99335747ef71b647e038eee33bf96.png

Создаём в AD компьютеры  ND01 и ND02.

cf3056303c7842d8ea9ba458eddcf99e.png

На ВМ ND01 и ND02 ставим компонент Failover Cluster

ad73389ad3985e50f0f752b241b94274.png

Теперь переходим к созданию кластера отказоустойчивости. На контроллере домена DC01 создаём кластер отказоустойчивости и добавляем в него наши ноды.

d2ed78643bcfd40b79a98657313ad95d.png

Даём имя кластеру.

1480a823b98b60b2839f8f848935bd49.png

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

08b5d1dacd925be96aadea53530cf3c3.png

Создание кластера завершено.

2987cf84e5bdcb54d01b2bfc5ca7ece1.png

Создание свидетеля (Quorum Witness Share)

Переходим к настройке кворума. Для этого выбираем пункты, которые указаны на скриншоте.

8a239db3381fc52f9967b1c7b0a910f4.png

В конфигурации свидетеля кворума указываем file share.

60d3e8e18f35ccd4939c241e959f3dc8.png844ce224fae016a36cb5f9d4c2956804.png

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

2280a80769e58acfff9e958e3c13391c.png

Если после создания свидетеля у вас возникнет ошибка как на примере ниже,

c9079c6caf3518406111551521f83eeb.png

…то в этом случае необходимо проверить настройки прав доступа к сетевой директории, указанной в настройках свидетеля.

d3f6e7758ff580816df05e04f1512f0f.png

Переходим к установке MS SQL 2015 Enterprise на ноды в кластере. Перед установкой модуля необходимо отключить брандмауэр на работу в доменной сети на всех ВМ, участвующих в кластере.

9244289a4a223d2e085f40f8156d464f.png

Устанавливаем MS SQL в standalone режиме, без дополнительных модулей.  При выборе пользователя для примера берём Администратора доменной сети. Для боевых серверов рекомендуем сделать отдельного пользователя. Наверное, не нужно объяснять, почему это важно.

b1340ab8140b6671cd8c7aebf2c10e60cdb822c08dade36e3cc7b5a9fe926269.png

Затем необходимо установить SQL Management Studio на обе ноды в кластере.

Добавление тестовой базы данных в MSSQL

На ноде ND01 устанавливаем тестовый образец базы данных. Имя тестовой БД будет Bike-Store. Тестовая БД взята отсюда.

fd4df872cc37531e61b8c2ad4f4deb03.png5dffd8354b5d79fd40845b77e748f640.png

После установки БД выделяем созданную базу данных, после чего выбираем файл БД при помощи комбинации Ctrl+O.

489c439a591c08c6f480d1e6558baada.png

После открытия файла нажимаем «Выполнить»

45fc73f81196d8fe725d6053871b1766.png

Когда добавили новую базу, необходимо наполнить её. Для этого открываем файл BikeStores Sample Database — load data.sql  и добавляем его таким же методом. В конце операции должно появиться сообщение, что «Запрос успешно выполнен».

dd663f1ef873a1c8ea8af4b1657223a1.png

Важно! Перед развертыванием группы доступности обязательно делаем резервную копию БД, в противном случае не получится создать группу доступности

2e1b846e36cce994fe58709e3cacfb09.png

Настройка Always On в MS SQL Server

Для каждой ноды необходимо включить поддержку схемы AlwaysON в SQL Server Configuration Manager в свойствах экземпляра.

a69c7bc9d054e7bd112c44888f0cf2e7.png

На ноде ND01 В SQL Server Management Studio выберите узел «Always On High Availability» и запустите мастер настройки группы доступности (New Availability Group Wizard).

69a06b6cb5d584a41fd33e83670d0859.png

Присваиваем имя нашей группе доступности: BikeStores-AG

c9a3a4a778cb15fd5b038bdda3f5934b.png

Нажмите «Добавить реплику»  и подключитесь к второму серверу SQL. Таким образом можно добавить до 8 серверов.

Ключевые параметры

  • Исходная роль — роль реплики на момент создания группы. Может быть Primary и Secondary;

  • Автоматический переход — если база данных станет недоступна, Always On переведёт primary роль на другую реплику. Отмечаем чекбокс;

  • Режим доступности — возможно выбрать Synchronous Commit или Asynchronous Commit. При выборе синхронного режима транзакции, поступающие на primary реплику, будут отправлены на все остальные вторичные реплики с синхронным режимом. Primary реплика завершит транзакцию только после того, как реплики запишут транзакцию на диск. Таким образом исключается возможность потери данных при сбое primary реплики. При асинхронном режиме основная реплика сразу записывает изменения, не дожидаясь ответа от вторичных реплик;

  • Вторичная реплика для чтения — параметр, задающий возможность делать select-запросы к вторичным репликам. При значении yes, клиенты даже при соединении без ApplicationIntent=readonly смогут получить read-only доступ;

  • Для фиксации требуются синхронизированные получатели — число синхронизированных вторичных реплик для завершения транзакции. Нужно выставлять в зависимости от количества реплик. Имейте в виду, что, если вторичных синхронизированных реплик станет меньше указанного числа (например, при аварии), базы данных группы доступности станут недоступны даже для чтения.

5df82df38292afeb8c36b8a88b56f27e.png

На вкладке Параметры резервного копирования можно выбрать откуда будут делаться бекапы. Оставляем всё по умолчанию — Предпочитать вторичную.

46317d0a6100998e98ff66b4e71d8fcf.png

Указываем имя слушателя группы доступности, порт и IP-адрес.

caa486d17f5ef1d791fe8abf5b78e611.png

Если все тесты во время окончания прошли успешно, то нажимаем кнопку «Далее».

e648dd3883ad79bdff7bb216dfe02962.png497da590721217ee9682ae0ad86873c8.png

На этом первичная настройка группы доступности AlwaysON завершена. Вы можете провести тесты отказоустойчивости, попеременно отключая каждую ноду в кластере, а также давая простые запросы select, insert.

Надеемся, наша инструкция по создании групп доступности поможет вам обеспечить надлежащий уровень работоспособности вашей ИТ-инфраструктуры. В дальнейшем мы планируем выпустить и другие варианты сценариев. Если вам интересны какие-то нюансы — напишите о них в комментариях. Спасибо за внимание!

Киберпонедельник-2021

В России стартовала распродажа «Киберпонедельник-2021». Мы тоже решили принять участие в этой акции, и на три дня открыли бесплатный доступ к видеокурсу «Управление виртуальным дата центром и сетями в vCloud Director (VMware)» специально для тех, кто хочет разобраться в этой теме и научиться управлять облачной инфраструктурой.

В результате вы и ваши сотрудники сможете эффективнее использовать облачные платформы и больше не будете не путаться при работе с виртуальными машинами.

Курс уже получил 91 оценок от 366 студентов, средняя оценка — 4,5. Сейчас он снова бесплатно доступен на Udemy! Регистрируйтесь и учитесь!

Что ещё интересного есть в блоге Cloud4Y

→ В тюрьму за приложение

→ 2020 — год всемирной мобильности (как бы иронично это ни звучало)

→ Виртуальные машины и тест Гилева

→ Китайские регуляторы хотят получать от ИТ-гигантов данные о потребительских кредитах

→ Как настроить SSH-Jump Server

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

© Habrahabr.ru