Failover Policy for Failover Cluster Instances
Область применения: SQL Server
В экземпляре отказоустойчивого кластера SQL Server (FCI) только один узел может принадлежать группе ресурсов отказоустойчивого кластера Windows Server (WSFC). Клиентские запросы в FCI обслуживаются через этот узел. В случае сбоя и неуспешного перезапуска владельцем группы становится другой узел WSFC в экземпляре FCI. Этот процесс называется отработкой отказа. SQL Server повышает надежность обнаружения сбоев и предоставляет гибкую политику отработки отказа.
FCI SQL Server зависит от базовой службы WSFC для обнаружения отработки отказа. Таким образом, два механизма определяют поведение отработки отказа для FCI: первый — это собственные функции WSFC, а последний — функциональные возможности, добавленные программой установки SQL Server.
Кластер WSFC поддерживает конфигурацию кворума, что гарантирует наличие уникального назначения отработки отказа при автоматическом переходе на другой ресурс. Служба WSFC определяет, всегда ли кластер имеет оптимальную работоспособность кворума, и соответствующим образом переводит группу ресурсов в режим «в сети» и «вне сети».
Активный экземпляр SQL Server периодически сообщает набор компонентов диагностика группе ресурсов WSFC по выделенному подключению. Группа ресурсов WSFC соблюдает политику отработки отказа, в которой определены условия, вызывающие перезапуск и отработку отказа.
В этом разделе описывается второй из представленных выше механизмов. Дополнительные сведения о работе WSFC для настройки кворума и обнаружения работоспособности см. в статье Режим кворума и участвующая в голосовании конфигурация WSFC (SQL Server).
Внимание
Автоматический переход на другой ресурс с участием FCI не допускается в группе доступности AlwaysOn. Однако допускается переход на другой ресурс вручную с участием FCI.
Общие сведения о политике отработки отказа
Процесс отработки отказа можно разделить на следующие этапы.
Мониторинг состояния работоспособности
Для FCI отслеживаются три типа состояния работоспособности.
Состояние службы SQL Server
Служба WSFC отслеживает начальное состояние службы SQL Server на активном узле FCI, чтобы обнаружить момент ее остановки.
Скорость ответа экземпляра SQL Server
В момент запуска SQL Server служба WSFC использует библиотеку ресурсов компонента ядра СУБД SQL Server для создания нового соединения в отдельном потоке, который используется исключительно для мониторинга состояния работоспособности. Это гарантирует наличие в экземпляре SQL Server необходимых ресурсов для сообщения о собственном состоянии работоспособности в случае высокой загрузки. С помощью этого выделенного соединения SQL Server запускает системную хранимую процедуру sp_server_diagnostics (Transact-SQL) в режиме повторения для периодической передачи сведений о состоянии работоспособности компонентов SQL Server в библиотеку ресурсов.
Библиотека DLL ресурсов определяет скорость ответа экземпляра SQL Server, оценивая время ожидания проверки работоспособности. Свойство HealthCheckTimeout определяет, сколько времени библиотека ресурсов будет ожидать получения данных от хранимой процедуры sp_server_diagnostics до того, как экземпляр SQL Server будет признан не отвечающим на запросы службы WSFC. Это свойство настраивается с помощью T-SQL, а также в оснастке «Диспетчер отказоустойчивости кластеров». Дополнительные сведения см. в разделе Configure HealthCheckTimeout Property Settings. В следующих пунктах описывается влияние этого свойства на значений времени ожидания и интервала повтора.
Библиотека ресурсов вызывает хранимую процедуру sp_server_diagnostics и устанавливает интервал повтора равным одной трети значения параметра HealthCheckTimeout.
Если хранимая процедура sp_server_diagnostics выполняется слишком медленно или не возвращает данные, библиотека ресурсов будет ожидать в течение времени, равного интервалу HealthCheckTimeout, а затем сообщит службе WSFC об отсутствии ответа экземпляра SQL Server.
Если выделенное соединение теряется, то библиотека ресурсов повторяет подключение к экземпляру SQL Server в течение интервала, указанного в свойстве HealthCheckTimeout, а затем сообщает службе WSFC об отсутствии ответа экземпляра SQL Server.
Диагностика компонентов SQL Server
Системная хранимая процедура sp_server_diagnostics периодически собирает диагностические данные о компонентах в экземпляре SQL Server. Собранные диагностические данные отображаются в виде строки для каждого из следующих компонентов и передаются в вызывающий поток.
доступом
resource
query process
io_subsystem
события
Система, ресурс и компоненты процесса запроса используются для обнаружения сбоя. Подсистема io_subsytem и компоненты событий используются только для диагностики.
Каждый набор строк данных также записывается в журнал диагностики кластеров SQL Server. Дополнительные сведения см. в статье Просмотр и чтение журнала диагностики экземпляра отказоустойчивого кластера.
Совет
Хранимая процедура sp_server_diagnostics применяется в технологии SQL Server AlwaysOn, но также доступна для использования в любом экземпляре SQL Server для обнаружения и устранения проблем.
Определение сбоев
Библиотека ресурсов компонент ядра СУБД SQL Server определяет, является ли обнаруженное состояние работоспособности условием сбоя, используя свойство FailureConditionLevel. Свойство FailureConditionLevel определяет, какие обнаруженные состояния работоспособности вызывают перезапуск или отработку отказа. Доступно несколько уровней вариантов, от запрета автоматического перезапуска или отработки отказа до всех возможных условий, приводящих к автоматическому перезапуску или отработке отказа. Дополнительные сведения о настройке этого свойства см. в разделе Configure FailureConditionLevel Property Settings.
Условия сбоя устанавливаются по прогрессирующей шкале. Каждый уровень, с 1 по 5, включает все условия предыдущих уровней, а также собственные дополнительные условия. Это означает, что с каждым уровнем вероятность отработки отказа или перезапуска повышается. Уровни условий сбоя описаны в следующей таблице.
Ознакомьтесь со статьей sp_server_diagnostics (Transact-SQL), поскольку эта системная хранимая процедура играет важную роль в уровнях условий сбоя.
Уровень | Условие | Description |
---|---|---|
0 | Без автоматической отработки отказа или перезапуска | Указывает, что при любых условиях сбоя отработка отказа или перезапуск не будет выполняться автоматически. Этот уровень предназначен только для обслуживания системы. |
1 | Отработка отказа или перезапуск при отключении сервера | Указывает, что при возникновении одного из следующих условий будет выполнен перезапуск или отработка отказа. Служба SQL Server остановлена. |
2 | Отработка отказа или перезапуск, если сервер не отвечает | Указывает, что сервер перезапускается или вызывается отработка отказа на резервный ресурс при возникновении одного из следующих условий. Служба SQL Server остановлена. Экземпляр SQL Server не отвечает (библиотеке ресурсов не удается получить данные от процедуры sp_server_diagnostics в течение времени, заданного HealthCheckTimeout). |
3* | Отработка отказа или перезапуск при возникновении критических ошибок сервера | Указывает, что сервер перезапускается или вызывается отработка отказа на резервный ресурс при возникновении одного из следующих условий. Служба SQL Server остановлена. Экземпляр SQL Server не отвечает (библиотеке ресурсов не удается получить данные от процедуры sp_server_diagnostics в течение времени, заданного HealthCheckTimeout). Системная хранимая процедура sp_server_diagnostics возвращает сообщение "системная ошибка". |
4 | Отработка отказа или перезапуск при возникновении умеренных ошибок сервера | Указывает, что сервер перезапускается или вызывается отработка отказа на резервный ресурс при возникновении одного из следующих условий. Служба SQL Server остановлена. Экземпляр SQL Server не отвечает (библиотеке ресурсов не удается получить данные от процедуры sp_server_diagnostics в течение времени, заданного HealthCheckTimeout). Системная хранимая процедура sp_server_diagnostics возвращает сообщение "системная ошибка". Системная хранимая процедура sp_server_diagnostics возвращает сообщение "ошибка ресурса". |
5 | Отработка отказа или перезапуск при всех соответствующих условиях | Указывает, что сервер перезапускается или вызывается отработка отказа на резервный ресурс при возникновении одного из следующих условий. Служба SQL Server остановлена. Экземпляр SQL Server не отвечает (библиотеке ресурсов не удается получить данные от процедуры sp_server_diagnostics в течение времени, заданного HealthCheckTimeout). Системная хранимая процедура sp_server_diagnostics возвращает сообщение "системная ошибка". Системная хранимая процедура sp_server_diagnostics возвращает сообщение "ошибка ресурса". Системная хранимая процедура sp_server_diagnostics возвращает сообщение "ошибка обработки запроса". |
*Значение по умолчанию
Действия при сбоях
После обнаружения одного или нескольких условий сбоя реакция службы WSFC зависит от состояния кворума WSFC и параметров перезапуска и отработки отказа для группы ресурсов FCI. Если в FCI потерян кворум WSFC, то весь экземпляр FCI переводится в режим «вне сети» и высокий уровень доступности FCI утрачивается. Если в FCI сохраняется кворум WSFC, то служба WSFC сначала может перезапустить сбойный узел, а затем выполнить отработку отказа, если попытки перезапуска не завершаются успехом. Параметры перезапуска и отработки отказа настраиваются в оснастке «Диспетчер отказоустойчивости кластеров». Дополнительные сведения об этих параметрах см. в статье <Ресурс> Свойства: вкладка "Политики".
Дополнительные сведения о поддержании работоспособности кворума см. в статье Режимы кворума и конфигурация голосования WSFC (SQL Server).