Всегда ли AlwaysOn всегда Always?

8

Мы создали отказоустойчивый кластер Windows, а затем добавили два экземпляра SQL Server в качестве узлов отказоустойчивого кластера SQL Server.

Мы настроили серверы на использование «Группы доступности AlwaysOn» в SQL Configuration Manager.

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

Запрос прервался без соединения, и сервер показал, что недоступен в течение примерно 20 секунд, прежде чем узел был очищен и новый узел вступил во владение.

Я сделал это неправильно? Как я должен был настроить это так, чтобы была небольшая потеря соединения?

AlwaysOn не всегда включен?

Дэйв Клэри
источник

Ответы:

19

У вас здесь куча разных вопросов.

Q: Что такое «Всегда включен»?

Microsoft использует этот бренд (который был написан без пробела до 2016 года) для описания двух разных функций:

  • Отказоустойчивые кластерные экземпляры (FCI) - то, что ваш дедушка называл активным / пассивным кластером
  • Группы доступности (AG) - как зеркальное отображение базы данных, но в некоторых случаях работает с группами баз данных (но не с системными базами данных)

Используйте эти термины, чтобы описать, какую конкретную функцию Always On вы используете.

Q: В случае сбоя он будет всегда включен?

Ни FCI, ни AG на самом деле не всегда включены. Во время восстановления после сбоя выполняющиеся транзакции не будут выполнены, а повторные попытки подключения могут завершиться неудачей в течение 5-60 секунд (или более). Вы должны встроить логику изящных повторов в свои приложения или встроить инструменты с ухудшенными возможностями, как это делает переполнение стека .

Q: Как мне настроить Always On?

Это сильно меняется в зависимости от:

  • Какую функцию AO вы используете (FCI или AG)
  • Количество узлов в кластере
  • Как вы хотите обрабатывать кворум (голосование)
  • Используете ли вы автоматический переход на другой ресурс через слушателя или имя виртуального компьютера

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

Q: Разве это не просто вопрос установки флажка Always On?

Нет.

Брент Озар
источник
3

Вы можете путать AG «Always ON» (группы доступности) с FCI (экземплярами отказоустойчивого кластера), оба из которых зависят от WSFC (отказоустойчивый кластер Windows Server).

Нажатие «всегда включено» не гарантирует, что теперь у вас есть конфигурация AG. Вы должны установить асинхронную синхронизацию, реплики только для чтения / отработки отказа, установить приоритет и принять другие соображения, например, поддерживает ли приложение эту конфигурацию. Например, ваше приложение может использовать кросс-транзакции базы данных MSDTC, которые не поддерживаются и могут привести к неисправимому повреждению, требующему резервного копирования.

Сейчас вы испытываете отказоустойчивость FCI. Это нормально. Это останавливает службы на одном узле и запускает службы на другом узле. Это работает на уровне INSTANCE. Решение AG настраивается для каждой базы данных, а службы работают на обоих узлах. SQL использует API-интерфейсы WSFC для синхронизации данных на репликах, и база данных переключается на эту реплику; обратите внимание, не экземпляр.

Возможно, вы захотите сделать много тестов по этому вопросу перед развертыванием в производство.

Али Разеги
источник
1

Мой предпочтительный метод тестирования аварийного переключения в AG - просто отключить текущий первичный. Просто отключите его, отключите от консоли, восстановите сеть, убейте службу SQL серебряной пулей, что угодно. Вы не должны тестировать его из ничего, похожего на GUI, потому что хаос работает не так.

RelativitySQL
источник
Лучше всего сделать это до конца финансового года - у вас будет много людей, которые будут помогать таким образом проверять вторичные системы. Серьезно, вы правы, хотя это должно быть по крайней мере на начальном этапе, прежде чем система будет запущена. В наилучших возможных сценариях вы должны переключаться с «Первичного» на «Вторичный» каждый раз, когда обновляете системы, так что обе системы используются на регулярной основе (но вы должны быть уверены, что ваше оборудование, пропускная способность и т. Д. сопоставимы).
RDFozz
0

Ответ сообщества вики :

Это нормальное и ожидаемое поведение для кластера.

Приложение несет ответственность за корректное отключение. Любые транзакции в полете будут потеряны, так как между серверами реплицируются только совершенные транзакции.

оборота user126897
источник