रेडिस प्रहरी

Redisa Prahari



एक परिदृश्य मान लें जहां आपके उत्पादन में केवल एक रेडिस उदाहरण है और यह किसी कारण से किसी बिंदु पर विफल हो जाता है। आपका एप्लिकेशन Redis डेटा स्टोर में डेटा कैश करता है और अब आपका एकमात्र डेटा स्रोत समाप्त हो गया है। इस प्रकार के परिदृश्यों को नियंत्रित करने का एक तरीका मास्टर-स्लेव आर्किटेक्चर को बनाए रखना है जहां दास मास्टर नोड को वापस आने तक दोहरा सकते हैं। रेडिस क्लस्टर मास्टर-प्रतिकृति दृष्टिकोण के साथ कुछ हद तक उच्च उपलब्धता का समर्थन करते हैं। Redis Sentinel एक और तरीका है जो Redis उदाहरणों की उच्च उपलब्धता को बनाए रखने के लिए अधिक विश्वसनीय तरीका प्रदान करता है। यह विफलताओं के लिए रेडिस मास्टर नोड की निगरानी करता है और तुरंत विफलता प्रक्रिया को ट्रिगर करता है जो मौजूदा दास नोड को एक नए मास्टर में बढ़ावा देगा।







इसके अलावा, रेडिस प्रहरी एक मध्यम व्यक्ति के रूप में कार्य करता है जहां ग्राहक जुड़ते हैं और नवीनतम मास्टर नोड आईपी पते के लिए पूछते हैं। तो, जुड़ा प्रहरी तुरंत मास्टर नोड पता प्रदान करता है।



इसके अलावा, एक मास्टर नोड विफलता की पुष्टि की जाती है यदि कई प्रहरी सहमत होते हैं कि एक दिया गया मास्टर उपलब्ध नहीं है या उपलब्ध नहीं है। यह विफलता का पता लगाने के चरण को समाप्त करता है और विफलता प्रक्रिया तुरंत शुरू होती है। इसलिए, रेडिस प्रहरी को विशिष्ट गुणों के साथ एक वितरित प्रणाली के रूप में देखा जा सकता है।



प्रहरी का समझौता एक कोरम मूल्य पर आधारित होता है जिस पर निम्नलिखित अनुभाग में चर्चा की जाएगी।





जिसका मूल्य

कोरम मान प्रहरी की अधिकतम संख्या है जिस पर मास्टर नोड के डाउन होने पर सहमत होने की आवश्यकता होती है। यह मान केवल मास्टर नोड में विफलता की पहचान करने के लिए उपयोग किया जाता है। फ़ेलओवर प्रक्रिया कई उपलब्ध प्रहरी नोड्स के प्राधिकरण के साथ शुरू होती है ताकि नेता के रूप में चयनित प्रहरी के साथ आगे बढ़ सके।

रेडिस सेंटिनल की विशेषताएं

प्रहरी को रेडिस डेटा स्टोर के लिए उच्च उपलब्धता तंत्र प्रदान करने के लिए जाना जाता है। इसके अलावा, कई अन्य क्षमताओं को सूचीबद्ध किया जा सकता है।



  • प्रहरी आपके रेडिस सिस्टम में मास्टर और स्लेव नोड्स की स्थिति की लगातार निगरानी करता है।
  • जब भी आपके रेडिस इंस्टेंस में कोई खराबी या कुछ गड़बड़ होती है, तो प्रहरी प्रहरी एपीआई का उपयोग करके व्यवस्थापक या कनेक्टेड एप्लिकेशन को सूचित करने में सक्षम होता है।
  • फेलओवर चरण को प्रहरी द्वारा नए मास्टर के रूप में प्रतिकृति को बढ़ावा देकर निर्देशित किया जाता है। शेष प्रतिकृतियां नए मास्टर का उपयोग करने के लिए कॉन्फ़िगर की गई हैं। अंत में, संबंधित ग्राहकों को नए मास्टर नोड पते के बारे में सूचित किया जाएगा।
  • साथ ही, रेडिस सेंटीनेल कनेक्टेड क्लाइंट के लिए एक कॉन्फ़िगरेशन प्रदाता है जहां ग्राहक वर्तमान में उपलब्ध मास्टर इंस्टेंस के पते के लिए पूछ सकते हैं और यदि अचानक पतन हुआ, तो सेंटीनेल तुरंत नए मास्टर नोड पते को धक्का देने के लिए प्रतिबद्ध है।

अगले भाग में, हम रेडिस प्रहरी को मास्टर-प्रतिकृति उदाहरणों के साथ कॉन्फ़िगर करेंगे और नोड्स की निगरानी के लिए प्रहरी एपीआई का उपयोग करेंगे।

प्रहरी विन्यास

सबसे पहले, हम 7000 और 7001 पोर्ट पर दो रेडिस इंस्टेंस बनाते हैं। पोर्ट 7000 मास्टर नोड होने जा रहा है और दूसरा मास्टर की नकल करेगा। दोनों उदाहरण क्रमशः निम्न कॉन्फ़िगरेशन फ़ाइलों का उपयोग करते हैं:

मास्टर नोड विन्यास

बंदरगाह 7000
क्लस्टर-सक्षम संख्या
क्लस्टर-कॉन्फ़िगरेशन-फ़ाइल नोड्स.conf
क्लस्टर-नोड-टाइमआउट 5000
परिशिष्ट हां

गुलाम नोड विन्यास

बंदरगाह 7001
क्लस्टर-सक्षम संख्या
क्लस्टर-कॉन्फ़िगरेशन-फ़ाइल नोड्स.conf
क्लस्टर-नोड-टाइमआउट 5000
परिशिष्ट हां

दोनों इंस्टेंस प्रत्येक से जुड़ी कॉन्फ़िगरेशन फ़ाइल प्रदान करके शुरू होंगे। रेडिस इंस्टेंस को अलग से शुरू करने के लिए हम निम्नलिखित कमांड का उपयोग कर सकते हैं:

रेडिस-सर्वर redis.conf

आइए पोर्ट 7001 पर शुरू किए गए रेडिस इंस्टेंस से कनेक्ट करें:

रेडिस-क्ली -पी 7001

अब, हम इस उदाहरण को मास्टर की प्रतिकृति बना सकते हैं जो पोर्ट 7000 पर चल रहा है। REPLICAOF कमांड का उपयोग निम्नानुसार किया जा सकता है:

127.0.0.1 . की प्रतिकृति 7000

जैसा कि अपेक्षित था, पोर्ट 7001 पर चलने वाला इंस्टेंस पोर्ट 7000 पर चलने वाले मास्टर की प्रतिकृति नोड बन गया।

अब, हम उपरोक्त मास्टर इंस्टेंस की निगरानी के लिए तीन रेडिस प्रहरी को कॉन्फ़िगर करने के लिए तैयार हैं। पोर्ट 5000, 5001 और 5002 पर तीन प्रहरी इंस्टेंस बनाने के लिए हमें तीन कॉन्फ़िगरेशन फ़ाइलों की आवश्यकता है जैसा कि निम्नलिखित में दिखाया गया है।

प्रत्येक प्रहरी.conf फ़ाइल निम्न की तरह दिखती है सिवाय इसके कि पोर्ट नंबर बदल दिया जाएगा:

बंदरगाह 5000
प्रहरी मॉनिटर मास्टर्नोड 127.0.0.1 7000 दो
प्रहरी डाउन-आफ्टर-मिलीसेकंड मास्टर्नोड 5000
प्रहरी विफलता-समयबाह्य मास्टर्नोड 60000

अब, तीन प्रहरी चलाने का समय आ गया है। आप पथ के साथ रेडिस-सेंटिनल निष्पादन योग्य का उपयोग कर सकते हैं प्रहरी.conf एक प्रहरी उदाहरण बनाने के लिए कॉन्फ़िगरेशन फ़ाइल। अन्यथा, हम अभी भी पथ निर्दिष्ट करके रेडिस-सर्वर निष्पादन योग्य को कॉल कर सकते हैं प्रहरी.conf और झंडा - प्रहरी .

आइए प्रत्येक प्रहरी को निम्नलिखित कमांड का उपयोग करके शुरू करें:

रेडिस-सर्वर Sentinel.conf --सेंटिनल

पहला प्रहरी पोर्ट 5000 पर शुरू किया गया है। इसी तरह, आप अन्य दो उदाहरणों को भी शुरू कर सकते हैं।

अब, हमारा रेडिस प्रहरी सेटअप तैयार है और चल रहा है जैसा कि निम्नलिखित चित्रण में दिखाया गया है:

निम्नलिखित खंड में, हम प्रहरी एपीआई के बारे में और अधिक खोज करेंगे और हम इसका उपयोग रेडिस मास्टर नोड से संबंधित जानकारी को पुनः प्राप्त करने के लिए कैसे कर सकते हैं।

प्रहरी एपीआई

Redis संबद्ध मास्टर्स और प्रतिकृतियों की निगरानी करने, सूचनाओं के लिए सदस्यता लेने और प्रहरी सेटिंग्स को संशोधित करने के लिए एक अलग प्रहरी API प्रदान करता है। इसके अलावा, कई उपयोग निम्नलिखित में सूचीबद्ध हैं।

  • मॉनिटर किए गए रेडिस मास्टर और स्लेव इंस्टेंस की स्थिति की जाँच करें
  • अन्य प्रहरी के बारे में विवरण
  • विफलता की स्थिति में प्रहरी से पुश-स्टाइल सूचनाएं प्राप्त करें

SENTINEL कमांड का उपयोग इसके संबंधित उप-आदेशों के साथ क्वेरी, अपडेट या रेडिस प्रहरी और मॉनिटर किए गए नोड्स को सेट करने के लिए किया जा सकता है।

मास्टर नोड की स्थिति की जाँच करें

समय-समय पर मास्टर नोड स्वास्थ्य की निगरानी या जांच करना बहुत महत्वपूर्ण है। मास्टर विवरण प्राप्त करने के लिए निम्नलिखित प्रहरी एपीआई कमांड का उपयोग किया जा सकता है:

प्रहरी मास्टर < निगरानी_मास्टर_नाम >

निगरानी_मास्टर_नाम: मास्टर नोड का नाम जो प्रहरी कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट है जिसे हमने पहले चरण में बनाया था।

आइए इस कमांड का उपयोग हमारे सेटअप में मास्टर स्टेटस को क्वेरी करने के लिए करें। हमारे मामले में, मास्टर नोड का नाम है 'मास्टरनोड'।

प्रहरी मास्टर मास्टर्नोड

जानकारी के कई टुकड़े प्राप्त किए गए हैं और उनमें से कुछ महत्वपूर्ण हैं जैसे संख्या-दास, झंडे, और संख्या-अन्य-प्रहरी।

झंडे संपत्ति पर सेट है मालिक जिसका अर्थ है कि गुरु अच्छे स्वास्थ्य में है। जब भी मास्टर नोड डाउन होता है, s_down या ओ_डाउन ध्वज प्रदर्शित किया जाएगा। संपत्ति संख्या-अन्य-प्रहरी 2 पर सेट है, जिसका अर्थ है कि रेडिस प्रहरी पहले से ही मास्टर नोड के लिए अन्य दो प्रहरी को पहचान चुका है। इसके साथ में संख्या-दास संपत्ति मास्टर नोड के लिए उपलब्ध प्रतिकृतियां प्रदर्शित करती है। इस मामले में, यह 1 पर सेट है क्योंकि हमारे पास केवल एक प्रतिकृति है।

कनेक्टेड प्रतिकृतियों के बारे में जानकारी प्राप्त करें

हम निम्नलिखित SENTINEL उप कमांड का उपयोग करके मास्टर नोड से जुड़े प्रतिकृतियों की जांच कर सकते हैं:

प्रहरी प्रतिकृतियां < निगरानी_मास्टर_नाम >

इस उदाहरण में, मास्टर नाम 'मास्टरनोड' है।

SENTINEL प्रतिकृतियां मास्टर्नोड

जैसा कि अपेक्षित था, प्रहरी ने पोर्ट 7001 पर चल रहे दास नोड का पता लगाया।

संबद्ध प्रहरी के बारे में जानकारी प्राप्त करें

इसी तरह, हम निम्नलिखित SENTINEL उपकमांड का उपयोग करके वर्तमान मास्टर नोड से जुड़े अन्य प्रहरी से संबंधित विवरणों को क्वेरी कर सकते हैं:

प्रहरी प्रहरी < मास्टर_नोड_नाम >

इस मामले में, हम 'मास्टरनोड' नामक मास्टर नोड से संबंधित जानकारी प्राप्त करेंगे।

प्रहरी प्रहरी मास्टर्नोड

मास्टर नोड पता प्राप्त करें

जैसा कि पहले के खंड में बताया गया है, Redis सेंटीनेल कनेक्टेड क्लाइंट के लिए एक कॉन्फ़िगरेशन प्रदाता है। इसलिए, यह अनुरोधित ग्राहकों को वर्तमान में चल रहे मास्टर नोड आईपी एड्रेस और पोर्ट प्रदान करने में सक्षम है। निम्नलिखित प्रहरी एपीआई उपकमांड का उपयोग उल्लिखित जानकारी को पुनः प्राप्त करने के लिए किया जा सकता है।

प्रहरी गेट-मास्टर-एडीआर-बाय-नाम < मास्टर_नोड_नाम >

आइए हमारे परिदृश्य के लिए उपरोक्त आदेश को निम्नानुसार निष्पादित करें:

प्रहरी गेट-मास्टर-एडीआर-बाय-नाम मास्टर्नोड

हमने केवल कुछ प्रहरी एपीआई कमांड पर चर्चा की। कई अन्य उप-आदेश उपलब्ध हैं जैसे प्रहरी-विफलता, प्रहरी जानकारी-कैश, प्रहरी स्वामी, और आदि। इसके अलावा, कई आदेश प्रशासन के उद्देश्यों के लिए भी उपयोग करने के लिए उपलब्ध हैं। निम्नलिखित खंड में, हम रेडिस प्रहरी की विफलता प्रक्रिया पर ध्यान केंद्रित करेंगे।

प्रहरी विफलता प्रक्रिया

चूंकि हमारा प्रहरी कॉन्फ़िगर किया गया है, इसलिए हम फेल-ओवर चरण का परीक्षण कर सकते हैं। आइए हमारे मास्टर नोड को 300 सेकंड के लिए सोने के लिए भेजें जो मास्टर नोड में विफलता का अनुकरण करता है।

डिबग सोना 300

पोर्ट 7000 पर चल रहा मास्टर नोड अब पहुंच से बाहर होना चाहिए। तो, संबद्ध प्रहरी नोटिस करेंगे कि मास्टर के पास अनुपलब्ध है +sdown प्रतिस्पर्धा। फिर, इसे सेट किया जाएगा +ओडाउन जहां 2 प्रहरी पुष्टि करते हैं कि कोरम मान के अनुसार मास्टर नोड नीचे है। अंत में, विफलता चरण शुरू हो जाएगा और आदर्श रूप से प्रतिकृति को नए मास्टर को बढ़ावा दिया जाना चाहिए।

आइए मास्टर नोड आईपी पते और पोर्ट को फिर से जांचें।

प्रहरी गेट-मास्टर-एडीआर-बाय-नाम मास्टर्नोड

जैसा कि अपेक्षित था, पिछली प्रतिकृति को नए मास्टर में पदोन्नत किया गया है, जिसका अर्थ है कि प्रहरी विफलता प्रक्रिया सफल है। यह एकल मास्टर-प्रतिकृति जोड़ी के लिए हमारे तीन प्रहरी सेटअपों की तैनाती और परीक्षण का समापन करता है।

निष्कर्ष

किसी दिए गए रेडिस मास्टर प्रतिकृति उदाहरण की उच्च उपलब्धता सुनिश्चित करने के लिए रेडिस प्रहरी सबसे विश्वसनीय तरीका है। एक प्रहरी मानव हस्तक्षेप के बिना स्वचालित विफलता की निगरानी, ​​​​सूचना और पहल करने में सक्षम है। साथ ही, कई प्रहरी एक साथ इस तथ्य के बारे में सहमत होते हैं कि मास्टर नोड पहुंच योग्य नहीं है और कोरम मान का उपयोग प्रहरी की अधिकतम संख्या के रूप में किया जाता है, जिसे मास्टर इंस्टेंस की उपलब्धता की जांच करते समय सहमत होने की आवश्यकता होती है। रेडिस प्रहरी मास्टर नोड और संबंधित प्रतिकृतियों के स्वास्थ्य के बारे में जानकारी प्राप्त करने के लिए उपयोग में आसान एपीआई प्रदान करता है और साथ ही साथ प्रशासनिक कार्य भी करता है।