अपने PostgreSQL होस्टिंग में उच्च उपलब्धता (HA) को प्रबंधित करना यह सुनिश्चित करने के लिए बहुत महत्वपूर्ण विषय है कि आपके डेटाबेस परिनियोजन क्लस्टर असाधारण अपटाइम और मजबूत परिचालन प्रदर्शन बनाए रखें ताकि आपका डेटा आपके एप्लिकेशन के लिए हमेशा उपलब्ध रहे। पिछले ब्लॉग पोस्ट में, हमने आपको स्ट्रीमिंग प्रतिकृति का उपयोग करके PostgreSQL के लिए उच्च उपलब्धता को कॉन्फ़िगर करने के लिए पेश किया था, और अब हम आपको यह दिखाने जा रहे हैं कि क्लाइंट साइड उच्च उपलब्धता को सर्वोत्तम तरीके से कैसे प्रबंधित किया जाए।
स्ट्रीमिंग प्रतिकृति का उपयोग करके आपके PostgreSQL परिनियोजन क्लस्टर की उच्च उपलब्धता (HA) को प्रबंधित करने के लिए कई टूल उपलब्ध हैं। ये समाधान स्वचालित विफलता क्षमताओं की पेशकश करते हैं, उपलब्धता और सिस्टम की स्थिति की निगरानी करते हैं, प्रतिकृति, उपयोगकर्ता प्रबंधन और पोस्टग्रेज डेटाबेस के लिए उपयोग के मामलों पर अन्य उपयोगी प्रशासनिक कार्य करते हैं। कुछ प्रमुख ओपन सोर्स समाधानों में शामिल हैं:
-
ClusterLabs द्वारा PostgreSQL स्वचालित विफलता
-
repmgr (द्वितीय चतुर्थांश) द्वारा PostgreSQL क्लस्टर के लिए प्रतिकृति प्रबंधक
-
ज़ालैंडो द्वारा पेट्रोनी
प्रत्येक टूल उच्च उपलब्धता वाले PostgreSQL क्लस्टर को प्रबंधित करने का अपना तरीका प्रदान करता है। PostgreSQL के लिए HA पर पोस्ट की हमारी तीन-भाग श्रृंखला में, हम इन तीन टूल में से प्रत्येक के लिए एक सिंहावलोकन, पूर्वापेक्षाएँ और कार्य और परीक्षण के परिणाम साझा करेंगे। यहां भाग 1 में, हम ClusterLabs द्वारा PAF समाधान के बारे में गहराई से जानेंगे।
- PostgreSQL में उच्च उपलब्धता को प्रबंधित करना - भाग II:प्रतिकृति प्रबंधक
- पोस्टग्रेएसक्यूएल में उच्च उपलब्धता का प्रबंधन - भाग III:पेट्रोनी
अपने PostgreSQL डेटाबेस के लिए उच्च उपलब्धता को कैसे प्रबंधित करें?
PostgreSQL Automatic Failover (PAF) ClusterLabs द्वारा PostgreSQL के लिए एक उच्च उपलब्धता प्रबंधन समाधान है। यह गारंटी देने के लिए पोस्टग्रेज़ सिंक्रोनस प्रतिकृति का उपयोग करता है कि फ़ेलओवर ऑपरेशन के समय कोई डेटा खो नहीं जाता है। यह लोकप्रिय, उद्योग-मानक पेसमेकर और कोरोसिंक स्टैक का उपयोग करता है। पेसमेकर और कोरोसिंक अनुप्रयोगों के साथ, आप सिस्टम में PostgreSQL डेटाबेस विफलताओं का पता लगाने और उसके अनुसार कार्य करने में सक्षम होंगे।
पेसमेकर एक ऐसी सेवा है जो कई संसाधनों को प्रबंधित करने में सक्षम है, और अपने संसाधन एजेंटों की सहायता से ऐसा करती है। संसाधन एजेंटों के पास तब एक विशिष्ट संसाधन को संभालने की जिम्मेदारी होती है कि उन्हें कैसे व्यवहार करना चाहिए और पेसमेकर को उनके परिणामों के बारे में सूचित करना चाहिए।
आपके संसाधन एजेंट कार्यान्वयन को ओपन क्लस्टर फ्रेमवर्क (OCF) विनिर्देश का पालन करना चाहिए। यह विनिर्देश संसाधन एजेंटों के व्यवहार और पेसमेकर के साथ स्टॉप, स्टार्ट, प्रमोशन, डिमोट और इंटरैक्शन जैसी विधियों के कार्यान्वयन को परिभाषित करता है।
PAF पर्ल में लिखे गए Postgres के लिए एक OCF संसाधन एजेंट है। एक बार जब आपका डेटाबेस क्लस्टर आंतरिक स्ट्रीमिंग प्रतिकृति का उपयोग करके बनाया जाता है, तो PAF पेसमेकर को डेटाबेस के प्रत्येक नोड पर PostgreSQL इंस्टेंस की वर्तमान स्थिति को उजागर करने में सक्षम होता है:मास्टर, स्लेव, स्टॉप्ड, कैचिंग अप, लोड बैलेंसर आदि।
स्वचालित विफलता कैसे पोस्टग्रेज करती है
PAF पेसमेकर के साथ क्लस्टर स्थिति के बारे में संचार करता है और PostgreSQL डेटाबेस के कामकाज की निगरानी करता है। विफलता की स्थिति में, यह पेसमेकर को सूचित करता है, और यदि वर्तमान मास्टर के पुनर्प्राप्त होने की कोई संभावना नहीं है, तो यह मौजूदा स्टैंडबाय डेटाबेस सर्वरों में से एक के बीच चुनाव को ट्रिगर करेगा। मजबूत पेसमेकर के साथ, पोस्टग्रेज ऑटोमैटिक फेलओवर सभी पोस्टग्रेज डेटाबेस के नोड्स पर स्टार्ट, स्टॉप, मॉनिटर और फेलओवर जैसी प्रबंधन क्रियाएं करेगा।
PostgreSQL में उच्च उपलब्धता को प्रबंधित करना - भाग I:ClusterLabs द्वारा स्वचालित विफलता ट्वीट करने के लिए क्लिक करें
PostgreSQL उच्च उपलब्धता (HA) कॉन्फ़िगरेशन के लिए स्वचालित विफलता
- PAF PostgreSQL संस्करण 9.3 और उच्चतर का समर्थन करता है।
- PAF PostgreSQL मास्टर/स्टैंडबाय निर्माण या इसके सेटअप के लिए ज़िम्मेदार नहीं है - आपको PAF का उपयोग करने से पहले स्ट्रीमिंग प्रतिकृति बनाना और सेटअप करना होगा।
- PAF PostgreSQL के किसी भी कॉन्फ़िगरेशन या सेटअप आवश्यकताओं को संपादित नहीं करता है। हालांकि, इसके लिए डेटाबेस उपयोगकर्ताओं को कुछ पूर्वापेक्षाओं का पालन करने की आवश्यकता होती है जैसे:
- दास को हॉट स्टैंडबाय के रूप में कॉन्फ़िगर किया जाना चाहिए। हॉट स्टैंडबाय स्लेव नोड्स को केवल-पढ़ने के लिए डेटाबेस के रूप में क्वेरी किया जा सकता है।
- एक पुनर्प्राप्ति टेम्पलेट फ़ाइल (डिफ़ॉल्ट:
/recovery.conf.pcmk) को नीचे दिए गए मापदंडों के साथ प्रदान किया जाना है: - स्टैंडबाय_मोड =पर
- recovery_target_timeline ='नवीनतम'
- प्राथमिक_conninfo application_name पैरामीटर परिभाषित होना चाहिए और पेसमेकर की तरह स्थानीय नोड नाम पर सेट होना चाहिए।
- PAF पोस्टग्रेज संसाधन के प्रबंधन से संबंधित कई मापदंडों को उजागर करता है। इसे किसी की आवश्यकताओं के अनुरूप कॉन्फ़िगर किया जा सकता है। नीचे दिए गए पैरामीटर हैं:
- बिंदिर: PostgreSQL बायनेरिज़ का स्थान (डिफ़ॉल्ट:/usr/bin)
- pgdata: आपके उदाहरण के PGDATA का स्थान (डिफ़ॉल्ट:/var/lib/pgsql/data)
- डेटादिर: आपकी postgresql.conf फ़ाइल से data_directory में सेट की गई निर्देशिका का पथ
- pghost: स्थानीय उदाहरण से कनेक्ट करने के लिए उपयोग की जाने वाली सॉकेट निर्देशिका या आईपी पता (डिफ़ॉल्ट:/tmp)
- पीजीपोर्ट: स्थानीय उदाहरण से कनेक्ट करने के लिए पोर्ट (डिफ़ॉल्ट:5432)
- रिकवरी_टेम्पलेट: स्थानीय टेम्पलेट जिसे PGDATA/recovery.conf फ़ाइल के रूप में कॉपी किया जाएगा। यह टेम्प्लेट फ़ाइल सभी नोड पर मौजूद होनी चाहिए (डिफ़ॉल्ट:$PGDATA/recovery.conf.pcmk)
- start_opts: स्टार्टअप पर पोस्टग्रेज प्रक्रिया को दिए गए अतिरिक्त तर्क। उपलब्ध विकल्पों के लिए "पोस्टग्रेज -हेल्प" देखें। उपयोगी जब postgresql.conf फ़ाइल डेटा निर्देशिका (PGDATA) में नहीं है, जैसे:-c config_file=/etc/postgresql/9.3/main/postgresql.conf
- system_user: आपके इंस्टेंस की प्रक्रिया का सिस्टम स्वामी (डिफ़ॉल्ट:पोस्टग्रेज)
- अधिकतम अंतराल: इससे पहले कि हम उस पर नकारात्मक मास्टर स्कोर सेट करें, स्टैंडबाय पर अधिकतम अंतराल की अनुमति है
स्वचालित विफलता पेशेवरों को पोस्टग्रेज करें
- PAF उपयोगकर्ता को पोस्टग्रेएसक्यूएल का एक मुफ़्त हैंड्स-ऑन कॉन्फ़िगरेशन और सेटअप प्रदान करता है।
- पीएएफ नोड विफलता को संभाल सकता है और मास्टर के नीचे जाने पर चुनाव ट्रिगर कर सकता है।
- PAF में कोरम व्यवहार लागू किया जा सकता है।
- यह संसाधन के लिए एक पूर्ण उच्च उपलब्धता (HA) डेटाबेस प्रबंधन समाधान प्रदान करेगा, जिसमें स्टार्ट, स्टॉप, और मॉनिटर, और नेटवर्क अलगाव परिदृश्यों को संभालना शामिल है।
- यह एक वितरित समाधान है, जो किसी भी नोड को दूसरे नोड से प्रबंधित करने में सक्षम बनाता है।
स्वचालित विफलता विपक्ष पोस्ट करता है
- PAF यह पता नहीं लगाता है कि रिकवरी कॉन्फ़िगरेशन में किसी अज्ञात या गैर-मौजूद नोड के साथ स्टैंडबाय नोड गलत कॉन्फ़िगर किया गया है या नहीं। नोड को स्लेव के रूप में दिखाया जाएगा, भले ही स्टैंडबाय मास्टर/कैस्केडिंग स्टैंडबाय नोड से कनेक्ट किए बिना चल रहा हो।
- यूडीपी का उपयोग करके पेसमेकर और कोरोसिंक घटकों के संचार के लिए एक अतिरिक्त पोर्ट (डिफ़ॉल्ट 5405) खोलने की आवश्यकता है।
- NAT-आधारित कॉन्फ़िगरेशन का समर्थन नहीं करता।
- कोई pg_rewind समर्थन नहीं।
PostgreSQL परीक्षण परिदृश्यों के लिए उच्च उपलब्धता
हमने कुछ उपयोग मामलों पर PAF का उपयोग करके PostgreSQL उच्च उपलब्धता (ha) प्रबंधन की क्षमता निर्धारित करने के लिए कुछ परीक्षण किए। ये सभी परीक्षण तब चलाए गए थे जब एप्लिकेशन चल रहा था और PostgreSQL डेटाबेस में डेटा डाल रहा था। एप्लिकेशन को पोस्टग्रेएसक्यूएल जावा जेडीबीसी ड्राइवर का उपयोग करके कनेक्शन विफलता क्षमता का लाभ उठाते हुए लिखा गया था।
स्टैंडबाय सर्वर टेस्ट
Sl. नहीं | <वें शैली="चौड़ाई:25%; लंबवत-संरेखण:मध्य; पृष्ठभूमि-रंग:#d9fce9;">परीक्षण परिदृश्य <वें शैली ="चौड़ाई:70%; लंबवत-संरेखण:मध्य; पृष्ठभूमि-रंग:#d9fce9;">निगरानी||
---|---|---|
1 | PostgreSQL प्रक्रिया को समाप्त करें | पेसमेकर ने PostgreSQL प्रक्रिया को वापस चालू स्थिति में ला दिया। लेखक आवेदन में कोई व्यवधान नहीं था। |
2 | PostgreSQL प्रक्रिया को रोकें | पेसमेकर ने PostgreSQL प्रक्रिया को वापस चालू स्थिति में ला दिया। लेखक आवेदन में कोई व्यवधान नहीं था। |
3 | सर्वर को रीबूट करें | स्टैंडबाय डेटाबेस सर्वर नोड को प्रारंभ में ऑफ़लाइन चिह्नित किया गया था। रिबूट के बाद सर्वर के आने के बाद, पेसमेकर द्वारा पोस्टग्रेएसक्यूएल डेटाबेस शुरू किया गया था और सर्वर को ऑनलाइन के रूप में चिह्नित किया गया था। यदि बाड़ लगाना सक्षम किया गया था, तो नोड स्वचालित रूप से क्लस्टर में नहीं जोड़ा जाएगा। लेखक आवेदन में कोई व्यवधान नहीं था। |
4 | पेसमेकर प्रक्रिया रोकें | यह PostgreSQL प्रक्रिया को भी रोक देगा, और सर्वर नोड को ऑफ़लाइन चिह्नित किया जाएगा। लेखक आवेदन में कोई व्यवधान नहीं था। |
मास्टर/प्राथमिक सर्वर परीक्षण
Sl. नहीं | परीक्षण परिदृश्य | निगरानी |
1 | PostgreSQL प्रक्रिया को समाप्त करें | पेसमेकर ने PostgreSQL प्रक्रिया को वापस चालू स्थिति में ला दिया। प्राथमिक को थ्रेशोल्ड समय के भीतर पुनर्प्राप्त कर लिया गया था और इसलिए, चुनाव शुरू नहीं हुआ था। लेखक आवेदन लगभग 26 सेकंड के लिए बंद था। |
2 | PostgreSQL प्रक्रिया को रोकें | पेसमेकर ने PostgreSQL प्रक्रिया को वापस चालू स्थिति में ला दिया। प्राथमिक को थ्रेशोल्ड समय के भीतर पुनर्प्राप्त कर लिया गया था और इसलिए, चुनाव शुरू नहीं हुआ था। लेखक आवेदन में लगभग 26 सेकंड के लिए एक डाउनटाइम था। |
3 | सर्वर को रीबूट करें | पेसमेकर द्वारा उस थ्रेशोल्ड समय के बाद चुनाव शुरू किया गया था जिसके लिए मास्टर उपलब्ध नहीं था। सबसे योग्य स्टैंडबाय सर्वर को नए मास्टर के रूप में पदोन्नत किया गया था। एक बार जब पुराना मास्टर रिबूट के बाद आया, तो इसे स्टैंडबाय के रूप में डेटाबेस क्लस्टर में वापस जोड़ा गया। यदि बाड़ लगाना सक्षम किया गया था, तो नोड स्वचालित रूप से क्लस्टर में नहीं जोड़ा जाएगा। लेखक आवेदन सेवा लगभग 26 सेकंड के लिए बंद थी। |
4 | पेसमेकर प्रक्रिया रोकें | यह PostgreSQL प्रक्रिया को भी रोक देगा और सर्वर को ऑफ़लाइन चिह्नित किया जाएगा। चुनाव शुरू हो जाएगा और नए मास्टर चुने जाएंगे। लेखक आवेदन में डाउनटाइम था। |
नेटवर्क अलगाव परीक्षण
Sl. नहीं | परीक्षण परिदृश्य | निगरानी |
1 | नेटवर्क स्टैंडबाय सर्वर को अन्य सर्वरों से अलग करता है | Corosync ट्रैफिक को स्टैंडबाय सर्वर पर ब्लॉक कर दिया गया था। सर्वर को ऑफ़लाइन चिह्नित किया गया था और कोरम नीति के कारण PostgreSQL सेवा बंद कर दी गई थी। लेखक के आवेदन में कोई व्यवधान नहीं था। |
2 | नेटवर्क मास्टर सर्वर को अन्य सर्वरों से अलग करता है (स्प्लिट-ब्रेन परिदृश्य) | Corosync ट्रैफिक को मास्टर सर्वर पर ब्लॉक कर दिया गया था। कोरम नीति के कारण PostgreSQL सेवा बंद कर दी गई और मास्टर सर्वर को ऑफ़लाइन चिह्नित किया गया। बहुमत के विभाजन में एक नया स्वामी चुना गया। लेखक आवेदन में एक डाउनटाइम था। |
विविध परीक्षण
Sl. नहीं | परीक्षण परिदृश्य | निगरानी |
1 | सभी स्टैंडबाय सर्वर को बंद करके क्लस्टर को डिग्रेड करें। | जब सभी स्टैंडबाय सर्वर डाउन हो गए, तो कोरम नीति के कारण मास्टर पर PostgreSQL सेवा बंद कर दी गई। इस परीक्षण के बाद, जब सभी स्टैंडबाय सर्वर चालू किए गए, तो एक नया मास्टर चुना गया। लेखक आवेदन में एक डाउनटाइम था। |
2 | मास्टर से शुरू करते हुए, सभी सर्वरों को एक के बाद एक यादृच्छिक रूप से बंद करें, और उन सभी को एक ही समय में वापस लाएं | सभी सर्वर ऊपर आए और क्लस्टर में शामिल हो गए। नए मास्टर चुने गए। लेखक आवेदन में एक डाउनटाइम था। |
क्या PAF PostgreSQL उच्च उपलब्धता का समाधान है?
पोस्टग्रेज ऑटोमैटिक फेलओवर कई उपयोग मामलों पर PostgreSQL उच्च उपलब्धता (HA) को संभालने में कई फायदे प्रदान करता है। PAF एक विफलता घटना के दौरान नए मास्टर से कनेक्ट करने के लिए स्टैंडबाय को रीबूट करने के बजाय IP पता विफलता का उपयोग करता है। यह उन परिदृश्यों में फायदेमंद साबित होता है जहां उपयोगकर्ता स्टैंडबाय नोड्स को पुनरारंभ नहीं करना चाहता है। PAF को भी बहुत कम मैन्युअल हस्तक्षेप की आवश्यकता होती है और सभी Postgres डेटाबेस संसाधनों के समग्र स्वास्थ्य का प्रबंधन करता है। एकमात्र मामला जहां मैन्युअल हस्तक्षेप की आवश्यकता होती है, वह समयरेखा डेटा विचलन की स्थिति में होता है जहां उपयोगकर्ता pg_rewind का उपयोग करने का चुनाव कर सकता है।
भाग 1 में, हमने ClusterLabs द्वारा PostgreSQL स्वचालित विफलता (PAF) की क्षमताओं और कार्यप्रणाली पर चर्चा की है, और भाग 2 में, हम चर्चा करेंगे 2ndQuadrant द्वारा PostgreSQL क्लस्टर्स (repmgr) के लिए प्रतिकृति प्रबंधक का उपयोग करते हुए समान उच्च उपलब्धता पहलू। भाग 3 के लिए वापस देखना सुनिश्चित करें, जहां हम ज़ालैंडो द्वारा पेट्रोनी को भी कवर करेंगे और आपके आवेदन के लिए सबसे उपयुक्त निर्धारित करने में आपकी सहायता के लिए सभी तीन ओपन सोर्स समाधानों की तुलना करेंगे।
भाग 1 ब्लॉग में, हमने ClusterLabs द्वारा PAF की क्षमताओं, सर्वोत्तम प्रथाओं और कार्यप्रणाली पर चर्चा की है, और भाग 2 ब्लॉग पोस्ट में, हम करेंगे 2ndQuadrant द्वारा Postgresql क्लस्टर्स (repmgr) के लिए प्रतिकृति प्रबंधक का उपयोग करके उच्च उपलब्धता पहलुओं के समान विषय पर चर्चा करें। भाग 3 पर हमारे ब्लॉग पोस्ट के लिए वापस जाँच करना सुनिश्चित करें, जहाँ हम ज़ालैंडो द्वारा पेट्रोनी को भी कवर करेंगे और आपके व्यावसायिक अनुप्रयोगों के लिए सर्वोत्तम प्रथाओं और आदर्श फिट का निर्धारण करने में आपकी मदद करने के लिए सभी तीन ओपन सोर्स समाधानों की तुलना करेंगे।