2012-07-07 18 views
5

मैं चिड़ियाघर के लिए नया हूँ। मुझे इसकी ही आवश्यकता थी।चिड़ियाघर - सहकर्मियों को गतिशील रूप से जोड़ना?

मेरे पास सहकर्मियों का नेटवर्क है।

  1. t=t_1 -> [peer-1 (Leader), peer-2] सहकर्मी 1 पर मालिक है और सभी ग्राहकों के इस नोड के लिए कनेक्ट।

  2. t=t_2 -> [peer-1 (Leader), peer-2, peer-3] कुछ समय बाद पीयर -3 समूह में शामिल हो गया। क्या ज़ूकीपर सर्वरों की सूची में "गतिशील रूप से" की सूची में सहकर्मी -3 जोड़ना संभव है (यानी, पीयर -1 पर चिड़ियाघर को फिर से शुरू किए बिना)?

  3. t=t_3 -> [peer-3 (Leader), peer-4] थोड़ी देर के दोनों सहकर्मी 1 और सहकर्मी 2 के बाद से कम समूह छोड़ने (जैसे, मर जाते हैं या बंद कर रहे हैं।) मान लिया जाये कि एक तरह से गतिशील रूप से करने के लिए सहकर्मी 3 और सहकर्मी 4 जोड़ने के लिए है कि वहाँ समूह सहकर्मी -3 नेता बन जाता है और सभी ग्राहक अनुरोध सहकर्मी -3 को भेजे जाते हैं।

क्या कोई अन्य विकल्प है कि मैं चिड़ियाघर संचालक का उपयोग कर इस तरह कुछ करने के लिए से अलग का उपयोग कर सकते हैं।

धन्यवाद।

उत्तर

6

फिलहाल, आप बिना किसी पुनरारंभ किए एक ज़ूकीपर क्लस्टर की कॉन्फ़िगरेशन को गतिशील रूप से बदल सकते हैं। इसे ठीक करने के लिए एक खुली समस्या है, ZOOKEEPER-107। क्लस्टर सदस्यता एल्गोरिदम का वर्णन करने वाला पेपर काफी रोचक है, और here पाया जा सकता है।

आप एक समय में सर्वर नोड्स को पुनरारंभ करके क्लस्टर की कॉन्फ़िगरेशन को बदल सकते हैं। उदाहरण के लिए, यदि आप क्लस्टर सर्वर ए, बी, सी है, और आप, तो आप कुछ तरह

  • कर सकते हैं, सी
  • नीचे ले आओ डी लाओ डी के साथ सर्वर सी बदलना चाहते हैं, यह सहकर्मी सूची है है ए, बी, डी
  • नीचे बी लो
  • बी के बदले ए, बी के लिए सहकर्मी सूची, डी
  • अप बी लाओ
  • नीचे ए, बी के लिए एक एक के बदले सहकर्मी सूची, डी
  • ले लो एक
  • लाओ
  • बदलें सभी ग्राहकों की ग्राहक विन्यास ए, बी को इंगित करने, डी

टी पर = T_1, आप 2 चिड़ियाघर संचालक नोड्स के साथ एक समूह होना। यह काफी भंगुर है, जैसे कि नोड नीचे चला जाता है, आप कोरम (मंजिल (एन/2) + 1) स्थापित करने में सक्षम नहीं होंगे, और क्लस्टर अनुपलब्ध होगा। आम तौर पर ज़ूकीपर क्लस्टर अजीब संख्याएं होती हैं।

मुझे यकीन है कि आप जब आप कहते हैं क्या करने के लिए कोशिश कर रहे हैं नहीं कर रहा हूँ,

सहकर्मी 3 नेता बन जाता है और सभी ग्राहक अनुरोधों सहकर्मी 3 को भेज रहे हैं।

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

+1

ऐसा लगता है कि यह जेडके [अल्फा 3.5] (https://zookeeper.apache.org/doc/r3.5.2-alpha/zookeeperRecon में हल किया गया है) fig.html)। – Alastair

1

मैं उपरोक्त किसी भी उत्पादन स्थिति के लिए उपयोग करने का सुझाव नहीं दूंगा। उपरोक्त समाधान केवल तभी काम करता है जब तक आप सभी परिवर्तन पूर्ण होने तक ZK कोरम खोने के ठीक हैं। सी नीचे ले आओ डी को लाएं, यह सहकर्मी सूची ए, बी, डी है "

-> इस बिंदु एक पर और बी न डी के बारे में पता -> डी एबी

बारे में जानता है:

यहाँ क्यों है

तो इस बिंदु पर आप कोरम में केवल ए और बी कामकाज अगले आप बी नीचे ले और आप कोरम खो देते हैं।

आप ZK डेटा पर पहुंच खो देंगे, जब तक माइग्रेशन पूरा होने और कोरम फिर से बहाल है। सबसे अच्छी तरह से इस मामले में zk का उपयोग करके एक पठनीय मोड में फेलओवर का उपयोग कर डिज़ाइन किए गए ऐप्स और शानदार ढंग से फिर से होंगे आवरण।

Zookeeper-107 तक ज़ुकीपर 3.5 के तहत जारी किया गया है, आपको बुद्धिमानी से जहर चुनने की आवश्यकता होगी।

इसके लिए बेहतर:

  1. सिर्फ सेटअप एक नया ZK कलाकारों की टुकड़ी (ZK क्लस्टर)
  2. नई ZK कलाकारों की टुकड़ी
  3. को स्नैपशॉट से पुराने ZK कलाकारों की टुकड़ी से
  4. Mirate क्षुधा बहाल माइग्रेशन पूरा होने के बाद शटडाउन पुराना जेके ensemble
+0

इस विधि के बारे में क्या: https://gist.github.com/miketheman/6057930 – pdeva

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