Вопрос или проблема
В настоящее время у нас есть 2-х узловый (Win2003) кластер SQL 2005, работающий на двух экземплярах.
Нам нужно перенести все диски на новую SAN, но мы думаем, как переместить DTC, который в настоящее время ‘логируется’ на диске Кворума.
Как мы можем узнать, используется ли MSDTC? Файл журнала показывает дату более двух лет назад, но DTC служба запущена.
Также, как лучше всего его переместить? Можем ли мы просто изменить реестр, чтобы изменить любые ссылки на текущую букву диска?
Спасибо
На предыдущей работе мне приходилось устанавливать новые кластеры все время. Поэтому я разработал командный файл для установки. Он должен предоставить вам путь вперед. Просто убедитесь, что вы изменили соответствующие части (имена серверов, IP-адреса, диски).
cluster ClusterName group "MSDTC Group" /create
cluster ClusterName group "MSDTC Group" /setowners:server1,server2
cluster ClusterName res "MSDTC IP Address" /create /group:"MSDTC Group" /type:"IP Address"
cluster ClusterName res "MSDTC IP Address" /priv network=public
cluster ClusterName res "MSDTC IP Address" /priv Address=127.0.0.1
cluster ClusterName res "MSDTC IP Address" /priv SubnetMask=255.255.255.0
cluster ClusterName res "MSDTC Network Name" /create /type:"Network Name" /group:"MSDTC Group"
cluster ClusterName res "MSDTC Network Name" /priv Name=MSDTCClusterName
cluster ClusterName res "MSDTC Network Name" /adddep:"MSDTC IP Address"
cluster ClusterName res "Disk M:\" /move:"MSDTC Group"
cluster ClusterName res "MSDTC Resource" /CREATE /GROUP:"MSDTC Group" /TYPE:"Distributed Transaction Coordinator"
cluster ClusterName res "MSDTC Resource" /ADDDEP:"MSDTC Network Name"
cluster ClusterName res "MSDTC Resource" /ADDDEP:"Disk M:\"
cluster ClusterName res "MSDTC Resource" /ON
Если не используется с открытыми транзакциями (проверьте в dcomcnfg список открытых транзакций и статистику, чтобы увидеть, какой MSDTC используется), вы можете просто удалить предыдущий кластерный ресурс MSDTC и создать новый вместо него. Как только он будет создан с новой зависимостью диска, в первый раз он создаст свою \MSDTC подпапку на новом диске.
Пример PowerShell с MSDTC и MSMQ:
# В дисках MSDTC и MSMQ удалите папки MSMQ и MSDTC, чтобы начать заново (после удаления кластерных ресурсов MSDTC и MSMQ)
# Добавьте ресурсы с параметрами и зависимостями
Add-ClusterResource -name "IP Address 192.168.2.72" -Group "MSMQCluster2" -ResourceType "IP Address"
Get-ClusterResource -Name "IP Address 192.168.2.72" | Set-ClusterParameter -Multiple @{"Address"="192.168.2.72";"Network"="Cluster Network 1";"SubnetMask"="255.255.255.0";EnableNetBIOS=1}
Add-ClusterResource -name "MSMQCluster2" -Group "MSMQCluster2" -ResourceType "Network Name"
Get-ClusterResource -Name "MSMQCluster2" | Set-ClusterParameter -Multiple @{"DnsName"="MSMQCluster2";"PublishPTRRecords"=1}
Set-ClusterResourceDependency -Resource "MSMQCluster2" -Dependency "[IP Address 192.168.2.72]"
Add-ClusterResource -name "MSMQCluster2DTC" -Group "MSMQCluster2" -ResourceType "Distributed Transaction Coordinator"
Set-ClusterResourceDependency -Resource "MSMQCluster2DTC" -Dependency "([MSDTC2Disk]) and ([MSMQCluster2])"
Add-ClusterResource -name "MSMQ-MSMQCluster2" -Group "MSMQCluster2" -ResourceType "MSMQ"
Set-ClusterResourceDependency -Resource MSMQ-MSMQCluster2 -Dependency "([MSMQ2Disk]) and ([MSMQCluster2])"
Start-ClusterResource -name "IP Address 192.168.2.72"
Start-ClusterResource -name "MSMQCluster2"
Start-ClusterResource -name "MSMQCluster2DTC"
Start-ClusterResource -name "MSMQ-MSMQCluster2"
Ответ или решение
Перемещение MSDTC (Microsoft Distributed Transaction Coordinator) в кластерной среде, особенно на таком старом программном обеспечении как Windows Server 2003 и SQL Server 2005, может быть довольно сложной задачей. Эта операция требует тщательной подготовки, чтобы минимизировать простои и избежать потери данных. Давайте рассмотрим, как можно осуществить перемещение MSDTC на новый SAN (система хранения данных).
Теория
MSDTC отвечает за координацию распределённых транзакций, которые могут взаимодействовать с несколькими ресурсами, такими как базы данных и очереди. В кластерной среде DTC становится кластерным ресурсом, что позволяет разделять нагрузку между различными узлами и обеспечивать отказоустойчивость.
Понимая, что MSDTC положительно влияет на производительность и надёжность транзакционных систем, важно знать, что он часто использует диск для ведения логов. В вашем случае, возможно, он использует диск кворума, что не является наилучшей практикой, так как диск кворума лучше не сильно нагружать.
Пример
Рассмотрим командный файл, который демонстрирует, как можно создать группу MSDTC и добавить в нее необходимые ресурсы.
cluster ClusterName group "MSDTC Group" /create
cluster ClusterName group "MSDTC Group" /setowners:server1,server2
cluster ClusterName res "MSDTC IP Address" /create /group:"MSDTC Group" /type:"IP Address"
cluster ClusterName res "MSDTC IP Address" /priv network=public
cluster ClusterName res "MSDTC IP Address" /priv Address=127.0.0.1
cluster ClusterName res "MSDTC IP Address" /priv SubnetMask=255.255.255.0
cluster ClusterName res "MSDTC Network Name" /create /type:"Network Name" /group:"MSDTC Group"
cluster ClusterName res "MSDTC Network Name" /priv Name=MSDTCClusterName
cluster ClusterName res "MSDTC Network Name" /adddep:"MSDTC IP Address"
cluster ClusterName res "Disk M:\" /move:"MSDTC Group"
cluster ClusterName res "MSDTC Resource" /CREATE /GROUP:"MSDTC Group" /TYPE:"Distributed Transaction Coordinator"
cluster ClusterName res "MSDTC Resource" /ADDDEP:"MSDTC Network Name"
cluster ClusterName res "MSDTC Resource" /ADDDEP:"Disk M:\"
cluster ClusterName res "MSDTC Resource" /ON
Эти команды позволяют создать группу для MSDTC, настроить IP-адрес, имя сети и связанные диски. Обратите внимание на то, что применение данных шагов предполагает наличие у вас достаточных привилегий на сервере и тщательное тестирование всех операций перед их применением в производственной среде.
Применение
-
Проверка использования MSDTC: Во-первых, необходимо проверить, используется ли MSDTC. Посмотрите в файле лога на самом диске, а также через консоль
dcomcnfg
на наличие активных транзакций. Если файл лога MSDTC не обновлялся уже два года, вполне вероятно, что он не используется или используется минимально. Вы можете также проверить статистику транзакций в DTC, чтобы удостовериться в его актуальном использовании. -
Удаление старого ресурса и создание нового: Если подтверждено, что MSDTC не активен, можно удалить существующий кластерный ресурс MSDTC и создать новый с учетом зависимостей нового диска на SAN. Для этого используйте PowerShell или классические команды кластера, показанные в примере.
-
Обновление конфигурации: После создания нового ресурса, убедитесь, что все зависимости установлены правильно, и новый диск зарегистрирован в конфигурации. Некоторые конфигурационные изменения могут потребовать также обновления в реестре Windows, но это нужно делать очень осторожно и только при необходимости.
-
Тестирование и переключение: Протестируйте работу нового кластера MSDTC. Проверка должна включать нагрузочные тесты транзакций для подтверждения, что все работает корректно и без сбоев.
-
Мониторинг после перемещения: После успешного перемещения и переключения на новый SAN, проведите мониторинг транзакций и ресурсов, чтобы обеспечить их надлежащую работу.
Эти шаги помогут вам в успешном перемещении MSDTC на новый SAN с минимальными рисками и нарушениями в работе системы. Узнайте все возможные тонкости настройки и воздействия на существующую инфраструктуру, что позволит избежать неприятностей в будущем.