मुझे लगता है कि जब लोग Oracle RAC आर्किटेक्चर डिजाइन कर रहे होते हैं, तो वे अक्सर अपनी कार्यान्वयन योजनाओं में N+1 अतिरेक के बारे में नहीं सोचते हैं। Oracle RAC को लागू करने के दो कारण हैं, उपलब्धता और मापनीयता। इस चर्चा के प्रयोजनों के लिए, मैं केवल उपलब्धता पक्ष पर ध्यान केंद्रित कर रहा हूं। यदि आपके RAC परिनियोजन केवल मापनीयता कारणों से हैं, तो हो सकता है कि यह विषय आप पर लागू न हो।
तो N+1 अतिरेक क्या है? सीधे शब्दों में कहें, यदि आपको किसी चीज़ की N इकाइयों की आवश्यकता है, तो अतिरेक के उद्देश्यों के लिए, आपके पास उस वस्तु का N+1 होना चाहिए। आइए एक डेटाबेस सर्वर को देखें। इसमें बिजली की आपूर्ति होनी चाहिए। यह एक आवश्यकता है। काम करने वाली बिजली की आपूर्ति के बिना, सर्वर बिल्कुल भी काम नहीं करेगा। बिजली की आपूर्ति की न्यूनतम संख्या 1 है। अगर हम चाहते हैं कि इस सर्वर की उपलब्धता उच्च स्तर की हो, तो हम सुनिश्चित करेंगे कि इसमें एन + 1 बिजली की आपूर्ति है, या इस मामले में दोहरी बिजली की आपूर्ति है। यदि केवल एक बिजली की आपूर्ति है और यह विफल हो जाता है, तो यह सर्वर को अपने साथ ले जाता है। यदि हमारे पास एक अतिरिक्त बिजली की आपूर्ति है, एक अतिरिक्त इकाई है, तो एक बिजली आपूर्ति का नुकसान इसके साथ सर्वर को डाउन नहीं करेगा। अतिरेक का होना बहुत अच्छी बात है और उच्च उपलब्धता अवसंरचना के लिए एक आवश्यक घटक है।
Oracle RAC सिस्टम को डिज़ाइन करते समय, DBA को यह निर्धारित करने की आवश्यकता होती है कि अंतिम उपयोगकर्ता की मांगों का समर्थन करने के लिए कितने नोड्स की आवश्यकता है। यदि डीबीए निर्धारित करता है कि 4 नोड्स की आवश्यकता है, और इस आरएसी क्लस्टर को उच्च उपलब्धता लक्षण प्रदर्शित करना चाहिए, तो डीबीए के लिए 5 नोड क्लस्टर (4+1) बनाना महत्वपूर्ण है। यदि संसाधन की मांग 4 नोड्स को व्यस्त रखने के लिए पर्याप्त है और एक नोड खो जाता है, तो शेष 3 कार्यभार को बनाए रखने में सक्षम नहीं होंगे। यदि डीबीए आरएसी सिस्टम को एन+1 क्षमता को ध्यान में रखते हुए बनाता है, तो एक नोड का नुकसान अंतिम उपयोगकर्ताओं द्वारा ध्यान देने योग्य नहीं होगा। यदि DBA N+1 अतिरेक के बिना RAC क्लस्टर बनाता है, तो एक नोड का नुकसान अंतिम उपयोगकर्ता के प्रदर्शन के लिए इतना भयानक हो सकता है, कि पूरा क्लस्टर भी डाउन हो सकता है। अपने RAC कार्यान्वयनों को डिज़ाइन करते समय, N+1 अतिरेक के लिए प्रयास करें।
मुझे याद है दो साल पहले, मेरे पास एक आरएसी क्लस्टर था जिसने एक नोड खो दिया था। कोई बात नहीं, हमारे पास अभी भी दो नोड उपलब्ध थे। जैसा कि मैंने दो शेष नोड्स के प्रदर्शन को देखा, वे बहुत अभिभूत लग रहे थे। हमारे कॉल सेंटर को शिकायतें मिलने लगीं। मैंने आईटी टीम के अन्य प्रशासकों के साथ काम किया ताकि उस नोड को वापस लाया जा सके और जितनी जल्दी हो सके चल सके, लेकिन यह हमेशा ऐसा नहीं हो सकता है यदि आउटेज का कारण हार्डवेयर से संबंधित है और भागों को बदलने की आवश्यकता है। नोड के वापस सेवा में आने के बाद, मैंने हफ्तों बाद क्लस्टर के प्रदर्शन की निगरानी की। इस प्रणाली को शुरू में डिजाइन किए जाने के बाद से हमारा उपयोग बढ़ गया था। हमने शुरू में इस प्रणाली को N+1 अतिरेक को ध्यान में रखते हुए डिज़ाइन किया था, लेकिन हमारा उपयोग बढ़ता गया और N 2 से 3 हो गया। हमारा वर्तमान 3-नोड क्लस्टर अब N+1 बेमानी नहीं था। इसलिए मैंने प्रबंधन के साथ काम किया ताकि अगले साल के बजट में एक नया नोड खरीदने के लिए पर्याप्त धन लगाया जा सके और यह सुनिश्चित किया जा सके कि ओरेकल को उस पर लाइसेंस प्राप्त था। मुझे रात में यह जानकर बहुत अच्छी नींद आती है कि मैं N+1 अतिरेक पर वापस आ गया हूँ।
कई कार्यान्वयनों की तरह, मेरी आरएसी प्रणाली हमारे बुनियादी ढांचे में निर्मित एकमात्र उच्च उपलब्धता सुविधा नहीं है। यह RAC डेटाबेस Oracle के डेटा गार्ड के साथ एक भौतिक स्टैंडबाय डेटाबेस के लिए प्राथमिक है। अन्य Oracle DBA के साथ RAC स्टैंडबाय डेटाबेस की चर्चा करते समय मुझे आश्चर्य होता है कि उनमें से कितने अपने स्टैंडबाय के लिए N + 1 क्षमता के बारे में नहीं सोच रहे हैं। प्राथमिक डेटा केंद्र किसी कारण से अनुपलब्ध होने की स्थिति में भौतिक स्टैंडबाय डेटाबेस मेरा सुरक्षा जाल है। मैंने कई Oracle DBA को मल्टी-नोड RAC प्राइमरी के लिए सिंगल इंस्टेंस स्टैंडबाय लागू करते देखा है। आउच! मुझे आशा है कि उन्हें कभी भी असफल नहीं होना पड़ेगा। उनके पूरे मल्टी-नोड आरएसी क्लस्टर का कार्यभार उस सिंगल इंस्टेंस स्टैंडबाय पर शक्तिशाली रूप से संघर्ष करेगा। इसलिए जब आप अपने RAC कार्यान्वयन को प्राथमिक और स्टैंडबाय दोनों के लिए डिज़ाइन कर रहे हैं, तो आर्किटेक्चर डिज़ाइन पर अपने N+1 अतिरेक प्रभाव पर विचार करें।
जहां मैं शायद कई लोगों से अलग हूं, वह यह है कि मेरे भौतिक स्टैंडबाय कार्यान्वयन एन + 1 सक्षम नहीं हैं, बल्कि एन। मैं अपने भौतिक स्टैंडबाय के लिए अनावश्यक अतिरिक्त नोड को छोड़ देता हूं। ऐसा क्यों है? विशुद्ध रूप से लागत के दृष्टिकोण से। मेरा फिजिकल स्टैंडबाय सिर्फ एक सुरक्षा जाल है। मैं चाहता हूं कि यह मेरे लिए उस दिन काम करे जिस दिन मुझे इसकी आवश्यकता होगी। लेकिन मुझे उम्मीद है कि इसकी कभी जरूरत नहीं पड़ेगी। यदि जोखिम वास्तविकता बन जाता है तो फिजिकल स्टैंडबाय मेरी बीमा पॉलिसी है। मेरे लिए, स्टैंडबाय साइट पर वह अतिरिक्त "+1" अति-बीमा है। मैं भौतिक हार्डवेयर और Oracle लाइसेंसिंग पर बचत कर सकता हूं।
तो मान लीजिए कि दिन आ गया है और मैं स्टैंडबाय के लिए फेलओवर करता हूं। मैंने अपना N+1 अतिरेक खो दिया है। लेकिन इस बात की क्या संभावना है कि मैं प्राथमिक डेटा केंद्र * और* अपने स्टैंडबाय क्लस्टर में एक नोड खो दूं? काफी पतली संभावनाएं। एक ही समय में दो साइटों पर विफलता की संभावना बहुत कम है। इस बिंदु पर, हमारी आईटी टीम इस बात का मूल्यांकन कर रही है कि हमारा प्राथमिक डेटा केंद्र क्यों खो गया है और जब हम अपने संचालन को उस सुविधा में वापस कर सकते हैं। यदि प्राथमिक डेटा केंद्र अपनी सारी शक्ति खो देता है और उपयोगिता कंपनी का कहना है कि कल तक सेवा बहाल हो जाएगी, तो हम केवल स्टैंडबाय डेटा सेंटर पर चलेंगे, भले ही हमारे पास आरएसी डेटाबेस के लिए केवल एन नोड्स हों। हालाँकि, यदि प्राथमिक डेटा केंद्र को आग से मिटा दिया गया था, तो इसे फिर से चालू होने में कई महीने लगेंगे। यह इस बिंदु पर है कि मुझे उस भौतिक स्टैंडबाय को एन + 1 रिडंडेंसी तक प्राप्त करने की योजना बनाने की आवश्यकता है क्योंकि प्राथमिक के रूप में उस स्टैंडबाय का उपयोग करने में हमारा समय काफी लंबा होगा। इसलिए हम जल्दी से एक और सर्वर ऑर्डर करते हैं और इसे जल्द से जल्द क्लस्टर में जोड़ते हैं। इसलिए मैं अपने स्टैंडबाय आरएसी डेटाबेस को एन के रूप में डिजाइन करता हूं, न कि एन + 1 को कम क्रम में एन + 1 तक बढ़ाने के लिए, अगर हम निर्धारित करते हैं कि हम लंबे समय तक स्टैंडबाय का उपयोग वास्तविक रूप से करेंगे।
तो एक और विशेष मामला है जिस पर मैं चर्चा करना चाहूंगा। यहीं पर डीबीए निर्धारित करता है कि एन =1। वर्तमान कार्यभार आवश्यकताओं के लिए, एक नोड पर्याप्त है। लेकिन हम उच्च उपलब्धता चाहते हैं इसलिए हम प्राथमिक डेटाबेस के लिए दो-नोड आरएसी क्लस्टर तैयार करते हैं। अब हमारे पास प्राथमिक में निर्मित N+1 अतिरेक है। मेरे अंतिम पैराग्राफ के बाद, मेरे स्टैंडबाय डेटाबेस को केवल 1 नोड की आवश्यकता है। कुछ लोग जो गलती करते हैं, वह है स्टैंडबाय को सिंगल-इंस्टेंस डेटाबेस के रूप में बनाना। अब तक, उनका तर्क समझ में आता है। प्राथमिक N+1 है और स्टैंडबाय N है। अब तक बहुत अच्छा है। जहां मैं अलग हूं वह यह है कि मैं स्टैंडबाय को एक नोड आरएसी क्लस्टर बनाता हूं, न कि शुद्ध एकल-आवृत्ति कार्यान्वयन। इसका कारण भविष्य की वृद्धि है। किसी बिंदु पर, डीबीए पा सकता है कि एन अब प्राथमिक में 1 के बराबर नहीं है। उपयोग बढ़ गया है और N को अब 2 होने की आवश्यकता है। डीबीए प्राथमिक को 3 नोड्स (2+1) तक बढ़ाना चाहता है। क्लस्टर में एक नया नोड जोड़ने और उस नए नोड में आरएसी डेटाबेस का विस्तार करने के लिए शून्य डाउनटाइम के साथ यह आसानी से नीचे है। लेकिन यह स्टैंडबाय पर इतनी आसानी से नहीं किया जाता है ताकि स्टैंडबाय को 2-नोड क्लस्टर बनाया जा सके यदि वह 1 नोड जो मौजूद है वह आरएसी-सक्षम नहीं है। यदि एक शुद्ध एकल-आवृत्ति स्टैंडबाय मौजूद है, तो डीबीए को इसे स्क्रैप करने और इसे दो-नोड क्लस्टर में ले जाने की आवश्यकता है। यदि डीबीए में दूरदर्शिता थी और ग्रिड इन्फ्रास्ट्रक्चर स्थापित किया था जैसे कि भौतिक स्टैंडबाय एकल-नोड क्लस्टर थे, तो सभी डीबीए को एक नया नोड जोड़ना होगा, जैसे उन्होंने प्राथमिक तरफ किया था।
जैसा कि आप अपने आरएसी कार्यान्वयन को डिजाइन कर रहे हैं, यह सुनिश्चित करने पर विचार करें कि आपके पास प्राथमिक पर एन + 1 क्षमता और स्टैंडबाय पर कम से कम एन है। यदि कोई कंपनी निर्धारित करती है कि स्टैंडबाय बहुत महत्वपूर्ण है, तो वे स्टैंडबाय पर भी एन + 1 को लागू करना चाह सकते हैं। यदि DBA निर्धारित करता है कि N=1, स्टैंडबाय को कम से कम एक नोड RAC क्लस्टर बनाने पर विचार करें।