Проблема: Как запустить координатор распределенных транзакций (DTC) на всех серверах группы доступности AlwaysOn (AG)? Мне НЕ нужно поддерживать транзакции по событиям отработки отказа / переключения.
Установка: у меня есть отказоустойчивый кластер Windows (WSFC) с тремя серверами Windows 2008 R2, на которых все они работают под управлением SQL 2012. Два сервера находятся в одном центре обработки данных и являются частью отказоустойчивого кластера AlwaysOn (FCI), а третий сервер находится в второй дата-центр. WSFC - это кластер с несколькими подсетями. Вот эскиз установки:
Мне удалось установить и настроить DTC для работы между двумя узлами FCI, поскольку они находятся в одной подсети и совместно используют хранилище. Я настроил пару AG, и они работали нормально. Этот снимок экрана показывает код неисправности, установленный на FCI:
Этот снимок экрана показывает, что я могу настроить DTC на одном из узлов FCI (какой бы ни был активен):
Я хотел бы перенести приложение, использующее DTC, на этот кластер и использовать AG. Я читал, что DTC не поддерживается AG ( ссылка ). Я не смог найти способ настроить DTC на третьем узле во втором центре обработки данных. Когда я пытаюсь настроить DTC на третьем узле, он кажется недоступным, как показано на этом снимке экрана:
В контрольном списке бесплатных настроек Brent Ozar для групп доступности он перечисляет:
Установка кластера ...
29. Если задействован FCI, настройте код неисправности в соответствии с решениями вашего раздела планирования.
В комментариях к группам доступности SQL Server 2012 AlwaysOn Рок Брент говорит, что «... ничего не меняется, когда AGs находятся в игре. Просто имейте в виду, что базы данных в группе доступности не поддерживают согласованность транзакций при сбое вместе с другой репликой. ..»
Это создает впечатление, что DTC можно использовать в группах доступности, если вы понимаете, что транзакции не будут поддерживаться при переключении AG. Мне не нужно было бы поддерживать транзакции с узлов FCI. Мне просто нужен DTC, доступный для приложения, чтобы использовать его в случае катастрофической катастрофы (когда я потерял свой основной центр обработки данных).
Как настроить DTC на моем третьем узле? Или это тот случай, когда мне просто не повезло, когда речь идет об использовании AGs и приложения, которому требуется DTC?
ОБНОВЛЕНИЕ: решение, которое я выбрал, состоит в том, чтобы использовать Log Shipping. Однако в случае отработки отказа мне все еще нужно, чтобы код DTC был доступен на узле 3. Я обнаружил, что он становится доступным после удаления кластеризованного экземпляра DTC MSDTC-MSSQLSERVERCLU, который используется совместно между Node1 и Node2. После удаления я могу установить и настроить экземпляр LocalDTC на Node3. После этого я могу переустановить кластерный экземпляр MSDTC-MSSQLSERVERCLU. Выполнение последовательности установки в таком порядке похоже на работу. Я бегал вот так некоторое время и не обнаружил никаких побочных эффектов. Кажется, что это также будет работать для запуска группы доступности AlwaysOn. Я понимаю, что распределенные транзакции не будут сохраняться при аварийном переключении AG, мне просто нужны новые, чтобы работать после аварийного переключения. Но у меня нет
источник