अवलोकन #
Redis एक ओपन-सोर्स इन-मेमोरी डेटा स्ट्रक्चर स्टोर है जिसका उपयोग मैसेज ब्रोकर, कैश और की-वैल्यू डेटाबेस के रूप में किया जा सकता है। यह कई डेटा स्ट्रक्चर को सपोर्ट करता है: हैश, लिस्ट, सेट, सॉर्टेड सेट, बिटमैप, जियोस्पेशियल इंडेक्स, हाइपरलॉग्लॉग आदि।
रेडिस को जो बात अद्वितीय बनाती है वह यह है कि इसे स्टोर और कैश दोनों माना जा सकता है। इसे इस तरह से डिज़ाइन किया गया है कि डेटा को मुख्य कंप्यूटर मेमोरी से संशोधित और/या पढ़ा जा सकता है।
अन्य विशेषताओं के साथ-साथ, Redis, Redis Sentinel के माध्यम से उच्च उपलब्धता और Redis Cluster के माध्यम से स्वचालित विभाजन प्रदान करता है । इसके अतिरिक्त, Redis में एक प्रतिकृति तंत्र है जो स्लेव इंस्टेंस को मास्टर इंस्टेंस की सटीक प्रतिलिपि बनाने की अनुमति देता है। कनेक्शन टूटने पर स्लेव स्वचालित रूप से मास्टर से पुनः जुड़ जाता है, और इसका लक्ष्य मास्टर की सटीक प्रतिलिपि बनना होता है।
चूंकि रेडिस सेंटिनल रेडिस के लिए उच्च उपलब्धता प्रदान करता है, यह कई मामलों में बिना किसी मानवीय हस्तक्षेप के विफलताओं को स्वचालित रूप से संभाल सकता है, लेकिन यह निगरानी, अधिसूचना जैसे अन्य कार्य भी प्रदान करता है, और ग्राहकों के लिए कॉन्फ़िगरेशन प्रदाता के रूप में कार्य करता है।
लेकिन, क्या होता है जब सेंटिनल किसी रेडिस सर्वर को डाउन पाता है? इस लेख में हम जानेंगे कि रेडिस के लिए एक पूर्णतः उच्च उपलब्धता वाली वर्चुअल सेवा कैसे बनाई जाए।
कृपया ध्यान रखें कि यह कॉन्फ़िगरेशन तब भी किया जा सकता है, जब आपका Redis सर्वर मॉनिटरिंग के लिए Sentinel का उपयोग नहीं कर रहा हो।
रेडिस लोड संतुलन वातावरण #
इस आलेख में हम जो परिदृश्य प्राप्त करना चाहते हैं, वह नीचे दिए गए चित्र में दिखाया गया है।
Redis Sentinel सभी Redis नोड्स की स्थिति की जांच करता है और त्रुटि का पता चलने पर Redis सर्वर की भूमिका बदल देता है।
लोड बैलेंसर भी स्थिति की जांच करता है, लेकिन यह हर कुछ सेकंड में समय-समय पर ऐसा करता है। ऐसे मामले हो सकते हैं जिनमें सेंटिनल समस्या का पता लगा लेता है लेकिन लोड बैलेंसर को इसका पता लगाने में कुछ सेकंड लग सकते हैं। इससे बैलेंसर गलत मास्टर को अनुरोध भेज सकता है जो कि अभी विफल हुआ है लेकिन सेंटिनल द्वारा स्विच किया गया है।
RELIANOID इस समस्या को हल करने का एक तरीका प्रदान करता है, L4 फ़ार्म समय-समय पर जाँच करता है। दूसरी ओर, बैकएंड को भेजा गया फ़्लो भी है जिसमें कोई पिछली जाँच नहीं है। जब फ़ार्म गार्जियन को पता चलता है कि बैकएंड उत्तरदायी नहीं है, तो यह अलार्म उठाता है, यह दर्शाता है कि फ़्लो को इस तरह नहीं जाना चाहिए।
इसे ध्यान में रखते हुए, हमारे पास एक तरफ जाँच और दूसरी तरफ अनुरोध हैं। यदि जाँच विफल हो जाती है, तो प्रवाह तुरंत दूसरे नोड पर भेज दिया जाता है। यहाँ तक कि चल रही याचिकाएँ भी दूसरे ऑनलाइन नोड पर पुनर्निर्देशित की जाती हैं। कॉन्फ़िगरेशन में इसे और विस्तार से समझाया जाएगा।
रेडिस लोड संतुलन कॉन्फ़िगरेशन #
फ़ार्म स्थापित करने से पहले, हमें एक वर्चुअल आईपी की आवश्यकता होगी। इसके लिए, नेटवर्क > वर्चुअल इंटरफ़ेस पर जाएं । फिर एक्शन > वर्चुअल इंटरफ़ेस बनाएं पर क्लिक करें। इसके बाद, पैरेंट इंटरफ़ेस , वर्चुअल इंटरफ़ेस नाम और उसका आईपी पता चुनें ।
इसके बाद, Redis वर्चुअल सर्वर के लिए हमें एक L4xNAT फ़ार्म बनाना होगा। इसके लिए, LSLB > फ़ार्म्स पर जाएं , और फिर एक्शन और क्रिएट फ़ार्म पर क्लिक करें ।
प्रारंभिक पैरामीटर सेट हो जाने के बाद, क्रिएट पर क्लिक करें। इसके बाद, एडवांस्ड टैब पर जाएं और सुनिश्चित करें कि प्रोटोकॉल प्रकार TCP है।
इसके बाद, सर्विसेज पर जाएं । उन्नत स्वास्थ्य जांच के लिए बैकएंड और फार्म गार्डियन को यहां सेटअप किया जाएगा। सबसे पहले बैकएंड सेक्शन ढूंढें और एक्शन > ऐड बैकएंड पर क्लिक करें , जैसा कि नीचे दिखाया गया है:
रेडिस निगरानी और उन्नत स्वास्थ्य जांच #
अंत में, फ़ार्म गार्जियन जाँच की आवश्यकता यह सुनिश्चित करने के लिए है कि हम हमेशा ऑनलाइन नोड का उपयोग कर रहे हैं, जैसा कि पहले मामले में बताया गया है। इसके लिए, हमें फ़ार्म गार्जियन कमांड के रूप में निम्नलिखित को कॉन्फ़िगर करने की आवश्यकता है:
check_tcp -E -H HOST -p PORT -s 'info replication\r\n' -e role:master -t 3
यहां HOST और PORT को प्रत्येक बैकएंड के Redis सर्वर के IP पते और पोर्ट से बदला जाएगा। कमांड info replication Redis सर्वर से जानकारी प्राप्त करके यह सत्यापित करेगा कि कौन सा मास्टर सक्रिय है। कनेक्शन केवल उसी सर्वर पर रीडायरेक्ट किए जाएंगे जहां मास्टर की भूमिका मौजूद है। जैसे ही Sentinel भूमिका बदलता है, लोड बैलेंसर इस बदलाव का पता लगा लेगा और Redis सर्वर को डाउन के रूप में चिह्नित कर दिया जाएगा। फ्लैग -t सेकंड की वह संख्या है जिसके लिए Farm Guardian Redis सर्वर की प्रतिक्रिया की प्रतीक्षा करेगा। यदि समय सीमा के भीतर कोई प्रतिक्रिया नहीं मिलती है, तो Redis सर्वर को डाउन के रूप में चिह्नित कर दिया जाएगा। दूसरी ओर, Redis सर्वर की स्थिति सामान्य होने पर वह फिर से सक्रिय हो जाएगा।
लेकिन इस विशेष फार्म के लिए फार्म गार्डियन को संशोधित करने से पहले, मॉनिटरिंग > फार्मगार्डियन पर जाएं और फिर एक्शन > क्रिएट फार्मगार्डियन पर क्लिक करें ।
अपने नए Redis Sentinel हेल्थ चेकर के लिए एक वर्णनात्मक नाम चुनें, उदाहरण के लिए, उदाहरण में दिखाए गए अनुसार check_redis_master । अब Farmguardian फ़ील्ड में check_tcp चुनें और कॉपी करके नीचे दिखाए अनुसार Create पर क्लिक करें।
अंत में, ऊपर उल्लिखित कमांड को कमांड पैरामीटर में कॉपी करें और नीचे दिखाए अनुसार कॉन्फ़िगरेशन करें।
सबमिट पर क्लिक करें ।
अब, Redis वर्चुअल सेवा में इस नए Farm Guardian एडवांस्ड हेल्थ चेक का चयन करें। LSLB > Farms पर वापस जाएं, RedisFarm नाम से बनाए गए फ़ार्म पर जाएं , और Services टैब पर क्लिक करें। अंत में, Health Checks for backend के अंतर्गत अभी बनाए गए check_redis_master कमांड का चयन करें ।
फार्म को अपडेट करें पर क्लिक करें और अब रेडिस पूरी तरह से उच्च उपलब्धता वाला हो जाएगा।
संदर्भ #
https://redis.io/topics/sentinel
https://redis.io/topics/cluster-tutorial






