Date: ตุลาคม 24, 2018
ช่วยด้วย! ฉันไม่สามารถเชื่อมต่อกับ SQL Server ของฉันหลายคลัสเตอร์ล้มเหลวของ Subnet Subnet
ลูกค้าหลายรายของฉันประสบปัญหานี้ เพื่อแก้ปัญหานี้ฉันมักจะบอกพวกเขาต่อไปนี้
ลิงก์จะมีทุกสิ่งที่คุณจำเป็นต้องรู้
พวกเขาไม่ได้ไปในรายละเอียดมากเกี่ยวกับสิ่งที่ต้องทำถ้าการเชื่อมต่อของคุณไม่สนับสนุน multisubnetfailover = true ถ้าการเชื่อมต่อของคุณไม่สนับสนุนพารามิเตอร์ดังกล่าวให้ตั้งค่า registerallprovidersip เป็น DNS เท็จและล้างข้อมูล ขั้นตอนนี้อธิบายได้ดีที่สุดที่นี่
SQL Server Multi-Subnet Failover Cluster ทำงานอย่างไร?
โดยทั่วไปแล้วคนทั่วไปไม่ทราบว่า SQL Server Multi-Subnet Failover Cluster ทำงานอย่างไร การสนับสนุนการจัดกลุ่มการเข้าแทนที่แบบคลัสเตอร์หลาย subnet ถูกเพิ่มลงใน Windows Server 2012 โดยใช้เทคโนโลยี "OR" เมื่อกำหนดรีซอร์สคลัสเตอร์ อนุญาตให้ผู้อื่นตั้งชื่อทรัพยากรคลัสเตอร์ขึ้นอยู่กับที่อยู่ IP x.x.x.x หรือที่อยู่ IP y.y.y.y.
x.x.x.x จะเป็นทรัพยากร IP คลัสเตอร์ที่ถูกต้องใน Subnet A. y.y.y.y จะเป็นที่อยู่ IP ของกลุ่มที่ถูกต้องใน Subnet B. เพียงที่อยู่เดียวเท่านั้นที่จะออนไลน์ในช่วงเวลาหนึ่ง ๆ ตามที่อยู่ใดก็ตามที่ใช้ได้สำหรับ subnet ที่ทรัพยากรกำลังทำงานอยู่
Microsoft SQL Server เริ่มสนับสนุนแนวคิดนี้โดยเริ่มจาก SQL Server 2012 ที่มีอินเทอร์เฟซคลัสเตอร์ failover (FCI) โดยใช้โซลูชันการจัดกลุ่มแบบ SANless ของ บริษัท อื่นเช่น SIOS DataKeeper และ SQL Server Always On Availability Groups
โดยค่าเริ่มต้นถ้าคุณสร้างคลัสเตอร์ล้มเหลวของหลายเซิร์ฟเวอร์ย่อยของ SQL Server คลัสเตอร์ควรได้รับการกำหนดค่าให้เหมาะสมโดยอัตโนมัติ ซึ่งรวมถึงการตั้งค่าที่อยู่ IP สองรายการการเพิ่มระเบียน A สองรายการลงใน DNS และตั้งค่า registerallprovidersIP เป็น true อย่างไรก็ตามในตอนท้ายของไคลเอนต์คุณจำเป็นต้องบอกว่าคุณกำลังเชื่อมต่อกับคลัสเตอร์ failover หลาย subnet มิฉะนั้นเชื่อมต่อจะไม่ทำ
การกำหนดค่าไคลเอ็นต์
การกำหนดค่าไคลเอนต์ทำได้โดยการเพิ่ม multisubnetfailover = true ลงในสายเชื่อมต่อ เอกสารของ Microsoft นี้เป็นแหล่งข้อมูลที่เยี่ยมยอด แต่ถ้าคุณเพิ่งค้นหา multisubnetfailover = true คุณจะพบข้อมูลจำนวนมากเกี่ยวกับการตั้งค่านั้น
ไม่ว่าไม่ทุกโปรแกรมจะสนับสนุนการเพิ่มที่สายการเชื่อมต่อ หากคุณพบว่าตัวเองอยู่ในสถานการณ์เช่นนี้คุณควรขอให้ผู้ให้บริการแอปพลิเคชันของคุณเพิ่มการสนับสนุนหรือแสดงวิธีการดำเนินการดังกล่าว
ไม่เกรงใจ ทั้งหมดจะไม่สูญหายหากคุณพบว่าตัวเองอยู่ในสถานการณ์นั้น คุณต้องการเปลี่ยนลักษณะการทำงานของคลัสเตอร์เพื่อให้ DNS มีการปรับปรุงข้อมูลสำรองเพื่อให้ระเบียน A ที่เชื่อมโยงกับจุดเชื่อมต่อไคลเอ็นต์คลัสเตอร์ได้รับการอัปเดตด้วยที่อยู่ IP ใหม่ นี่คือแทนที่มีสองระเบียน A ใน DNS ซึ่งมีที่อยู่ IP ของคลัสเตอร์แต่ละอันซึ่งเป็นลักษณะการทำงานเริ่มต้นในคลัสเตอร์ multi-subnet
ช่วยในการเดินทาง
SharePoint บทความนี้อ้างอิงคุณสามารถละเว้นที่ส่วนที่เหลือของบทความเขียนดีสวยอธิบายกระบวนการที่คุณควรปฏิบัติตาม
ไฮไลต์ของบทความนั้นมีดังนี้ …
Get-ClusterResource "[ชื่อเครือข่าย]" | Set-ClusterParameter RegisterAllProvidersIP 0หลังจากรีสตาร์ทคลัสเตอร์ – ชื่อ – ออบเจ็กต์ (โดยการรีสตาร์ทครั้งแรก) และการล้างข้อมูลทั้งหมด "A" ด้วยตนเอง (การล้างข้อมูลไม่ได้ทำโดยอัตโนมัติ) เราจะเห็นระเบียน A เก่าของเราอยู่ใน DNS ดังนั้นเราจำเป็นต้องใช้ เพื่อลบด้วยตนเอง
นอกเหนือจากขั้นตอนเหล่านั้นแล้วผมแนะนำให้คุณลด TTL ลงใน HostRecordTTL ตามที่อธิบายไว้ในบทความนี้
ไฮไลต์ของบทความนั้นมีดังต่อไปนี้
PS C: > Get-ClusterResource -Name cluster1FS | ตั้ง ClusterParameter -Name HostRecordTTL -Value 300
ด้วยมูลค่า 300 คุณอาจต้องรอนานถึง 5 นาทีหลังจากที่ลูกค้าของคุณสามารถเชื่อมต่อใหม่ได้หลังจากที่ failover หรือนานกว่านั้นหากมีโครงสร้างพื้นฐาน Active Directory ขนาดใหญ่และการจำลองแบบ AD จะใช้เวลาในการอัปเดตเซิร์ฟเวอร์ DNS ทั้งหมดในโครงสร้างพื้นฐานของคุณ
คุณจะต้องการทราบว่า TTL ที่เหมาะสมคือการอำนวยความสะดวกในการเชื่อมต่อกับไคลเอ็นต์ที่รวดเร็วโดยไม่ทำให้เซิร์ฟเวอร์ DNS ของคุณมีภาระหนักขึ้นพร้อมกับ DNS lookup requests
การกำหนดค่าประเภทนี้เป็นเรื่องปกติในการกำหนดค่าการกู้คืนระบบที่ไซต์ DR ของคุณอยู่ในเครือข่ายย่อยอื่น นอกจากนี้ยังเป็นเรื่องปกติทั่วไปในการใช้งาน HA ใน AWS เนื่องจากช่องว่างที่แตกต่างกันอยู่ในเครือข่ายย่อยที่แตกต่างกัน
แจ้งให้เราทราบหากคุณมีคำถามเกี่ยวกับ SQL Server Multi-Subnet Failover Cluster คุณสามารถเข้าถึงฉันได้ทุกที่บน Twitter @daveberm