Что делать, если ваш кластер Always On теряет кворум?

9

Я пересматривал процедуры DR нашей компании и, когда искал в Интернете решения для потерянного кворума Always On Cluster, сравнивал с ним. Я изучил результаты Google на три страницы, прежде чем нашел первый пост SE на тему « Кластеризация», «Транзакционная репликация» и «Группы доступности», который лишь слегка затрагивает тему утраченного кворума.

Хотя все согласны с тем, что проигрышный кворум - это плохо, и есть некоторые предложения по снижению потенциала, это все же может произойти. Я ищу хороший рецензируемый ответ для наилучшего пути восстановления после потери кворума кластера Always On.

Джеймс Дженкинс
источник
Если это не так, я рекомендую попробовать установить Windows Server 2012 R2. Функции динамического кворума, динамического свидетеля и прерывателя связи позволяют вам достичь «последнего стоящего человека» во многих случаях. sqlha.com/2013/06/06/…
SQL Hammer

Ответы:

11

AG основаны на кластеризации Windows. Применяются процедуры WSFC для потери кворума.

После запуска WSFC вы можете при необходимости принудительно включить AG. Выполните принудительное переключение вручную группы доступности :

После форсирования кворума в кластере WSFC (принудительный кворум) необходимо принудительно выполнить отработку отказа для каждой группы доступности (с возможной потерей данных). Принудительное переключение при сбое необходимо, потому что реальное состояние значений кластера WSFC могло быть потеряно. Однако вы можете избежать потери данных, если сможете принудительно переключаться при сбое на экземпляре сервера, на котором размещалась реплика, которая была первичной репликой, до принудительного кворума или во вторичную реплику, которая была синхронизирована перед принудительным кворумом. Дополнительные сведения см. В разделе « Возможные способы предотвращения потери данных после принудительного кворума» .

Ремус Русану
источник
Как это работает с новой настройкой AG без кластера? Есть ли еще Кворум?
Шаулинатор
6

Что делать, если ваш кластер AlwaysOn теряет кворум?

Я был в этой ситуации, особенно с кластеризацией нескольких подсетей, охватывающей разные страны (NY-LD-HK).

Как избежать потери кворума в кластере с несколькими подсетями?

  • Измените настройку кластера по умолчанию на более расслабленное состояние мониторинга, особенно настройки Cluster Heartbeat с помощью CrossSubnetDelayили CrossSubnetThresholdсвойство этого исправления .
  • AG использует WSFC, а Inturn использует кворумный подход для определения работоспособности кластера. Убедитесь, что вы правильно выбрали и настроили кворум . Эта запись блога более подробно описывает конфигурацию голосования кворума для AlwaysON
  • Ситуация изменилась в Windows Server 2016 с появлением кластеров с поддержкой сайтов и облачных свидетелей .

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

    Cloud Witness - это новый тип свидетеля кворума отказоустойчивого кластера, который использует Microsoft Azure в качестве точки арбитража. Он использует хранилище BLOB-объектов Microsoft Azure для чтения / записи файла BLOB-объектов, который затем используется в качестве арбитражной точки в случае разделения по принципу разделения мозга.

Что делать, если кворум потерян?

  • Если кластер выходит из строя из-за незапланированного сбоя / аварии, требуется ручное вмешательство. Либо администратор Windows, либо администратор кластера должен вручную форсировать кворум (ссылаясь на ответ @ Remus, который охватывает этот вопрос) и переводить оставшиеся в живых узлы в сеть.

Как всегда, для проведения анализа первопричин (RCA) соберите журналы кластера Windows, для AlwaysON RCA - используйте журналы диагностики отказоустойчивого кластера SQL Server . Эти файлы в каталоге SQL Server Log имеет следующий формат: <HOSTNAME>_<INSTANCENAME>_SQLDIAG_X_XXXXXXXXX.xel.

Кин Шах
источник
0

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

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

Я видел эту ситуацию однажды с SQL 2005 и зеркалированием. И мы решили не форсировать отказ и оставить его недоступным. Причина в том, что в худшем случае, если бы нам пришлось выполнять резервное копирование и восстановление для перезапуска зеркалирования, для нас это был бы двухдневный процесс с рисками переполнения журнала транзакций и невозможности расширения диска, на котором он находился.

Alen
источник
Зеркальное отображение и AlwaysOn разные. С AlwaysOn вы должны (надеюсь) указывать на слушателя с MultiSubnetFailover = True
Джеймс Дженкинс
Я знаю это, но возможно географически разделить серверы с отключением сети, при котором некоторые приложения могут достигать некоторых серверов, но не других. И есть драйверы Java, которые не поддерживают MultiSubnetFailover = True. Возможно, другие сторонние приложения. Я видел, как некоторые люди отказываются настраивать свои строки подключения для этого. Даже в этом случае вы можете форсировать аварийное переключение, не продумывая его для вашей конкретной ситуации, и в итоге получите два перезаписываемых сервера, не способных связываться. И с приложениями, пишущими обоим из-за их способности общаться через сайты.
Ален
PS Я видел ситуацию, когда мы не могли связаться с нашим основным сайтом менее чем в миле, но подключение к нашему сайту DR в 100 милях работало просто отлично.
Ален