AlwaysOn Availability Group Failover อัตโนมัติไม่ทำงาน


10

เล่นกับการตั้งค่า AG ฉันได้ WSFC ขึ้นและกำหนดค่าด้วยสองโหนดในกลุ่มความพร้อมใช้งานหนึ่งกลุ่มที่เรียกว่า DevClusterOnline ทั้งสองโหนด (หลัก DEV-AWEB5, DEV-AWEB6 รอง) กำลังเรียกใช้ Windows Server 2008 R2

หากฉันตรวจสอบสุขภาพของ AG ของฉันฉันจะได้รับสิ่งนี้:

คำอธิบายสุขภาพกลุ่มห้องว่าง

การเรียกใช้คิวรีด้านล่างจะส่งคืนชุดผลลัพธ์นี้: การซิงโครนัสและการตั้งค่า failover อัตโนมัติ

select
    ar.replica_server_name,
    availability_group_name = ag.name,
    ar.availability_mode_desc,
    ar.failover_mode_desc
from sys.availability_replicas ar
inner join sys.availability_groups ag
on ar.group_id = ag.group_id
order by availability_group_name, replica_server_name;

ถ้าฉันตัดการเชื่อมต่อ DEV-AWEB5 ฉันไม่สามารถเชื่อมต่อกับกลุ่มฟัง (DevListener) แต่ฉันสามารถ ping มันและมันจะตอบสนองต่อ ping ของฉัน แบบจำลอง - DEV-AWEB6 เข้าสู่สถานะการแก้ไขและฐานข้อมูลของฉันไม่สามารถเข้าถึงได้ อย่างไรก็ตามฉันสามารถไปที่ Management Studio ด้วยตนเองและตั้งค่า Failover เป็น DEV-AWEB6 จากนั้นฉันทำงานอีกครั้งและ DevListener จะยอมรับการเชื่อมต่ออีกครั้ง

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

เมื่อฉันตัดการเชื่อมต่อ DEV-AWEB5 ฉันคาดหวังว่าแบบจำลองของฉันจะยังคงเชื่อมต่อและด้วยเหตุนี้ DevListener ก็เช่นกัน ฉันคาดว่าการ failover อัตโนมัติจะทำให้ฉันสามารถเชื่อมต่อกับ AG Listener ได้อย่างโปร่งใส จากมุมมองของผู้ใช้ปลายทางการใช้ระบบเว็บไม่ควรสังเกตได้ว่าเซิร์ฟเวอร์ DB ตัวใดตัวหนึ่งลงไป

ฉันติดอยู่ที่นี่ใครช่วยกรุณาสอนฉันในสิ่งที่ฉันทำผิดได้ไหม?


1
รูปแบบโควรัมของคุณมีหน้าตาเป็นอย่างไร? มันเป็นโหนดส่วนใหญ่ที่เรียบง่าย? ถ้าเป็นเช่นนั้นนั่นอาจเป็นปัญหาของคุณ จากtechnet.microsoft.com/en-us/library/cc731739.aspxโมเดลquorumนั้นสามารถสูญเสีย (ครึ่งหนึ่งของโหนดในคลัสเตอร์) -1 เท่านั้น ดังนั้นถ้าคุณมีสองโหนดคลัสเตอร์ที่มีโหนดส่วนใหญ่โควรัมคุณสามารถจัดการกับความล้มเหลว0โหนด
Ben Thul

2
@BenThul หากคลัสเตอร์สูญเสียโควรัมแล้ว OP จะไม่สามารถล้มเหลวด้วยตนเอง
Thomas Stringer

คำตอบ:


6

ถ้าฉันยกเลิกการเชื่อมต่อ DEV-AWEB5

กำหนด "ตัดการเชื่อมต่อ" ถ้าคุณจะ ฉันเดาว่าคุณเก็บกล่องไว้ แต่ลด SQL Server ลง

ฉันไม่สามารถเชื่อมต่อกับกลุ่มฟัง (DevListener) แต่ฉันสามารถ ping ได้และมันจะตอบสนองต่อ ping ของฉัน

นั่นเป็นเพราะผู้ฟังเป็นเพียงชื่อเครือข่ายเสมือน (VNN) ภายในกลุ่มทรัพยากรคลัสเตอร์ WSFC สำหรับกลุ่มความพร้อมใช้ที่เป็นตัวแทน โหนด DEV_AWEB5 ของคุณยังคงเป็นเจ้าของกลุ่มทรัพยากรคลัสเตอร์ แต่เป็นเพียงทรัพยากรคลัสเตอร์ AG ส่วนใหญ่ที่อยู่ในสถานะล้มเหลว VNN จะต้องยังคงออนไลน์ (พฤติกรรมที่คาดหวัง) มันเพียงชี้ไปที่โหนดใดก็ตามที่เป็นเจ้าของกลุ่มทรัพยากรนั้น (ในกรณีนี้ DEV-AWEB5) ที่จริงแล้วถ้าคุณเปิดใช้งานการควบคุมระยะไกลของ PowerShell และคุณดำเนินการดังนี้:

Invoke-Command -ComputerName "YourListenerName" -ScriptBlock { $env:computername }

ในทำนองเดียวกันหากคุณสามารถ RDP เป็น DEV-AWEB5 (หากคุณมีความสามารถและความสามารถในการเข้าถึงเป็นต้น) จากนั้นคุณจะสามารถ RDP ได้โดยใช้ชื่อผู้ฟัง ( mstsc /v:YourListenerName) มันเป็นเพียง VNN

การคืนค่านั้นจะเป็นชื่อคอมพิวเตอร์ของโหนดที่คุณเป็นเจ้าของ

จากอาการทั้งหมดของคุณฉันยินดีที่จะเดิมพันว่าคุณมีค่าถึงเกณฑ์การเฟลโอเวอร์ของคุณแล้ว threshold failover กำหนดจำนวนครั้งที่คลัสเตอร์จะพยายาม failover กลุ่มทรัพยากรของคุณในช่วงเวลาที่ระบุ เริ่มต้นค่าเหล่านี้ failovers สูงสุดn - 1 (ที่nคือจำนวนโหนด) ในช่วงของ6 ชั่วโมง คุณสามารถเห็นได้จากคำสั่ง WSFC PowerShell ต่อไปนี้:

Get-ClusterGroup -Name "YourAgName" |
    Select-Object Name, FailoverThreshold, FailoverPeriod

ที่เพิ่งให้การตั้งค่า (ซึ่งคุณสามารถปรับเปลี่ยนถ้าคุณเลือกแน่นอน)

วิธีที่ดีที่สุดในการพิสูจน์ว่าเป็นกรณีนี้สำหรับคุณคุณจะต้องสร้างบันทึกคลัสเตอร์ (บันทึกเหตุการณ์ของระบบจะมีรายละเอียดเท่าที่ "ล้มเหลว" หรืออะไรทำนองนั้น)

Get-ClusterLog -Node "YourClusterNode" -TimeSpan <amount_of_minutes_since_failure>

โดยค่าเริ่มต้นจะใส่เข้าไปในโฟลเดอร์ "C: \ Windows \ Cluster \ Reports" และไฟล์นั้นเรียกว่า "Cluster.log"

หากคุณต้องเปิดบันทึกคลัสเตอร์นั้นคุณควรจะสามารถค้นหาสตริงต่อไปนี้ได้โดยระบุว่าเกิดอะไรขึ้นและทำไมมันจึงเกิดขึ้น:

ไม่ล้มเหลวเหนือกลุ่ม[YourClusterGroupName] , failoverCount [# of failovers] , ขีด จำกัด การเฟลโอเวอร์ [ค่าเกณฑ์การเข้าแทนที่ล้มเหลว] , nodeAvailCount [จำนวนโหนดที่มีอยู่ ]

ข้อความข้างต้นเป็นเพียง WSFC บอกคุณว่าจะไม่ล้มเหลวในกลุ่มของคุณเพราะมันเกิดขึ้นมากเกินไป (คุณถึงเกณฑ์)

ทำไมสิ่งนี้ถึงเกิดขึ้น เพียงเพื่อป้องกันผลกระทบ Ping-Pong ของทรัพยากรคลัสเตอร์กลับไปกลับมาบ่อยเกินไประหว่างโหนด

ในขณะที่สิ่งนี้จะเป็นเรื่องธรรมดาที่จะพบกับขีด จำกัด เหล่านี้ในการทดสอบการเฟลโอเวอร์โดยทั่วไปแล้วการผลิตจะชี้ไปที่ปัญหาที่ควรได้รับการตรวจสอบ


2
ขอบคุณสำหรับความช่วยเหลือของคุณฉันทำตามคำแนะนำของคุณ แต่ในที่สุดฉันก็พบว่านี่ไม่ใช่ปัญหา เหตุผลที่ฉันไม่สามารถทำให้ AG ล้มเหลวโดยอัตโนมัติได้เพราะฉันไม่ได้กำหนดค่าการพึ่งพา WSFC อย่างถูกต้อง ตามที่ปรากฎฉันต้องการเพิ่ม MSSQL เป็นทรัพยากรคลัสเตอร์ (Generic Service) และเพิ่มเป็นการพึ่งพาใน Failover Cluster Manager พร้อมกับผู้ฟัง AG นอกจากนี้ยังมีความจำเป็นต้องทำเครื่องหมายในช่องทำเครื่องหมาย 'หากการรีสตาร์ทไม่สำเร็จล้มเหลวเหนือทรัพยากรทั้งหมดในบริการหรือแอปพลิเคชันนี้' ฉันแน่ใจว่าคุณอยู่ภายใต้ความประทับใจที่ฉันได้ทำไปแล้ว
Marcus

1

การเพิ่ม MSSQL เป็นทรัพยากรบริการทั่วไปไม่ใช่คำตอบ

นั่นจะทำให้ Cluster Manager เป็นผู้ดูแลบริการ SQL Server, OK, ใช่มันจะล้มเหลวโดยอัตโนมัติ แต่คุณจะสังเกตเห็นใน SQL Server Configuration Manager ว่าตอนนี้บริการของคุณถูกตั้งค่าเป็น "Manual" ซึ่งระบุว่า Cluster Manager เป็น ตอนนี้ในการควบคุมการบริการเซิร์ฟเวอร์ SQL ของคุณ

คุณกำลังวาง Cluster Manager ในความดูแลของแอปพลิเคชันที่ไม่ใช่คลัสเตอร์

มันจะจบลงด้วยน้ำตา

แนวทางที่ถูกต้องในการกำหนดค่ากลุ่มความพร้อมใช้งานของ SQL Server อย่างถูกต้องตามเอกสารประกอบของ MS

และให้แน่ใจว่าคุณไม่เกินพารามิเตอร์ Fail-over ตามที่กำหนดไว้ใน Cluster Manager> บทบาท> แท็บ Fail-over

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

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