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