हमेशा उपलब्धता समूह स्वचालित विफलता काम नहीं करती है


10

एजी सेटअप के साथ खेलते हुए मेरे पास डब्ल्यूएसएफसी है और देवक्स्टरऑनलाइन नामक एक उपलब्धता समूह में दो नोड्स के साथ कॉन्फ़िगर किया गया है। दोनों नोड्स (DEV-AWEB5 प्राथमिक, DEV-AWEB6 द्वितीयक) Windows Server 2008 R2 चला रहे हैं।

अगर मैं अपने एजी के स्वास्थ्य की जांच करूं तो मुझे यह मिल जाएगा:

उपलब्धता समूह स्वास्थ्य विवरण

नीचे दिए गए क्वेरी को चलाने से यह परिणाम सेट हो जाएगा: तुल्यकालिक प्रतिबद्ध और स्वत: विफलता सेटअप

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) से कनेक्ट नहीं हो सकता, लेकिन मैं इसे पिंग कर सकता हूं और यह मेरे पिंग का जवाब देगा। प्रतिकृति - DEV-AWEB6 एक RESOLVING स्थिति में चला जाता है और मेरा DB अस्वीकार्य है। हालांकि, मैं मैन्युअल रूप से मैनेजमेंट स्टूडियो में जा सकता हूं और फेलओवर को DEV-AWEB6 में सेट कर सकता हूं और फिर मैं ऊपर और फिर से चलूंगा और DevListener एक बार फिर कनेक्शन स्वीकार कर लूंगा।

यह देखते हुए कि ये तथ्य इस बात की पुष्टि करते हैं कि असफलता वास्तव में काम करती है, कि मेरे पास समतुल्य आवागमन और स्वचालित फेलओवर कॉन्फ़िगर किया गया है, मुझे नहीं पता कि मेरे सेटअप में खराबी क्या है।

जब मैं DEV-AWEB5 को डिस्कनेक्ट करता हूं, तो मुझे उम्मीद है कि मेरी प्रतिकृति कनेक्शन बनाए रखेगी और इस प्रकार, DevListener भी। मुझे उम्मीद है कि स्वचालित विफलता मुझे पारदर्शी रूप से एजी लिसनर से कनेक्ट करने की अनुमति देगी। किसी वेब सिस्टम का उपयोग करते हुए एंड-यूज़र परिप्रेक्ष्य से, यह ध्यान देने योग्य नहीं होना चाहिए कि डीबी सर्वरों में से एक नीचे जाता है।

मैं यहां फंस गया हूं, क्या कोई मुझे गलत कर सकता है जो मैं गलत कर रहा हूं?


1
आपका कोरम मॉडल कैसा दिखता है? क्या यह साधारण नोड बहुमत है? यदि हां, तो यह आपकी समस्या हो सकती है। से technet.microsoft.com/en-us/library/cc731739.aspx , कि कोरम मॉडल केवल (क्लस्टर में नोड्स के आधे) का नुकसान बनाए रख सकते हैं -1। इसलिए, यदि आपके पास नोड बहुमत कोरम के साथ दो नोड क्लस्टर हैं, तो आप 0 नोड विफलताओं को बनाए रख सकते हैं ।
बजे बेन थुल

2
@BenThul यदि क्लस्टर ने कोरम खो दिया तो ओपी मैन्युअल रूप से विफल नहीं हो पाएगा।
थॉमस स्ट्रिंगर

जवाबों:


6

अगर मैं DEV-AWEB5 को डिस्कनेक्ट करता हूं

"डिस्कनेक्ट" को परिभाषित करें, यदि आप करेंगे। मेरा अनुमान है कि आपने बॉक्स को ऊपर रखा है, लेकिन SQL सर्वर को नीचे ले लिया है।

मैं समूह श्रोता (DevListener) से कनेक्ट नहीं कर सकता, लेकिन मैं इसे पिंग कर सकता हूं और यह मेरे पिंग का जवाब देगा

ऐसा इसलिए है क्योंकि श्रोता प्रतिनिधित्व उपलब्धता समूह के लिए WSFC क्लस्टर संसाधन समूह के भीतर सिर्फ एक आभासी नेटवर्क नाम (VNN) है। आपका DEV_AWEB5 नोड अभी भी क्लस्टर संसाधन समूह का मालिक है, लेकिन यह सिर्फ एजी क्लस्टर संसाधन सबसे अधिक संभावना है जो एक विफल स्थिति में है। VNN अभी भी ऑनलाइन (अपेक्षित व्यवहार) होना चाहिए। यह केवल उस नोड को इंगित कर रहा है जो उस संसाधन समूह का मालिक है (इस मामले में, DEV-AWEB5)। वास्तव में, यदि आपके पास पॉवरशेल रेमोटिंग सक्षम है, और आपने निम्नलिखित भाग लिया:

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

इसी तरह, यदि आप RDP को DEV-AWEB5 में प्रदान कर सकते हैं (बशर्ते आपके पास क्षमता और पहुंच, आदि हो) तो आप श्रोता नाम ( mstsc /v:YourListenerName) का उपयोग करके आरडीपी में सक्षम होंगे । यह सिर्फ एक VNN है।

उस की वापसी आपके ही नोड के कंप्यूटर का नाम होगा।

आपके सभी लक्षणों के अनुसार, मैं शर्त लगाने को तैयार हूँ कि आप अपनी विफलता की सीमा तक पहुँच चुके हैं। विफलता थ्रेशोल्ड निर्धारित करता है कि क्लस्टर आपके संसाधन समूह को निर्दिष्ट समय अवधि में विफल करने का प्रयास कितनी बार करेगा। इन मानों की डिफ़ॉल्ट अधिकतम विफलताओं n - 1 (जहां n नोड्स की गिनती है) 6 घंटे की अवधि में । आप निम्न WSFC पॉवरशेल कमांड के माध्यम से देख सकते हैं:

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

यह सिर्फ आपको सेटिंग्स देता है (जो आप संशोधित कर सकते हैं यदि आप चुनते हैं, तो निश्चित रूप से)।

यह साबित करने का सबसे अच्छा तरीका है कि यह आपके लिए मामला है, आपको क्लस्टर लॉग उत्पन्न करने की आवश्यकता होगी (सिस्टम ईवेंट लॉग केवल विस्तार में जाते हैं जहां तक ​​"विफल", या ऐसा कुछ)।

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

वह डिफ़ॉल्ट रूप से "C: \ Windows \ Cluster \ Report" फ़ोल्डर में डाल दिया जाएगा, और फ़ाइल को "Cluster.log" कहा जाता है।

यदि आप उस क्लस्टर लॉग को खोलना चाहते थे, तो आपको वहां निम्नलिखित स्ट्रिंग को खोजने में सक्षम होना चाहिए, यह दर्शाता है कि वास्तव में क्या हुआ और यह क्यों हुआ:

समूह [YourClusterGroupName] , फेलओवरकाउंट [# फॉलोवर्स का] , फेलओवर थ्रेशोल्ड [फेलओवर थ्रेशोल्ड वैल्यू] , नोडवैलकाउंट [नोड उपलब्ध काउंट ] पर विफल नहीं ।

उपरोक्त संदेश बस डब्ल्यूएसएफसी आपको बता रहा है कि यह आपके समूह को विफल नहीं करेगा क्योंकि यह बहुत अधिक हुआ है (आपने सीमा को मारा)।

ऐसा क्यों होता है? बस नोड्स के बीच आगे और पीछे होने वाले क्लस्टर संसाधनों के पिंग-पोंग प्रभाव को रोकने के लिए।

हालांकि, इन थ्रेसहोल्ड को फेलओवर परीक्षण में मारना सामान्य होगा, उत्पादन में यह आमतौर पर एक समस्या की ओर इशारा करता है जिसकी जांच होनी चाहिए।


2
आपकी मदद के लिए धन्यवाद, मैंने आपके निर्देशों का पालन किया लेकिन मैंने आखिरकार पाया कि यह समस्या नहीं थी। इसका कारण यह है कि मुझे एजी को स्वचालित रूप से विफलता नहीं मिली क्योंकि मैंने WSFC निर्भरता को सही तरीके से कॉन्फ़िगर नहीं किया था। जैसा कि यह पता चला है कि मुझे MSSQL को एक क्लस्टर संसाधन (जेनेरिक सेवा) के रूप में जोड़ने और फ़ेलओवर क्लस्टर प्रबंधक में एजी श्रोता के साथ एक निर्भरता के रूप में जोड़ने की आवश्यकता थी। इसके अलावा, चेकबॉक्स पर टिक करना आवश्यक है 'यदि पुनरारंभ असफल है, तो इस सेवा या एप्लिकेशन के सभी संसाधनों पर विफल रहें'। मुझे यकीन है कि आप इस धारणा के तहत थे कि मैंने यह पहले ही कर लिया है।
माक्र्स

1

एक सामान्य सेवा संसाधन के रूप में MSSQL जोड़ना उत्तर नहीं है।

यह सिर्फ SQL सर्वर सेवा के प्रभारी क्लस्टर प्रबंधक को रखेगा, ठीक है, हाँ यह स्वचालित रूप से विफल हो जाएगा, लेकिन आप SQL सर्वर कॉन्फ़िगरेशन प्रबंधक में देखेंगे कि आपकी सेवाएं अब "मैनुअल" पर सेट हैं, यह दर्शाता है कि क्लस्टर प्रबंधक है अब आपके SQL सर्वर सेवा के नियंत्रण में है।

आप क्लस्टर प्रबंधक को एक गैर-क्लस्टर अनुप्रयोग के प्रभारी डाल रहे हैं।

यह आंसुओं में समा जाएगा।

सही तरीके से इसे MS प्रलेखन के अनुसार SQL सर्वर उपलब्धता समूहों को सही ढंग से कॉन्फ़िगर करने के लिए।

और यह भी सुनिश्चित करें कि आप फेल-ओवर पैरामीटर्स को क्लस्टर मैनेजर> रोल्स> फेल-ओवर टैब में परिभाषित नहीं कर रहे हैं।

यदि आप इन सीमाओं को पार कर रहे हैं, तो क्लस्टर आपके संसाधनों को विफल नहीं करेगा और एप्लिकेशन इवेंट लॉग में एक त्रुटि पोस्ट की जाएगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.