माइक्रोसर्विसेज जैसे आधुनिक ऐप्स को आमतौर पर बहुत सारे डेटाबेस कनेक्शन की आवश्यकता होती है, वे उन कनेक्शनों का उपयोग और रिलीज भी बहुत जल्दी करते हैं। जब पोस्टग्रेएसक्यूएल को लगभग 25 साल पहले विकसित किया गया था, तो इसके डेवलपर्स ने नए अनुरोधों के लिए धागे का उपयोग नहीं करने का फैसला किया, बल्कि प्रत्येक अनुरोध के लिए एक नई प्रक्रिया बनाने का फैसला किया। जबकि उस निर्णय का शायद उस समय कोई मतलब था, कई कनेक्शन आज एक गंभीर मुद्दा हो सकते हैं। इस समस्या का एक समाधान कनेक्शन पूल है। इस ब्लॉग पोस्ट में, हम PgBouncer Connection Pool और ClusterControl 1.8.2 में इसका उपयोग कैसे करें, इस पर चर्चा करेंगे।
कनेक्शन पूल का उपयोग क्यों करें
ठीक है, इस प्रश्न का संक्षिप्त उत्तर यह है कि यह आपके ऐप्स के प्रदर्शन को बेहतर बनाने के लिए एक सरल लेकिन प्रभावी समाधान है, साथ ही साथ PostgreSQL सर्वर पर लोड को कम करता है। आइए इस पर थोड़ा और गहराई से जाएं, क्या हम?
एक कनेक्शन पूल को खुले डेटाबेस कनेक्शन के कैश के रूप में परिभाषित किया जा सकता है जो क्लाइंट द्वारा पुन:प्रयोज्य है। दूसरे शब्दों में, यह हर नए कनेक्शन पर अनुरोधों को कम करके डेटाबेस पर लोड को कम करेगा। वे नए कनेक्शन मूल रूप से पोस्टमास्टर प्रक्रिया द्वारा हर बार एक कनेक्शन स्थापित होने पर उत्पन्न होते हैं जो आमतौर पर प्रति कनेक्शन लगभग 2 से 3 एमबी मेमोरी लेता है।
कनेक्शन पूल के बिना, जब भी कनेक्शन की संख्या बहुत अधिक होगी, यह एक समस्या पैदा करेगा क्योंकि पोस्टमास्टर को बहुत अधिक मेमोरी प्रदान करने की आवश्यकता होती है। PostgreSQL में, कनेक्शन पूल का प्रबंधन PgBouncer द्वारा किया जाता है।
पीजी बाउंसर क्या है
PgBouncer एक हल्का, सिंगल-बाइनरी, ओपन-सोर्स और संभवत:PostgreSQL के लिए सबसे लोकप्रिय कनेक्शन पूलर है। PgBouncer एक साधारण उपयोगिता है जो ठीक एक काम करती है, यह डेटाबेस और क्लाइंट के बीच बैठता है और PostgreSQL प्रोटोकॉल की बात करता है, एक PostgreSQL सर्वर की नकल करता है। लेखन के समय, PgBouncer का नवीनतम संस्करण 1.15.0 है।
आइए देखें कि इसके द्वारा प्रदान की जाने वाली कुछ बेहतरीन विशेषताएं क्या हैं, और शायद यही कारण है कि यह PostgreSQL दुनिया में इतना लोकप्रिय है:
-
लाइटवेट - केवल एक एकल प्रक्रिया, क्लाइंट से सभी अनुरोध और सर्वर से प्रतिक्रिया बिना किसी अतिरिक्त के पासथ्रू PgBouncer प्रसंस्करण
-
आसान सेटअप - किसी क्लाइंट-साइड कोड परिवर्तन की आवश्यकता नहीं है और सेटअप करने के लिए सबसे सरल PostgreSQL कनेक्शन पूलर्स में से एक हैपी>
-
मापनीयता और प्रदर्शन - यह बड़ी संख्या में ग्राहकों के लिए अच्छी तरह से मापता है और साथ ही लेनदेन में काफी वृद्धि करता है प्रति सेकंड कि PostgreSQL सर्वर समर्थन कर सकता है
PgBouncer को ClusterControl के साथ सेटअप करने के चरण
आपके लिए PgBouncer को ClusterControl के साथ स्थापित और कॉन्फ़िगर करने के लिए कुछ चरण हैं। इस खंड में, हम उन चरणों का अध्ययन करेंगे जो यह प्रदान करते हैं कि आपके पास पहले से ही पोस्टग्रेएसक्यूएल क्लस्टर तैनात है। यदि आपके पास अभी तक क्लस्टर नहीं है, तो आप इस ब्लॉग पोस्ट में गाइड का अनुसरण कर सकते हैं।
अपने वेब UI से> PostgreSQL क्लस्टर चुनें> प्रबंधित करें> बैलेंसर लोड करें> PgBouncer टैब चुनें और निम्न स्क्रीनशॉट दिखाई देगा। यहां आप चुन सकते हैं कि PgBouncer को परिनियोजित करना है या आयात करना है, इस उदाहरण में, हम Deploy चुनेंगे:
आप ड्रॉपडाउन से नोड का चयन कर सकते हैं, पोर्ट निर्दिष्ट करें, जोड़ें ' PgBouncer Admin User' के साथ-साथ पासवर्ड और 'Deploy PgBouncer' पर क्लिक करें। काम चलना शुरू हो जाएगा और इस स्क्रीन में स्थिति दिखने लगेगी, आप 'गतिविधि' टैब में भी इसकी निगरानी कर सकते हैं।
PgBouncer नोड के सफलतापूर्वक परिनियोजित होने के बाद, अगला कदम कनेक्शन पूल बनाना है। अपने क्लस्टर> नोड्स> से PgBouncer नोड चुनें और निम्न स्क्रीनशॉट दिखाई देगा:
एक बार जब आप 'कनेक्शन पूल बनाएं' पर क्लिक करेंगे तो कनेक्शन स्क्रीन दिखाई देगी। बटन। आप सभी जानकारी भर सकते हैं और अपने सेटअप के आधार पर मूल्य को अपडेट कर सकते हैं, इस उदाहरण के लिए हम 'पूल मोड', 'पूल साइज' और 'मैक्स डेटाबेस कनेक्शन' के लिए डिफ़ॉल्ट मान का उपयोग करेंगे:
यहां आपको निम्नलिखित जानकारी जोड़नी होगी:
-
PgBouncer hostname:कनेक्शन पूल बनाने के लिए नोड होस्ट का चयन करें।
-
पूल का नाम:पूल और डेटाबेस के नाम समान होने चाहिए।
-
उपयोगकर्ता नाम: PostgreSQL मास्टर नोड से एक उपयोगकर्ता चुनें या एक नया बनाएं।
-
पूल मोड:सत्र (डिफ़ॉल्ट), लेन-देन, या स्टेटमेंट पूलिंग।
-
सत्र (डिफ़ॉल्ट):क्लाइंट के डिस्कनेक्ट होने के बाद सर्वर को पूल में वापस छोड़ दिया जाता है
-
लेनदेन:लेनदेन समाप्त होने के बाद सर्वर को पूल में वापस छोड़ दिया जाता है
-
कथन:क्वेरी समाप्त होने के बाद सर्वर को पूल में वापस छोड़ दिया जाता है। इस मोड में कई स्टेटमेंट वाले लेन-देन की अनुमति नहीं है
-
-
पूल आकार:इस डेटाबेस के लिए पूल का अधिकतम आकार। डिफ़ॉल्ट मान 20 है।
-
अधिकतम डेटाबेस कनेक्शन:एक डेटाबेस-व्यापी अधिकतम कॉन्फ़िगर करें। डिफ़ॉल्ट मान 0 है, जिसका अर्थ है असीमित।
आपके द्वारा नीचे दिए गए स्क्रीनशॉट के अनुसार 'फिनिश' बटन पर क्लिक करने के बाद कनेक्शन पूल दिखाई देगा और अब PgBouncer और कनेक्शन पूल दोनों तैयार हैं:
निष्कर्ष
कनेक्शन पूल और PgBouncer का उपयोग करना आपके एप्लिकेशन के प्रदर्शन को बेहतर बनाने के कुछ चरण हैं जब यह उच्च उपलब्धता की बात आती है। ClusterControl के साथ, आप PgBouncer परिनियोजित कर सकते हैं और साथ ही आसानी से और शीघ्रता से एक कनेक्शन पूल बना सकते हैं।
इसे और बेहतर बनाने के लिए, हम PgBouncer के अलावा HAProxy को तैनात करने का भी सुझाव देते हैं। HAProxy सुविधा ClusterControl में उपलब्ध है और लेखन के समय, हम जिस संस्करण का उपयोग कर रहे हैं वह 1.8.23 है।