การกำหนดค่า #AZURE ILB ใน ARM สำหรับอินสแตนซ์ของคลัสเตอร์ล้มเหลวของ SQL Server หรือ AG โดยใช้ AZURE Powershell 1.0
ในโพสต์ก่อนหน้านี้ผมได้อธิบายรายละเอียดเกี่ยวกับวิธีการกำหนดค่า Azure ILB ใน ARM สำหรับ SQL Server Failover Cluster หรือ AG resources คำแนะนำในบทความนั้นเขียนขึ้นก่อน GA ของ Azure PowerShell 1.0 ด้วยความพร้อมของ Azure PowerShell 1.0 สคริปต์หลักที่สร้าง ILB จะแตกต่างกันเล็กน้อย ส่วนที่เหลือของบทความยังคงถูกต้อง อย่างไรก็ตามถ้าคุณใช้ Azure PowerShell 1.0 หรือสูงกว่าสคริปต์เพื่อสร้าง ILB ที่อธิบายไว้ในบทความนั้นควรเป็นดังนี้
# แทนที่ค่าสำหรับตัวแปรด้านล่างที่แสดงไว้ $ ResourceGroupName = 'SIOS-EAST' # Resource Group Name ซึ่งมีการใช้งานโหนด SQL $ FrontEndConfigurationName = 'FEEAST' # คุณสามารถใส่ชื่อพารามิเตอร์นี้ได้ $ BackendConfiguratioName = 'BEEAST' # คุณสามารถระบุชื่อพารามิเตอร์นี้ได้ $ LoadBalancerName = 'ILBEAST' # ระบุชื่อสำหรับวัตถุสมดุลภายในภายใน $ Location = 'eastus2' # ใส่ตำแหน่งศูนย์ข้อมูลของ SQL Deployements $ subname = 'public' # ระบุชื่อซับเน็ตที่มี Nodes ของ SQL $ ILBIP = '10 .0.0.201 'ระบุที่อยู่ IP สำหรับ Listener หรือ Load Balancer $ subnet = Get-AzureRMVirtualNetwork -ResourceGroupName $ ResourceGroupName | Get-AzureRMVirtualNetworkSubnetConfig -name $ subname $ FEConfig = New-AzureRMLoadBalancerFrontendIpConfig -Name $ FrontEndConfigurationName -PrivateIpAddress $ ILBIP-SubnetId $ subnet.Id $ BackendConfig = ใหม่ AzureRMLoadBalancerBackendAddressPoolConfig - ชื่อ $ BackendConfiguratioName New-AzureRMLoadBalancer -Name $ LoadBalancerName -ResourceGroupName $ ResourceGroupName -Location $ Location -FrontendIpConfiguration $ FEConfig -BackendAddressPool $ BackendConfig
ส่วนที่เหลือของบทความต้นฉบับนั้นเหมือนกัน แต่ฉันได้คัดลอกไว้ที่นี่เพื่อความสะดวกในการใช้ …
การใช้ GUI
เราจะเห็น ILB ใน Azure Portal ใน Resource Group ดูรูปด้านล่าง
ส่วนที่เหลือของการกำหนดค่านี้สามารถทำได้ผ่าน PowerShell แต่ฉันจะใช้ GUI ในตัวอย่างของฉัน
ถ้าคุณต้องการใช้ PowerShell คุณอาจเขียนสคริปต์ร่วมกันโดยดูที่บทความนี้ บทความนี้ทำให้ฉันสับสน ฉันจะคิดออกบางวันและพยายามที่จะจัดทำเอกสารในรูปแบบที่เป็นมิตรกับผู้ใช้ ณ ตอนนี้ฉันคิดว่า GUI ดีสำหรับขั้นตอนถัดไป
มาเริ่มกันเลย
ทำตามพร้อมกับภาพหน้าจอด้านล่าง ถ้าคุณสูญหายทำตามคำแนะนำในการนำทางที่ด้านบนของ Azure Portal เพื่อดูว่าเราอยู่ที่ไหน
ขั้นแรก
- คลิกแท็บการตั้งค่าแบ็กเอนด์แบ็กเอนด์ เลือกพูลย่อยสำรองเพื่ออัพเดตชุดค่าว่างและเครื่องเสมือน บันทึกการเปลี่ยนแปลงของคุณ
- ตั้งค่า Balancer's Balancer's Probe โดยคลิก Add บนแท็บ Probe ให้ตั้งชื่อและกำหนดค่าให้ใช้ TCP Port 59999 ฉันได้ทิ้งช่วงเวลาการตรวจสอบและกำหนดเกณฑ์ที่ไม่เหมาะสมต่อการตั้งค่าเริ่มต้น ซึ่งหมายความว่าจะใช้เวลา 10 วินาทีก่อนที่ ILB จะเอาโหนดพาสซีฟออกจากรายการโหนดที่ใช้งานอยู่หลังจากที่ failover ลูกค้าของคุณอาจใช้เวลาถึง 10 วินาทีในการเปลี่ยนเส้นทางไปยังโหนดที่ใช้งานใหม่ อย่าลืมบันทึกการเปลี่ยนแปลงของคุณ
ขั้นตอนต่อไป
- ไปที่แท็บ Load Balancing Rule และเพิ่มกฎใหม่ กำหนดกฎชื่อที่สมเหตุสมผล (SQL1433 หรือบางอย่าง) เลือก TCP protocol port 1433 (สมมติว่าคุณใช้อินสแตนซ์เริ่มต้นของ SQL Server) เลือก 1433 สำหรับ Backend port ด้วย สำหรับแบ็กเอนด์แบ็คเอนด์เราจะเลือกแบ็กเอนด์แบ็คเอนด์ที่เราสร้างไว้ก่อนหน้านี้ (BE) สำหรับ Probe นั้นเราจะเลือก Probe ที่เราสร้างมาก่อนหน้านี้
เราไม่ต้องการเปิดใช้งานการเก็บข้อมูลของเซสชัน แต่เราต้องการเปิดการใช้งาน Floating IP (Direct Server Return) ฉันได้ตั้งค่าหมดเวลาที่ไม่ได้ใช้งานไว้เป็นค่าดีฟอลต์ คุณอาจต้องการพิจารณาการเพิ่มมูลค่าให้สูงสุด เหตุผลคือฉันได้เห็นแอ็พพลิเคชันบางอย่างเช่นบันทึกข้อผิดพลาดของ SAP ล็อกแต่ละครั้งที่การเชื่อมต่อถูกทิ้งและจำเป็นต้องได้รับการจัดตั้งขึ้นใหม่
- ณ จุดนี้มีการกำหนดค่า ILB มีขั้นตอนสุดท้ายเท่านั้นที่ต้องใช้สำหรับ SQL Server Failover Cluster เราจำเป็นต้องอัพเดตทรัพยากร IP คลัสเตอร์ของ SQL แบบเดียวกับที่เรามีในแบบจำลองการปรับใช้แบบคลาสสิก เมื่อต้องการทำเช่นนั้นคุณจะต้องเรียกใช้สคริปต์ PowerShell ต่อไปนี้ในโหนดคลัสเตอร์เพียงหนึ่งโหนด จดบันทึก SubnetMask = "255.255.255.255" ไม่ได้เป็นความผิดพลาด ใช้หน้ากาก 32 บิตโดยไม่คำนึงถึงว่าหน้ากากเครือข่ายจริงของคุณคืออะไร
บันทึกย่อฉบับสุดท้าย
ในการทดสอบครั้งแรกฉันยังคงไม่สามารถเชื่อมต่อกับชื่อรีซอร์ส SQL แม้หลังจากทำตามขั้นตอนทั้งหมดข้างต้นแล้ว หลังจากที่โผงศีรษะของฉันเข้ากับผนังไม่กี่ชั่วโมงฉันพบว่าด้วยเหตุผลบางประการทรัพยากร SQL Cluster Name ไม่ได้ลงทะเบียนไว้ใน DNS ฉันไม่แน่ใจว่าเกิดขึ้นหรือไม่ว่าจะเกิดขึ้นอย่างต่อเนื่อง แต่ถ้าคุณมีปัญหาในการเชื่อมต่อฉันจะตรวจสอบ DNS และเพิ่มชื่อคลัสเตอร์ SQL และที่อยู่ IP เป็นระเบียน A ใหม่หากยังไม่ได้มีอยู่
และแน่นอนว่าอย่าลืมดีล Windows Firewall ที่ดี คุณต้องทำข้อยกเว้นสำหรับ 1433 และ 59999 หรือเพียงแค่ปิดเครื่องจนกว่าคุณจะได้รับการกำหนดค่าอย่างถูกต้องเช่นเดียวกับฉัน คุณอาจต้องการยกระดับ Azure Network Security Groups แทน Windows Firewall ในระบบเพื่อให้ได้ประสบการณ์แบบครบวงจรในทรัพยากร Azure ทั้งหมดของคุณ
ขอให้โชคดีและแจ้งให้เราทราบว่าคุณให้ออกอย่างไร
ไปที่นี่เพื่อดูว่า SIOS ช่วย บริษัท ทั่วโลกในการสร้าง SQL Server Failover Cluster อย่างไร
ทำซ้ำโดยได้รับอนุญาตจาก Clustering For Mere Mortals