PgBouncer PostgreSQL के लिए एक हल्का कनेक्शन पूलर है। PgBouncer 1.7 की घोषणा 18 दिसंबर 2015 को की गई थी। इस ब्लॉग पोस्ट में हम PgBouncer में प्रमुख नए सुधारों के बारे में बात करेंगे।
सबसे रंगीन विशेषताएं
- PgBouncer 1.7 TLS कनेक्शन का समर्थन करता है और, मुझे लगता है कि यह नई रिलीज़ का सबसे बड़ा सुधार है। उन्होंने सुविधा के बैकएंड कार्यान्वयन के रूप में OpenSSL/LibreSSL पुस्तकालयों का उपयोग किया।
- PgBouncer अब प्रमाणीकरण का समर्थन करता है TLS क्लाइंट प्रमाणपत्र . के माध्यम से ।
आइए PgBouncer की TLS सेटिंग्स के विवरण में खुदाई करें। टीएलएस सेटअप (क्लाइंट साइड + सर्वर साइड सेटिंग्स) से संबंधित 14 कॉन्फ़िगरेशन पैरामीटर हैं।
क्लाइंट से कनेक्शन के लिए किस टीएलएस मोड का उपयोग करना है, यह निर्दिष्ट करने के लिए, हमें client_tls_sslmode सेट करना चाहिए पैरामीटर। TLS कनेक्शन डिफ़ॉल्ट रूप से अक्षम होते हैं। सक्षम होने पर, client_tls_key_file और client_tls_cert_file क्लाइंट कनेक्शन स्वीकार करने के लिए कुंजी और प्रमाणित PgBouncer उपयोग करने के लिए भी कॉन्फ़िगर किया जाना चाहिए।
हम client_tls_ca_file . सेट करके क्लाइंट प्रमाणपत्रों को मान्य करने के लिए एक रूट प्रमाणपत्र असाइन कर सकते हैं पैरामीटर, डिफ़ॉल्ट सेट नहीं है।
client_tls_protocols सेट करके हम निर्दिष्ट कर सकते हैं कि कौन से TLS प्रोटोकॉल संस्करणों की अनुमति है पैरामीटर, डिफ़ॉल्ट सभी है।
अधिक विस्तृत क्लाइंट साइड सेटिंग के लिए, आप client_tls_ciphers . देख सकते हैं , client_tls_ecdhcurve और client_tls_dheparams पैरामीटर।
अब, टीएलएस सर्वर साइड कॉन्फ़िगरेशन पैरामीटर के बारे में बात करते हैं। सबसे पहले, हमें server_tls_sslmode के साथ PostgreSQL सर्वर से कनेक्शन के लिए उपयोग करने के लिए TLS मोड घोषित करने की आवश्यकता है पैरामीटर। TLS कनेक्शन डिफ़ॉल्ट रूप से अक्षम होते हैं। हम CA सर्वर को server_tls_ca_file . के साथ असाइन कर सकते हैं पैरामीटर। यदि हम PostgreSQL सर्वर के विरुद्ध प्रमाणित करने के लिए PgBouncer के लिए निजी कुंजी असाइन करना चाहते हैं, तो हम server_tls_key_file का उपयोग कर सकते हैं पैरामीटर, हम निजी कुंजी के लिए एक प्रमाणपत्र भी असाइन कर सकते हैं जिसे PostgreSQL सर्वर server_tls_cert_file के साथ सत्यापित कर सकता है पैरामीटर। जैसा कि हमने क्लाइंट साइड TLS कनेक्शन सेटिंग्स में किया था, हम यह घोषित कर सकते हैं कि server_tls_protocols के साथ कौन से TLS प्रोटोकॉल संस्करणों की अनुमति है। पैरामीटर।
- TLS समर्थन के बाद, अन्य महत्वपूर्ण नई विशेषता “सहकर्मी” प्रमाणीकरण . के लिए समर्थन है यूनिक्स सॉकेट पर।
- इस संस्करण की अंतिम प्रमुख विशेषता के रूप में मैं होस्ट आधारित एक्सेस कंट्रोल फ़ाइल के लिए समर्थन का उल्लेख करना चाहूंगा, जैसे पोस्टग्रेज में pg_hba.conf। यह TLS को कॉन्फ़िगर करने की अनुमति देता है नेटवर्क कनेक्शन और “सहकर्मी” प्रमाणीकरण . के लिए स्थानीय कनेक्शन के लिए।
हम auth_type . के साथ उपयोगकर्ताओं को प्रमाणित करने का तरीका कॉन्फ़िगर कर सकते हैं PgBouncer का पैरामीटर। सभी कॉन्फ़िगरेशन पैरामीटर कॉन्फ़िगरेशन फ़ाइल pgbouncer.ini में परिभाषित हैं। आइए auth_type . के विवरण देखें पैरामीटर।
auth_type पैरामीटर को नीचे सूचीबद्ध 6 मानों में से एक सौंपा जा सकता है। आइए इन मूल्यों की व्याख्या और उपयोग देखें।
- एचबीए : अगर हम hba . मान के साथ auth_type पैरामीटर सेट करते हैं , हमें auth_hba_file . सेट करना चाहिए साथ ही यह दिखाने के लिए कि कौन सा pg_hba.conf . पैरामीटर है फ़ाइल को कॉन्फ़िगरेशन के रूप में उपयोग किया जाएगा। ऐसा करने से हम वास्तविक प्रमाणीकरण प्रकार को auth_hba_file से लोड करने की अनुमति देते हैं। इसका मतलब है कि हम विभिन्न एक्सेस पथों के लिए विभिन्न प्रमाणीकरण विधियों का उपयोग कर सकते हैं। उदाहरण के लिए, यूनिक्स सॉकेट पर संस्करण 1.7 कनेक्शन के साथ पीयर प्रमाणीकरण विधि का उपयोग करें, उसी समय टीसीपी पर कनेक्शन को टीएलएस का उपयोग करना चाहिए। अब तक, HBA फ़ाइल स्वरूप pg_hba.conf की सभी प्रमाणीकरण विधियों का समर्थन नहीं करता है। समर्थित तरीके हैं:विश्वास, अस्वीकार, md5, पासवर्ड, सहकर्मी और प्रमाणपत्र।
- प्रमाणित: क्लाइंट को TLS से कनेक्ट होना चाहिए वैध ग्राहक प्रमाण पत्र के साथ संबंध। उपयोगकर्ता नाम तब CommonName . से लिया जाता है प्रमाणपत्र से फ़ील्ड.
- md5 : MD5-आधारित पासवर्ड जाँच का उपयोग करें। auth_file (फ़ाइल का नाम जिससे उपयोगकर्ता नाम और पासवर्ड लोड करने हैं ) में MD5-एन्क्रिप्टेड या सादा-पाठ पासवर्ड दोनों हो सकते हैं। यह डिफ़ॉल्ट प्रमाणीकरण विधि है।
- सादा : क्लियर-टेक्स्ट पासवर्ड वायर पर भेजा जाता है। पदावनत.
- विश्वास : कोई प्रमाणीकरण नहीं किया जाता है। उपयोगकर्ता नाम अभी भी auth_file . में मौजूद होना चाहिए ।
- कोई भी : ट्रस्ट विधि की तरह, लेकिन दिए गए उपयोगकर्ता नाम को अनदेखा कर दिया जाता है। आवश्यक है कि सभी डेटाबेस विशिष्ट उपयोगकर्ता के रूप में लॉग इन करने के लिए कॉन्फ़िगर किए गए हों। इसके अतिरिक्त, कंसोल डेटाबेस किसी भी उपयोगकर्ता को व्यवस्थापक के रूप में लॉग इन करने की अनुमति देता है।
अन्य चमकदार विशेषताएं
इस संस्करण में और अधिक सुविधाएँ जारी की गई हैं। आप PgBouncer चैंज पेज पर जा सकते हैं या अन्य सुधारों के लिए नीचे दी गई सूची देख सकते हैं:
- query_wait_timeout सेट करें डिफ़ॉल्ट रूप से 120s तक। यह पैरामीटर परिभाषित करता है कि निष्पादन के लिए प्रतीक्षा करने में अधिकतम समय क्वेरी की अनुमति है। यदि उस समय के दौरान किसी सर्वर को क्वेरी असाइन नहीं की जाती है, तो क्लाइंट डिस्कनेक्ट हो जाता है। इसका उपयोग अनुत्तरदायी सर्वरों को कनेक्शन हथियाने से रोकने के लिए किया जाता है। यह तब भी मदद करता है जब सर्वर डाउन हो या डेटाबेस किसी भी कारण से कनेक्शन को अस्वीकार कर देता है। यदि यह अक्षम है, तो क्लाइंट असीमित रूप से कतारबद्ध हो जाएंगे। वर्तमान डिफ़ॉल्ट (0) अनंत क्यूइंग का कारण बनता है, जो उपयोगी नहीं है। संस्करण 1.7 के साथ यदि क्लाइंट की क्वेरी लंबित है और सर्वर कनेक्शन को असाइन नहीं किया गया है, तो क्लाइंट कनेक्शन डिफ़ॉल्ट रूप से 120 सेकंड के बाद छोड़ दिया जाएगा।
- अक्षम करेंserver_reset_query_always डिफ़ॉल्ट रूप से। अब रीसेट क्वेरी का उपयोग केवल उन पूलों में किया जाता है जो सत्र मोड में हैं।
- बढ़ाएं pkt_buf 4096 बाइट्स तक। प्रदर्शन में सुधार करता है TLS . के साथ . व्यवहार शायद लोड-विशिष्ट है, लेकिन ऐसा करना सुरक्षित होना चाहिए क्योंकि v1.2 के बाद से पैकेट बफर कनेक्शन से विभाजित होते हैं और पूल से आलसी रूप से उपयोग किए जाते हैं।
- पाइपलाइनिंग की अपेक्षित समर्थन संख्या ReadyForQuery पैकेट यह सर्वर को बहुत जल्दी रिलीज़ करने से बचाता है। #52 को ठीक करता है।
- बेहतर sbuf_loopcnt तर्क - सॉकेट को पुन:संसाधित करने की गारंटी है, भले ही सॉकेट से कोई घटना न हो। TLS . के लिए आवश्यक क्योंकि इसकी अपनी बफरिंग है।
- आधुनिक BSD के साथ काम करने के लिए सिस्टम परीक्षणों को अपनाएं और MacOS . (एरिक रेडमैन )
- क्रिप्ट करें निकालें प्रमाणीकरण यह अप्रचलित है और 8.4 . के बाद से PostgreSQL द्वारा समर्थित नहीं है ।
- सादे को ठीक करें “–परवाह के साथ” कॉन्फ़िगर विकल्प - बिना तर्क के इसे तोड़ा गया।
PgBouncer क्या है?
PgBouncer PostgreSQL डेटाबेस में क्लाइंट कनेक्शन प्रबंधित करने के लिए एक उपयोगिता है। संक्षेप में, यह PostgreSQL सर्वर के लिए एक कनेक्शन पूल बनाए रखता है और उन मौजूदा कनेक्शनों का पुन:उपयोग करता है। हालांकि यह क्लाइंट कनेक्शन ओवरहेड को कम करने के लिए उपयोगी हो सकता है, यह डेटाबेस सर्वर के लिए खुले कनेक्शन की अधिकतम संख्या को सीमित करने में भी सक्षम बनाता है। इसका उपयोग ट्रैफ़िक को आकार देने के लिए भी किया जा सकता है जैसे विभिन्न डेटाबेस सर्वरों के लिए एक या एक से अधिक डेटाबेस से कनेक्शन पुनर्निर्देशित करना। इनके अलावा, PgBouncer का उपयोग उपयोगकर्ता और यहां तक कि डेटाबेस स्तर पर सुरक्षा के प्रबंधन के लिए किया जा सकता है।
आप PgBouncer को उनके डाउनलोड पेज के माध्यम से डाउनलोड कर सकते हैं और अभी इसका उपयोग करना शुरू कर सकते हैं!
PgBouncer के बारे में अधिक जानकारी के लिए आप PgBouncer के बारे में मेरी पिछली ब्लॉग पोस्ट देख सकते हैं।
हैप्पी रीडिंग!