Функція автоматичного відключення AlwaysOn Group Available не працює


10

Граючи з установкою AG У мене WSFC налаштований і налаштований з двома вузлами в одній групі доступності під назвою DevClusterOnline. Обидва вузли (DEV-AWEB5 первинний, DEV-AWEB6 вторинний) працюють під управлінням Windows Server 2008 R2.

Якщо я перевіряю здоров'я свого АГ, то отримую таке:

Опис охорони здоров’я групи

Запуск запиту нижче поверне цей набір результатів: Синхронна фіксація та автоматичне налаштування відмови

select
    ar.replica_server_name,
    availability_group_name = ag.name,
    ar.availability_mode_desc,
    ar.failover_mode_desc
from sys.availability_replicas ar
inner join sys.availability_groups ag
on ar.group_id = ag.group_id
order by availability_group_name, replica_server_name;

Якщо я відключу DEV-AWEB5, я не можу підключитися до групового слухача (DevListener), але я можу його пінг, і він відповість на мій ping. Репліка - DEV-AWEB6 переходить у стан вирішення, і мій БД недоступний. Однак я можу вручну зайти в Studio Studio і встановити функцію Failover на DEV-AWEB6, і тоді я знову запускаюсь, і DevListener знову прийме з'єднання.

Зважаючи на те, що ці факти підтверджують, що аварійний режим насправді працює, що я синхронізував коміти та налаштований автоматичний відмову, я не маю поняття, що робити, якщо в моїй програмі несправність не працює.

Коли я відключаю DEV-AWEB5, я сподіваюся, що моя репліка збереже з'єднання, а отже, і DevListener. Я сподіваюся, що автоматична відмова дозволить мені підключитися до слухача AG прозоро. З точки зору кінцевого користувача, використовуючи веб-систему, не слід помічати, що один із серверів БД не працює.

Я застряг тут, може хто-небудь просвітить мене про те, що я роблю неправильно?


1
Як виглядає ваша модель кворуму? Це проста більшість вузлів? Якщо так, то це може бути вашою проблемою. З technet.microsoft.com/en-us/library/cc731739.aspx ця модель кворуму може понести втрати (половина вузлів кластера) -1. Отже, якщо у вас є кластер з двома вузлами з кворумом більшості вузлів, ви можете зазнати 0 збоїв у вузлі.
Бен Тул

2
@BenThul Якщо кластер втратив кворум, то ОП не зможе вручну відмовитись.
Томас Стрінгер

Відповіді:


6

Якщо я відключу DEV-AWEB5

Визначте "відключення", якщо хочете. Я здогадуюсь, ви зберегли цю скриньку, але зняли SQL Server.

Я не можу підключитися до групового слухача (DevListener), але я можу пінг, і він відповість на мій ping

Це тому, що слухач - це лише назва віртуальної мережі (VNN) у групі ресурсів кластера WSFC для представленої групи доступності. Ваш вузол DEV_AWEB5 як і раніше володіє групою ресурсів кластера, але, швидше за все, саме ресурс кластера AG знаходиться в невдалому стані. VNN все ще має бути в мережі (очікувана поведінка). Це просто вказує на те, який вузол володіє цією групою ресурсів (у цьому випадку DEV-AWEB5). Насправді, якщо у вас було ввімкнено видалення PowerShell, і ви виконали наступне:

Invoke-Command -ComputerName "YourListenerName" -ScriptBlock { $env:computername }

Так само, якщо ви зможете RDP в DEV-AWEB5 (за умови, що у вас є можливість та доступність тощо), ви зможете RDP використовувати ім'я слухача ( mstsc /v:YourListenerName). Це просто ВНН.

Поверненням цього буде ім'я комп'ютера вашого власного вузла.

За всіма вашими симптомами я б хотів зробити ставку на те, що ви досягли свого порогу відмови. Поріг відмови визначає, скільки разів кластер намагатиметься відмовити вашу групу ресурсів у визначений період часу. За замовчуванням цих значень максимум відмов n - 1 (де n - кількість вузлів) протягом 6 годин . Це можна побачити за допомогою наступної команди WSFC PowerShell:

Get-ClusterGroup -Name "YourAgName" |
    Select-Object Name, FailoverThreshold, FailoverPeriod

Це просто дає налаштування (які ви, звичайно, можете змінити, якщо захочете).

Найкращий спосіб довести, що це так для вас, вам потрібно буде генерувати журнал кластерів (журнали системних подій входять лише в деталі, наскільки "не вдалося", або щось подібне).

Get-ClusterLog -Node "YourClusterNode" -TimeSpan <amount_of_minutes_since_failure>

Це за замовчуванням буде поміщено у папку "C: \ Windows \ Cluster \ Reports", а файл називається "Cluster.log".

Якщо ви мали б відкрити цей журнал кластерів, ви повинні мати змогу знайти наступний рядок, який вказує, що саме сталося і чому це сталося:

Не виходить з ладу над групою [YourClusterGroupName] , failoverCount [# of failovers] , поріг відмови [порогове значення відмови] , nodeAvailCount [кількість доступних вузлів ].

Наведене вище повідомлення - це просто WSFC, який говорить вам, що він не зможе перемогти вашу групу, тому що це сталося занадто багато (ви досягли порогу).

Чому це відбувається? Просто для запобігання ефекту Ping-Pong кластерні ресурси надто часто рухаються між вузлами.

Оскільки це було б загальним для досягнення цих порогових значень при відмовному тестуванні, у виробництві це, як правило, вказувало б на проблему, яку слід досліджувати.


2
Дякую за допомогу, я дотримувався ваших вказівок, але нарешті виявив, що це не проблема. Причиною того, що я не зміг домогтися автоматичного відключення АГ, було те, що я неправильно налаштував залежності WSFC. Як виявляється, мені потрібно було додати MSSQL як ресурс кластера (Generic Service) та додати його як залежність у диспетчері відказоутворювачів Failover разом зі слухачем AG. Крім того, необхідно поставити прапорець "Якщо перезапуск не вдався, не вдайтеся до всіх ресурсів цієї служби чи програми". Я впевнений, що ви були під враженням, що я це вже робив.
Маркус

1

Додавання MSSQL як загального ресурсу служби не є відповіддю.

Це просто покладе менеджер кластерів на сервіс служби SQL Server. Добре, так, він перестане автоматично, але ви помітите в диспетчері налаштувань SQL Server, що ваші служби тепер встановлені на "Вручну", вказуючи, що Менеджер кластерів є тепер керує сервісом вашого сервера SQL.

Ви ставите менеджером кластерів керування NON Clustered Application.

Це закінчиться сльозами.

Правильний підхід - це правильно налаштувати групи доступності SQL Server відповідно до документації на MS.

А також переконайтеся, що ви не перевищуєте параметрів відмови, визначених у менеджері кластерів> Ролі> вкладка "Відмова"

Якщо ви перевищуєте ці обмеження, кластер не втратить ваші ресурси, і помилка буде розміщена в Журналі подій програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.