2015-06-30 9 views
52

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

  • क्या यह संसाधनों का अपशिष्ट है?
  • क्या उपलब्ध संसाधनों का पूरा उपयोग करने का कोई बेहतर तरीका है?
  • क्या रेडिस रेडिस सेंटीनेल के विकल्प को क्लस्टर कर रहा है?

मैं पहले से ही sentinel और clustering के लिए redis प्रलेखन ऊपर देखा, किसी को होने अनुभव कर सकते हैं कृपया समझा।

Master slave configuration in Redis sentinel - before failure

Master fails and slave kicks in to action

अद्यतन

ठीक है। मेरे असली तैनाती परिदृश्य में मेरे पास रेडिस के लिए समर्पित दो सर्वर हैं। मेरे पास एक और सर्वर है जो मेरा जेबॉस सर्वर चल रहा है। जेबॉस में चल रहे एप्लिकेशन को रेडिस मास्टर सर्वर (एम) से कनेक्ट करने के लिए कॉन्फ़िगर किया गया है।

फ़ेलओवर परिदृश्य

आदर्श रूप में, मैं जब मास्टर कैश सर्वर विफल रहता है (या तो Redis प्रक्रिया नीचे या मशीन विफलता जाता है) Jboss में आवेदन दास कैश सर्वर से कनेक्ट करने की आवश्यकता है। इसे प्राप्त करने के लिए मैं Redis सर्वर को कैसे कॉन्फ़िगर करूँगा?

+--------+   +--------+ 
| Master |---------| Slave | 
|   |   |  | 
+--------+   +--------+ 

Configuration: quorum = 1 
+1

यह भी मदद कर सकता है - http: // fnordig।डी/2015/06/01/redis-sentinel-and-redis-cluster/ –

उत्तर

52

सबसे पहले, बात पत्रिका बोलने दें।

सेंटीनेल विफलता का प्रबंधन करता है, यह एचए के लिए रेडिस को कॉन्फ़िगर नहीं करता है। यह एक महत्वपूर्ण भेद है। दूसरा, आपके द्वारा पोस्ट किया गया चित्र वास्तव में एक खराब सेटअप है - आप उसी नोड पर सेंटीनेल को चलाने के लिए नहीं चाहते हैं क्योंकि यह रेडिस नोड्स का प्रबंधन कर रहा है। जब आप उस मेजबान को खो देते हैं तो आप दोनों खो देते हैं।

"क्या यह संसाधनों का अपशिष्ट है?" यह आपके उपयोग के मामले पर निर्भर करता है। आपको उस सेटअप में तीन रेडिस नोड्स की आवश्यकता नहीं है, आपको केवल दो की आवश्यकता है। तीन आपकी अनावश्यकता बढ़ाता है, लेकिन इसकी आवश्यकता नहीं है। यदि आपको अतिरिक्त अनावश्यकता की आवश्यकता है तो यह संसाधनों की बर्बादी नहीं है। यदि आपको अनावश्यकता की आवश्यकता नहीं है तो आप केवल एक रेडिस इंस्टेंस चलाएं और इसे अच्छी तरह से कॉल करें - क्योंकि अधिक रनिंग "बर्बाद" होगी।

दो गुलामों को चलाने का एक अन्य कारण पढ़ने को विभाजित करना होगा। दोबारा, अगर आपको इसकी ज़रूरत है तो यह बर्बाद नहीं होगा।

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

अब "रेडिस सेंडिनल के विकल्प को क्लस्टर कर रहा है?"। यह वास्तव में आपके उपयोग के मामले पर पूरी तरह से निर्भर करता है। रेडिस क्लस्टर एक एचए समाधान नहीं है - यह एक एकाधिक लेखक/बड़े-से-राम समाधान है। यदि आपका लक्ष्य सिर्फ एचए है तो यह संभवतः आपके लिए उपयुक्त नहीं होगा।रेडिस क्लस्टर सीमाओं के साथ आता है, खासकर बहु-कुंजी संचालन के आसपास, इसलिए यह जरूरी नहीं है कि "केवल क्लस्टर" ऑपरेशन का सीधा हो।

यदि आपको लगता है कि तीन मेजबान रेडिस (और तीन चलने वाले सेंटीनेल) चल रहे हैं, तो आप क्लस्टर को और भी अधिक होने की संभावना रखते हैं, क्योंकि इसे अधिक संसाधनों की आवश्यकता होती है।

आपके द्वारा पूछे गए प्रश्न शायद लिखे गए हैं और लिखित रूप में जीवित रहने के लिए राय आधारित हैं। यदि आपके पास एक विशिष्ट मामला/समस्या है जो आप काम कर रहे हैं तो कृपया इसके साथ अपडेट करें ताकि हम विशिष्ट सहायता और जानकारी प्रदान कर सकें। विशेष जानकारी के लिए

अद्यतन:

अपने परिदृश्य मैं 3 प्रहरी, अपने JBoss सर्वर पर एक चल रहा है के साथ जाना होगा में उचित विफलता प्रबंधन के लिए। यदि आपके पास 3 जेबॉस नोड्स हैं तो प्रत्येक पर एक के साथ जाएं। मेरे पास अलग-अलग नोड्स पर रेडिस पॉड (मास्टर + गुलाम) होगा, और सेंटीनेल को फेलओवर का प्रबंधन करने दें।

वहां से यह जेबॉस/जेडिस को अपनी जानकारी और कनेक्शन प्रबंधन के लिए सेंटिनल का उपयोग करने के लिए तारों का मामला है। चूंकि मैं उन लोगों का उपयोग नहीं करता हूं, एक त्वरित खोज यह बदलती है कि जेडिस के लिए इसका समर्थन है, आपको बस इसे सही तरीके से कॉन्फ़िगर करने की आवश्यकता है। मुझे मिले कुछ उदाहरण Looking for an example of Jedis with Sentinel और https://github.com/xetorthio/jedis/issues/725 पर हैं जो पूल का उपयोग करने के लिए JedisSentinelPool के बारे में बात करते हैं।

जब सेंटीनेल एक विफलता निष्पादित करता है तो क्लाइंट डिस्कनेक्ट हो जाएंगे और जेडिस (वर्तमान में) सेंटिनल से पूछे जाने वाले कनेक्शन से पूछे जाने वाले कनेक्शन को संभाल लेंगे।

+0

मुझे मिली छवियां हैं। http://www.symantec.com/connect/blogs/configuring-redis-high- उपलब्धता – ravindrab

+1

हाय @ द-रियल-बिल, क्या आप कृपया विस्तारित कर सकते हैं "सेंटीनेल विफलता का प्रबंधन करता है, यह एचए के लिए रेडिस को कॉन्फ़िगर नहीं करता है। " आधिकारिक दस्तावेज (http://redis.io/topics/sentinel) पर, यह कहता है "रेडिस सेंटीनेल रेडिस के लिए उच्च उपलब्धता प्रदान करता है।" –

+0

एचए रेडिस को एचए होने के लिए कई टुकड़े की आवश्यकता होती है। सेंटीनेल केवल एक टुकड़ा संभालता है: विफलता। यह प्रतिकृति स्थापित नहीं करता है और यह प्रदान नहीं करता है और एचए एंडपॉइंट। यह सेवा खोज प्रदान करता है ताकि ग्राहक जान सके कि मास्टर के पास कहां बात करनी है। यह एचए के लिए रेडिस को कॉन्फ़िगर नहीं करता है। –

24

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

सबसे पहले, यह कहने के लिए कि सेंटीनेल एचए के बिना विफलता प्रदान करता है झूठा है। जब आपके पास विफलता हो, तो आपके पास आवेदन राज्य के अतिरिक्त लाभ को दोहराया जा रहा है। भेद यह है कि आप बिना किसी प्रतिकृति के सिस्टम में एचए रख सकते हैं (यह HA है लेकिन यह गलती सहनशील नहीं है)।

दूसरा, उसी मशीन पर एक सेंटीनेल चला रहा है क्योंकि इसका लक्ष्य रेडिस इंस्टेंस "खराब सेटअप" नहीं है: यदि आप अपना सेंटीनेल, या अपना रेडिस इंस्टेंस या पूरी मशीन खो देते हैं, तो परिणाम समान होते हैं। शायद यही कारण है कि इस तरह के विन्यास के हर उदाहरण एक ही मशीन पर चल रहा है।

+5

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

14

यह आपके प्रश्न का सीधा जवाब नहीं है, लेकिन लगता है, यह मेरे जैसे रेडिस newbies के लिए उपयोगी जानकारी है। "रेडिस क्लस्टर बनाम सेंटीनेल" खोजते समय भी यह प्रश्न Google में पहला लिंक दिखाई देता है।

Redis प्रहरी Redis उच्च उपलब्धता समाधान का नाम है ... यह Redis क्लस्टर के साथ कोई संबंध नहीं है और लोगों द्वारा उपयोग किया जा सकता है कि Redis क्लस्टर की जरूरत नहीं है इरादा है, लेकिन बस एक तरह से निष्पादित करने के लिए जब कोई मास्टर इंस्टेंस सही ढंग से काम नहीं कर रहा है।

Redis Sentinel design draft 1.3

से लिया यह obviuos नहीं कर रहा है जब आप Redis के लिए और विफलता समाधान को लागू करने के लिए नए हैं। sentinel और clustering के बारे में आधिकारिक दस्तावेज एक दूसरे से तुलना नहीं करते हैं, इसलिए दस्तावेजों के बहुत सारे पढ़ने के बिना सही तरीका चुनना मुश्किल है।

संबंधित मुद्दे