मूल रूप से 12 दिसंबर, 2019 को ObjectRocket.com/blog पर प्रकाशित हुआ
छुट्टियां आ रही हैं, और यह सीज़न रैकस्पेस ऑब्जेक्टरॉकेट इतिहास में एक महत्वपूर्ण मील के पत्थर की एक साल की सालगिरह का प्रतीक है। 2019 की छुट्टियों के मौसम के लिए, हमने उच्च उपलब्धता की शुरुआत की। (HA) ObjectRocket PostgreSQL® सेवा पर। ObjectRocket पर हमारे द्वारा प्रदान किया जाने वाला प्रत्येक डेटास्टोर उत्पादन कार्यभार के लिए बनाया गया है, जिसके लिए हमारे सभी ग्राहकों के लिए HA की आवश्यकता होती है।
HA क्यों महत्वपूर्ण है?
यदि शब्द HA आपके लिए अपरिचित है, आइए एक त्वरित समीक्षा करें कि HA क्यों महत्वपूर्ण है। सबसे पहले और सबसे महत्वपूर्ण, HA के तीन मुख्य लाभ हैं:
- शून्य या बहुत कम डाउनटाइम
- डेटा हानि से सुरक्षा
- डेटाबेस के प्रदर्शन में वृद्धि
डेटास्टोर में HA को लागू करने के लिए कई तरीके हैं और कई तकनीकें उपलब्ध हैं। हालाँकि, लगभग किसी भी HA समाधान का एक प्रमुख घटक डेटा प्रतिकृति है। इसका मतलब है कि आप केवल एक डेटासेट या डेटाबेस देखते हैं, लेकिन पर्दे के पीछे, उस डेटा की एक या अधिक सटीक प्रतिकृतियां (प्रतियां) हैं। यदि मुख्य डेटाबेस, प्राथमिक , अधिकांश प्रतिकृति योजनाओं में, हार्डवेयर विफलता, सॉफ़्टवेयर विफलता या भ्रष्टाचार जैसी समस्या का सामना करना पड़ता है, एक प्रतिकृति मास्टर की जगह ले सकती है। वह अंतिम बिंदु अधिकांश एचए सिस्टम के दूसरे मुख्य घटक, एक स्वचालित विफलता तंत्र (अन्य योजनाओं में पदोन्नति, या चुनाव) को छूता है। प्रतिकृति डेटा की कई उपलब्ध स्वस्थ प्रतियाँ सुनिश्चित करती है। हालांकि, आपको इसके लिए भी तैयार रहना चाहिए:
- प्राथमिक पर अनपेक्षित समस्याओं का पता लगाएं।
- प्राथमिक को बढ़ावा देने के लिए उपयुक्त प्रतिकृति का चयन करें।
- असफल प्राथमिक की मरम्मत करें और एक नई प्रतिकृति बनाएं (जिसका आपने प्रचार किया था उसे बदलने के लिए)।
अंतिम घटक, जिसे कभी-कभी दूसरे के साथ जोड़ा जाता है, अनुरोधों को सही नोड पर रूट करने के लिए एक उपकरण है। यदि आप डेटा लिखने के लिए अपने आवेदन को प्राथमिक की ओर इंगित करते हैं (सर्वोत्तम अभ्यास) और वह प्राथमिक विफल हो जाता है, तो आपका आवेदन नए प्रचारित प्राथमिक की ओर संकेत नहीं करेगा। एक बार फिर, इसे हल करने के कई तरीके हैं, लेकिन सबसे लोकप्रिय प्रॉक्सी या लोड बैलेंसर का उपयोग करना है। अपने एप्लिकेशन को प्रॉक्सी या लोड बैलेंसर पर इंगित करें, और यह आपके एप्लिकेशन को सीधे डेटाबेस पर इंगित किए बिना आपके ट्रैफ़िक को भेजने के लिए सही जगह निर्धारित करता है। सर्वर।
यह सब एक साथ जोड़ने के लिए, स्वचालित फ़ेलओवर सिस्टम और प्रॉक्सी/लोड बैलेंसर फ़ेलओवर होने पर एक साथ काम करते हैं। जब आप किसी नए मास्टर का प्रचार करते हैं, तो प्रॉक्सी या लोड बैलेंसर ट्रैफ़िक को नए मास्टर की ओर निर्देशित करता है। आपके आवेदन में कुछ भी नहीं बदलता है, और पदोन्नति के दौरान प्रतिक्रियाओं में संभावित ब्लिप के अलावा, आवेदन को यह जानने की भी आवश्यकता नहीं है कि कोई पदोन्नति हुई है। यह प्रक्रिया का एक उच्च-स्तरीय अवलोकन है, जिसमें मूलभूत घटकों को शामिल किया गया है। आइए अब उन तकनीकों के बारे में जानें, जिनका उपयोग हम अपने समाधान के प्रत्येक घटक के लिए करते हैं।
वे तकनीकें जिनका हम उपयोग करते हैं
अब जब हमने प्रमुख घटकों की समीक्षा कर ली है, तो आइए जानें कि हम पिछले प्रत्येक घटक को कैसे प्रदान कर रहे हैं:
प्रतिकृति
Postgres कई प्रतिकृति योजनाओं का मूल रूप से समर्थन करता है। आप वर्तमान में एक या दो प्रतिकृतियां कॉन्फ़िगर कर सकते हैं, लेकिन हम भविष्य में विकल्पों का विस्तार करेंगे। प्रतिकृति का एक और अच्छा बिंदु तुल्यकालिक . की अवधारणा है और एसिंक्रोनस प्रतिकृति। सिंक्रोनस प्रतिकृति के साथ, प्राथमिक प्रत्येक प्रतिकृति के लिए यह पुष्टि करने के लिए प्रतीक्षा करता है कि एक लेखन समाप्त होने से पहले प्राथमिक लेखन को पूर्ण मानता है। एसिंक्रोनस में, प्राथमिक आग प्रतिकृतियों को लिखती है, लेकिन आवेदन या क्लाइंट के लिखने की पुष्टि करने से पहले उनके पूरा होने की पुष्टि नहीं करती है। हमारे द्वारा उपयोग किया जाने वाला समाधान हमें एसिंक्रोनस और सिंक्रोनस प्रतिकृति दोनों का समर्थन करने में सक्षम बनाता है। डिफ़ॉल्ट रूप से, हम सिंक्रोनस प्रतिकृति को सक्षम करते हैं, और हम यह पुष्टि करने के लिए अपने वातावरण में प्रतिकृति को कॉन्फ़िगर करते हैं कि प्राथमिक और कम से कम एक प्रतिकृति के लिए राइट-आगे लॉग (WAL) को लिखा गया है। आप प्रति लेन-देन या सत्र के लिए सेटिंग बदल सकते हैं।
विफलता और प्रचार
फ़ेलओवर और प्रचार कार्यक्षमता प्रदान करने के लिए कई ओपन-सोर्स और तृतीय-पक्ष टूल हैं, लेकिन हमने Patroni को चुना निम्नलिखित श्रेष्ठ विशेषताओं के कारण:
- मूल Kubernetes® समर्थन: हमने कुबेरनेट्स पर अपना नया मंच आधारित किया है, ताकि आप किसी अन्य राज्य या सर्वसम्मति तंत्र की आवश्यकता के बजाय एक उपकरण अपना सकें जो कुबेरनेट्स में प्लग इन हो। यह विकल्प महत्वपूर्ण है।
- सक्रिय विकास और समुदाय: पेट्रोनी के आसपास का समुदाय बेहद सक्रिय है और कार्यक्षमता बढ़ने पर हमारे अपने अतिरिक्त सहयोग और योगदान करने में सक्षम है। इसके अलावा, कॉन्फ़्रेंस वार्ता और दस्तावेज़ीकरण से लेकर ज़ालैंडो के ऑपरेटर उदाहरण तक, बहुत सारे संसाधन हैं। , तकनीक सीखने में हमारी मदद करने के लिए।
- सरल वास्तुकला: अन्य उपलब्ध उपकरणों में से कई को लोड संतुलन और प्राथमिक प्रचार को संभालने के लिए पोस्टग्रेज इंस्टेंस के बाहर समर्पित संसाधनों की आवश्यकता होती है। पेट्रोनी पोस्टग्रेज के आसपास लपेटता है और अन्य कार्यों को संभालने के लिए देशी कुबेरनेट्स घटकों का उपयोग करता है, इसलिए हमने एचए को अतिरिक्त संसाधन आवंटित नहीं किए।
यद्यपि आपका माइलेज भिन्न हो सकता है, हमने पाया है कि पेट्रोनी हमारे वातावरण में कॉन्फ़िगर करने और बनाए रखने के लिए एक उत्कृष्ट आसान है। आप मूल रूप से पेट्रोनी को बताते हैं कि कौन सा एचए समूह एक नोड का हिस्सा है, और यह बाकी काम करता है। यह प्रतिकृति को कॉन्फ़िगर करता है, विफल प्राथमिक का पता लगाता है, प्रतिकृतियों को बढ़ावा देता है, नई प्रतिकृतियां बनाता है, और यहां तक कि प्रक्रिया के अंतिम भाग पर कुबेरनेट्स के साथ काम करता है।
अनुरोध रूटिंग
अंत में, पेट्रोनी और एक देशी कुबेरनेट्स निर्माण करते हैं, जिसे सेवा . कहा जाता है , पहेली के अंतिम भाग का प्रतिनिधित्व करते हैं। कुबेरनेट्स में एक सेवा एक प्रॉक्सी की तरह काम करती है जो कंटेनरों के समूह (एक पॉड) पर लेबल के आधार पर ट्रैफ़िक को रूट करती है। पेट्रोनी एक्टिव प्राइमरी को मास्टर . के साथ लेबल करता है लेबल, और कुबेरनेट्स डेटाबेस ट्रैफ़िक को केवल मास्टर लेबल के साथ पॉड तक रूट करने का ध्यान रखता है। इसे एक उच्च-स्तरीय विवरण याद रखें, लेकिन व्यवहार में यह कैसे काम करता है। इस प्रक्रिया को एक सेकेंडरी पोर्ट प्रदान करने के लिए भी बढ़ाया जा सकता है जो डेटाबेस को प्रतिकृतियों के लिए अनुरोध पढ़ता है (प्राथमिक पर लोड को कम करने के लिए)।
यह जगह में मौजूद तकनीकों का एक त्वरित विवरण है, लेकिन अगर आप और सुनना चाहते हैं तो हमें बताएं। हम अपने ग्राहकों के साथ दुकान पर बात करना पसंद करते हैं।
इसे अभी आज़माएं!
एक उदाहरण बनाएं मिशन नियंत्रण . में स्क्रीन चरण 2 के अंतर्गत अपना उदाहरण कस्टमाइज़ करें . नामक एक अनुभाग है . वहां आप तीर को हरा करने के लिए बॉक्स पर क्लिक कर सकते हैं, जो आपके PostgreSQL उदाहरण के HA प्रतिकृतियां जोड़ता है। आप ऊपर दाईं ओर स्थित दीर्घवृत्त (...) पर क्लिक करके प्रतिकृतियों की संख्या (एक या दो) भी चुन सकते हैं।
डिफ़ॉल्ट रूप से, हम दो प्रतिकृतियों की अनुशंसा करते हैं, ताकि एक आउटेज के दौरान भी आपके पास अतिरेक हो, लेकिन आप एक का चयन कर सकें।
कोई टिप्पणी करने या प्रश्न पूछने के लिए प्रतिक्रिया टैब का उपयोग करें। आप विक्रय चैट . पर भी क्लिक कर सकते हैं अभी चैट करने और बातचीत शुरू करने के लिए।