Fragensteller
Hochverfügbarkeit eines geclusterten DTC

Frage
-
Guten Abend,
meine Frage geht etwas über die Thematik Windows Clustering hinhaus.
Folgende Konstellation: W2k8 (Enterprise mit 2 Knoten) Cluster und MSSQL2k8 (Activ-Passiv) Cluster (nur Standardinstanz) welches verteilte Transaktionen auf andere MSSQL2k8 ausführt. Der MSDTC auf dem Cluster läuft in einer eigenen Ressorcengruppe, da es momentan nicht auf Performance ankommt und ein Schwenk der SQL Servers bei Ausfall der MSDTC-Ressource nicht erwünscht ist.
Fallbetrachtung:
Führt man auf dem SQL Server Cluster via T-SQL eine DISTRIBUTED TRANSACTION (mit Set XACT_ABORT On) durch, die einige Minuten dauert und schwenkt den DTC gewollt auf einen anderen Knoten, wird die Transaktion abgebrochen, weil die DTC-Ressource kurzzeitig nicht verfügbar ist. Es erfolgt daher ein Rollback.
Meine Frage: Bekommt man es "gebacken", das eine verteilte Transaktion das Umschalten der DTC-Ressource "überlebt" und nach der Umschaltdauer von ca. 5 Sekunden (Timeout) weiter läuft? Der DTC hat sein Logfile auf einem geshartem Datenträger im Cluster.
Danke im Voraus für Beiträge
Alle Antworten
-
Guten Morgen (ok, es ist schon beinahe Mittag ... ) ;-)
Ja die Transaktionen brechen hier an sobald der MSDTC gestopped wird. Aber man könnte in W2k8 je Resource Group einen MSDTC anlegen, der dann zur jeweiligen Instanz gehört. Damit würde man das Problem umgehen.
MSDTC in Each SQL Server Resource Group
- This option provides the best performance. It guarantees that your instance of MSDTC will always run on the same physical node as the SQL Server, which reduces communications overhead.
- It is suitable for the widest array of requirements.
- It does not require mappings . SQL Server 2008 automatically uses the local cluster group MSDTC resource by default. Note that if this local resource is offline or failed, distributed transactions will fail for this instance of SQL Server, and you will need to delete or move the MSDTC resource to make use of another instance of MSDTC on the cluster.
- This configuration conserves drive letters for clusters that have a limited number of drive letters available. You can make use of mount points to keep disk I/O separate from other SQL Server files without using up a drive letter on the cluster.
Note: When you use this configuration, you must determine the correct setting for the If restart is unsuccessful, fail over all resources in this service or application setting of the MSDTC resource. If the function of MSDTC is critical to your environment, you should either set MSDTC to If restart is unsuccessful, fail over all resources in this service or application or put MSDTC in its own resource group and create a mapping that directs SQL Server to that instance of MSDTC. In most cases, you will not want to set If restart is unsuccessful, fail over all resources in this service or application. The setting enables MSDTC to be restarted on the same node if it fails, but if it cannot be restarted, it will not cause a failover of the entire SQL Server resource group.
Viele Grüße, Bernd Pfann [Microsoft] - This posting is provided "AS IS" with no warranties, and confers no rights.
- Als Antwort vorgeschlagen Bernd PfannMicrosoft employee, Moderator Freitag, 23. März 2012 09:26
-
Guten Morgen (ok, es ist schon beinahe Mittag ... ) ;-)
Ja die Transaktionen brechen hier an sobald der MSDTC gestopped wird. Aber man könnte in W2k8 je Resource ..Group einen MSDTC anlegen, der dann zur jeweiligen Instanz gehört. Damit würde man das Problem umgehen.
Viele Grüße, Bernd Pfann [Microsoft] - This posting is provided "AS IS" with no warranties, and confers no rights.
Guten Tag und danke für die Info. Das verlinkte Whitepaper kenne ich, daher auch der Hinweis, dass es nicht auf Performance ankommt.
Meine Überlegung war es, den MSDTC perspektivisch auf einen neuen dritten Knoten auszulagern.
Ich verstehe aber nicht, wie ich das Problem des Abbrechens von Transaktionen via geclustertem DTC damit umschiffe, dass ich ihn in die entsprechende SQL Server Ressourcengruppe schaffe. Wenn ich so verfahre, schaltet dann nicht die komplette Ressourcengruppe um, wenn der DTC ausfällt? Dann switcht auch der SQL Server auf den anderen Knoten. Die Transaktion im DTC bricht docht trotzdem ab. Oder habe ich hier einen Denkfehler?
Viele Grüße
-
Hallo Thoma,
deshalb ist auch empfohlen (im Whitepaper) MSDTC so zu konfigurieren, dass ein Ausfall
des Dienstes nicht zum Failover führt:Note: When you use this
configuration, you must determine the correct setting for the If restart is
unsuccessful, fail over all resources in this service or application
setting of the MSDTC resource. If the function of MSDTC is critical to your
environment, you should either set MSDTC to If restart is unsuccessful, fail
over all resources in this service or application or put MSDTC in its own
resource group and create a mapping that directs SQL Server to that instance of
MSDTC. In most cases, you will not want to set If restart is unsuccessful,
fail over all resources in this service or application. The setting enables
MSDTC to be restarted on the same node if it fails, but if it cannot be
restarted, it will not cause a failover of the entire SQL Server resource
group.Viele Grüße, Bernd Pfann [Microsoft] - This posting is provided "AS IS" with no warranties, and confers no rights.
-
Hallo,
ist die Thematik geklärt?
Gruss,
RaulRaul Talmaciu, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.