AlwaysOn AG, DTC พร้อม failover


14

ปัญหา:ฉันจะรัน Distributed Transaction Coordinator (DTC) บนเซิร์ฟเวอร์ทั้งหมดใน AlwaysOn Availability Group (AG) ได้อย่างไร ฉันไม่จำเป็นต้องรักษาการทำธุรกรรมมากกว่าเหตุการณ์ความล้มเหลว / การเปลี่ยนแปลง

การติดตั้ง:ฉันมี Windows Failover Cluster (WSFC) ที่มีเซิร์ฟเวอร์ Windows 2008 R2 สามเครื่องซึ่งกำลังทำงาน SQL 2012 ทั้งหมดสองเซิร์ฟเวอร์อยู่ในศูนย์ข้อมูลเดียวและเป็นส่วนหนึ่งของ AlwaysOn Failover Cluster (FCI) ในขณะที่เซิร์ฟเวอร์ตัวที่สามอยู่ใน ศูนย์ข้อมูลที่สอง WSFC เป็นคลัสเตอร์หลายเครือข่ายย่อย นี่คือภาพร่างของการตั้งค่า: ป้อนคำอธิบายรูปภาพที่นี่

ฉันสามารถติดตั้งและกำหนดค่า DTC ให้ทำงานระหว่างสองโหนด FCI ได้เนื่องจากพวกเขาอยู่ในซับเน็ตเดียวกันและใช้ที่เก็บข้อมูลร่วมกัน ฉันกำหนดค่า AG สองสามตัวและพวกเขาทำงานได้ดี ภาพหน้าจอนี้แสดงการติดตั้ง DTC บน FCI:

ป้อนคำอธิบายรูปภาพที่นี่

ภาพหน้าจอนี้แสดงให้เห็นว่าฉันสามารถกำหนดค่า DTC บนหนึ่งในโหนด FCI (แล้วแต่จำนวนใดที่ทำงาน): ป้อนคำอธิบายรูปภาพที่นี่

ฉันต้องการย้ายแอปพลิเคชันที่ใช้ DTC ไปยังคลัสเตอร์นี้และใช้ AG ฉันอ่านแล้วว่า DTC ไม่รองรับ AGs ( อ้างอิง ) ฉันไม่สามารถหาวิธีกำหนดค่า DTC บนโหนดที่สามในศูนย์ข้อมูลที่สองได้ เมื่อฉันพยายามกำหนดค่า DTC บนโหนดที่สามดูเหมือนว่าจะไม่พร้อมใช้งานดังที่แสดงในภาพหน้าจอนี้:

ป้อนคำอธิบายรูปภาพที่นี่

ในรายการตรวจสอบการติดตั้งฟรีของเบรนท์โอซาร์PDFสำหรับกลุ่มห้องว่างเขาแสดง:

การติดตั้งคลัสเตอร์ ...

29. ถ้าเกี่ยวข้องกับ FCI ให้กำหนดค่า DTC ตามการตัดสินใจในส่วนการวางแผนของคุณ

ในความคิดเห็นเกี่ยวกับกลุ่มความพร้อมใช้งาน AlwaysOn ของ SQL Server 2012 Rock Brent กล่าวว่า "... ไม่มีอะไรเปลี่ยนแปลงเมื่อ AGs กำลังเล่นอยู่โปรดจำไว้ว่าฐานข้อมูลในกลุ่มความพร้อมใช้งานไม่รองรับความสอดคล้องในการทำธุรกรรม .."

สิ่งนี้ทำให้ดูเหมือนว่า DTC สามารถใช้ในกลุ่มความพร้อมใช้งานได้ตราบใดที่คุณเข้าใจว่าการทำธุรกรรมจะไม่ได้รับการดูแลในการเปลี่ยนแปลงแบบ AG ฉันไม่ต้องการมันเพื่อรักษาธุรกรรมจากโหนด FCI ฉันต้องการ DTC ที่พร้อมใช้งานเพื่อให้แอปพลิเคชันใช้ในกรณีที่เกิดภัยพิบัติร้ายแรง (ซึ่งฉันทำศูนย์ข้อมูลหลักหาย)

ฉันจะกำหนดค่า DTC บนโหนดที่สามของฉันได้อย่างไร หรือเป็นกรณีที่ฉันโชคไม่ดีเมื่อพูดถึงการใช้ AG และแอปพลิเคชันที่ต้องการ DTC หรือไม่

อัปเดต:โซลูชันที่ฉันได้ตัดสินคือใช้บันทึกการจัดส่ง อย่างไรก็ตามในกรณีที่ล้มเหลวฉันยังต้องใช้ DTC เพื่อใช้งานบน Node3 ฉันค้นพบว่ามันพร้อมใช้งานโดยการถอนการติดตั้งอินสแตนซ์ MSDTC-MSSQLSERVERCLU ของ DTC ที่แบ่งใช้ระหว่าง Node1 และ Node2 เมื่อลบออกแล้วฉันสามารถตั้งค่าและกำหนดค่าอินสแตนซ์ LocalDTC บน Node3 หลังจากนั้นฉันสามารถติดตั้งอินสแตนซ์ MSDTC-MSSQLSERVERCLU ที่ติดตั้งใหม่ ทำลำดับการติดตั้งตามลำดับที่ดูเหมือนว่าจะทำงาน ฉันเคยวิ่งแบบนั้นมาซักพักแล้วและฉันไม่ได้ค้นพบอาการร้ายใด ๆ ดูเหมือนว่าสิ่งนี้จะทำงานสำหรับการเรียกใช้ AlwaysOn Availability Group ฉันเข้าใจว่าการทำธุรกรรมแบบกระจายจะไม่ถูกเก็บรักษาไว้ในความล้มเหลวของ AG ฉันจะต้องทำงานใหม่หลังจากการล้มเหลว แต่ฉันไม่ได้

คำตอบ:


15

เอลียาห์ มีคำถามสองข้อแยกอยู่ที่นี่:

1. รองรับ DTC กับกลุ่มความพร้อมใช้งาน AlwaysOn หรือไม่

อย่างที่ Microsoft บอกไว้ในตัวอักษรใหญ่ไม่ใช่ ฉันเข้าใจอย่างถ่องแท้ว่าคุณต้องการลองใช้งาน แต่โปรดจำไว้ว่าตอนนี้คุณกำลังนำบางสิ่งบางอย่างมาผลิตซึ่ง Microsoft ไม่สนับสนุนและคุณใช้คุณสมบัติเฉพาะสองช่องด้วยกัน (AGs และ DTC) หากมีสิ่งใดที่ผิดพลาดคุณจะต้องอยู่ในโลกที่เจ็บปวด นี่ไม่ใช่สิ่งที่ฉันคิดเกี่ยวกับการผลิต

โปรดทราบว่าหากผู้จัดการของคุณพบว่าคุณได้ติดตั้งสิ่งที่ Microsoft ระบุไว้ในตัวอักษรขนาดใหญ่โดยเฉพาะ "คุณไม่สามารถทำสิ่งนี้ได้" และคุณมีปัญหาใด ๆ ที่คุณต้องโทรหา Microsoft เพื่อรับการสนับสนุน มีบางอย่างน่าเกลียดอธิบายให้ทำ

2. ควรกำหนดค่า DTC ในคลัสเตอร์มัลติมัลติซับเน็ตหรือไม่

อ่านโพสต์ของ Allan Hirt เกี่ยวกับการกำหนดค่า DTCด้วย SQL Server หลายอินสแตนซ์ในคลัสเตอร์และให้แน่ใจว่าได้อ่านลิงก์ทั้งหมดในโพสต์ด้วย


ข้อมูลที่ดีในการโพสต์ของ Allan Hirt คำเตือนของคุณทำให้ฉันมั่นใจว่าฉันโชคไม่ดีและไม่สามารถทำได้
Elijah W. Gagne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.