ज़ूकीपर का रखरखाव

Edge for Private Cloud v. 4.16.09

ZooKeeper एंसेंबल को इस तरह डिज़ाइन किया गया है कि एक या उससे ज़्यादा ZooKeeper नोड के काम न करने पर भी, वे काम करते रहें और कोई डेटा न मिटे. इस सुविधा का इस्तेमाल, ZooKeeper नोड के रखरखाव के लिए किया जा सकता है. इससे सिस्टम का डाउनटाइम नहीं होता.

ZooKeeper और Edge के बारे में जानकारी

Edge में, ZooKeeper नोड में Edge के अलग-अलग कॉम्पोनेंट की जगह और कॉन्फ़िगरेशन के बारे में कॉन्फ़िगरेशन डेटा होता है. साथ ही, यह कॉन्फ़िगरेशन में हुए बदलावों के बारे में अलग-अलग कॉम्पोनेंट को सूचना देता है. प्रोडक्शन सिस्टम के लिए, Edge की सभी टोपोलॉजी में कम से कम तीन ZooKeeper नोड इस्तेमाल करने के लिए कहा जाता है.

ZooKeeper नोड की जानकारी देने के लिए, Edge की कॉन्फ़िगरेशन फ़ाइल में ZK_HOSTS और ZK_CLIENT_HOSTS प्रॉपर्टी का इस्तेमाल करें. परीक्षा के लिए

ZK_HOSTS="$IP1 $IP2 $IP3" 
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3" 

कहां:

  • ZK_HOSTS - इससे ZooKeeper नोड के आईपी पतों के बारे में पता चलता है. आईपी पते, सभी ZooKeeper नोड पर एक ही क्रम में होने चाहिए.

    एक से ज़्यादा डेटा सेंटर वाले एनवायरमेंट में, सभी डेटा सेंटर के सभी ZooKeeper नोड की सूची बनाएं.
  • ZK_CLIENT_HOSTS - यह ZooKeeper नोड के आईपी पते बताता है. इनका इस्तेमाल सिर्फ़ यह डेटा सेंटर करता है. डेटा सेंटर में सभी ZooKeeper नोड पर, आईपी पते एक ही क्रम में होने चाहिए.

    एक डेटा सेंटर इंस्टॉलेशन में, ये वही नोड होते हैं जो ZK_HOSTS ने तय किए हैं. एक से ज़्यादा डेटा सेंटर वाले एनवायरमेंट में, हर डेटा सेंटर के लिए Edge कॉन्फ़िगरेशन फ़ाइल में सिर्फ़ उस डेटा सेंटर के ZooKeeper नोड की सूची होनी चाहिए

डिफ़ॉल्ट रूप से, सभी ZooKeeper नोड को वोटर नोड के तौर पर सेट किया जाता है. इसका मतलब है कि सभी नोड, ZooKeeper लीडर को चुनने में हिस्सा लेते हैं. ZK_HOSTS के साथ “:observer” मॉडिफ़ायर को शामिल किया जा सकता है. इससे यह पता चलता है कि नोट, ऑब्ज़र्वर नोड है, न कि वोटर. ऑब्ज़र्वर नोड, लीडर के चुनाव में हिस्सा नहीं लेता.

आम तौर पर, “:observer” मॉडिफ़ायर को तब तय किया जाता है, जब एक से ज़्यादा Edge डेटा सेंटर बनाए जाते हैं या जब किसी एक डेटा सेंटर में ZooKeeper नोड की संख्या ज़्यादा होती है. उदाहरण के लिए, दो डेटा सेंटर वाले 12-होस्ट Edge इंस्टॉलेशन में, डेटा सेंटर 2 में नोड 9 पर ZooKeeper, ऑब्ज़र्वर है:

इसके बाद, डेटा सेंटर 1 के लिए अपनी कॉन्फ़िगरेशन फ़ाइल में इन सेटिंग का इस्तेमाल करें:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

डेटा सेंटर के लिए

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

नेताओं, फ़ॉलोअर, वोटरों, और ऑब्ज़र्वर के बारे में

मल्टी-नोड ZooKeeper इंस्टॉलेशन में, किसी एक नोड को लीडर के तौर पर चुना जाता है. अन्य सभी ZooKeeper नोड को फ़ॉलोअर के तौर पर सेट किया जाता है. किसी भी ZooKeeper नोड से डेटा पढ़ा जा सकता है. हालांकि, डेटा लिखने के सभी अनुरोध लीडर को फ़ॉरवर्ड किए जाते हैं. उदाहरण के लिए, Edge में एक नया मैसेज प्रोसेसर जोड़ा जाता है. यह जानकारी ZooKeeper लीडर को भेजी जाती है. इसके बाद, सभी फ़ॉलोअर डेटा को कॉपी करते हैं.

Edge इंस्टॉल करते समय, हर ZooKeeper नोड को वोटर या ऑब्ज़र्वर के तौर पर तय किया जाता है. इसके बाद, वोट देने वाले सभी ZooKeeper नोड, लीडर को चुनते हैं. लीडर चुनने के लिए, यह ज़रूरी है कि काम कर रहे ZooKeeper वोटर नोड का कोरम उपलब्ध हो. कोरम का मतलब है कि सभी डेटा सेंटर में मौजूद, ZooKeeper के आधे से ज़्यादा वोटर नोड काम कर रहे हैं.

अगर वोटर नोड का कोरम उपलब्ध नहीं है, तो किसी भी लीडर को नहीं चुना जा सकता. इस स्थिति में, Zookeeper अनुरोधों को पूरा नहीं कर सकता. इसका मतलब है कि जब तक कोरम वापस नहीं आता, तब तक Edge Management Server को अनुरोध नहीं भेजा जा सकता, Management API के अनुरोधों को प्रोसेस नहीं किया जा सकता या Edge के यूज़र इंटरफ़ेस (यूआई) में लॉग इन नहीं किया जा सकता.

उदाहरण के लिए, एक डेटा सेंटर इंस्टॉलेशन में:

  • आपने तीन ZooKeeper नोड इंस्टॉल किए हैं
  • सभी ZooKeeper नोड, वोटर होते हैं
  • कोरम में दो वोटर नोड शामिल होते हैं
  • अगर सिर्फ़ एक वोटर नोड उपलब्ध है, तो ZooKeeper एन्सेम्बल काम नहीं कर सकता

दो डेटा सेंटर वाले इंस्टॉलेशन में:

  • आपने हर डेटा सेंटर के लिए तीन ZooKeeper नोड इंस्टॉल किए हैं. इस तरह, कुल छह नोड इंस्टॉल किए गए हैं
  • डेटा सेंटर 1 में तीन वोटर नोड हैं
  • डेटा सेंटर 2 में दो वोटर नोड और एक ऑब्ज़र्वर नोड है
  • कोरम, दोनों डेटा सेंटर के पांच वोटर पर आधारित होता है. इसलिए, इसमें तीन वोटर नोड काम करते हैं
  • अगर सिर्फ़ दो या इससे कम वोटर नोड उपलब्ध हैं, तो ZooKeeper एन्सेम्बल काम नहीं कर सकता

नोड को वोटर या ऑब्ज़र्वर के तौर पर जोड़ना

सिस्टम की ज़रूरतों के हिसाब से, आपको Edge इंस्टॉलेशन में अतिरिक्त ZooKeeper नोड जोड़ने पड़ सकते हैं. ZooKeeper नोड जोड़ने से जुड़े दस्तावेज़ में, Edge में अतिरिक्त ZooKeeper नोड जोड़ने का तरीका बताया गया है. ZooKeeper नोड जोड़ते समय, आपको यह ध्यान रखना होगा कि किस तरह के नोड जोड़ने हैं: वोटर या ऑब्ज़र्वर.

आपको यह पक्का करना होगा कि आपके पास ज़रूरत के मुताबिक वोटर नोड हों, ताकि अगर एक या उससे ज़्यादा वोटर नोड काम न कर रहे हों, तो भी ZooKeeper एन्सेम्बल काम कर सके. इसका मतलब है कि वोटर नोड का कोरम अब भी उपलब्ध है. वोटर नोड जोड़ने से, कोरम का साइज़ बढ़ता है. इसलिए, ज़्यादा वोटर नोड के डाउन होने पर भी काम किया जा सकता है.

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

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

Apigee का सुझाव है कि एक डेटा सेंटर में पांच से ज़्यादा वोटर नहीं होने चाहिए. भले ही, ऑब्ज़र्वर नोड की संख्या कितनी भी हो. दो डेटा सेंटर में, Apigee का सुझाव है कि आपके पास नौ से ज़्यादा वोटर न हों. इनमें से पांच वोटर एक डेटा सेंटर में और चार वोटर दूसरे डेटा सेंटर में होने चाहिए. इसके बाद, सिस्टम की ज़रूरतों के हिसाब से, जितने चाहें उतने ऑब्ज़र्वर नोड जोड़े जा सकते हैं.

रखरखाव से जुड़ी ज़रूरी बातें

ZooKeeper का रखरखाव, पूरी तरह से काम करने वाले एन्सेम्बल पर किया जा सकता है. इसके लिए, डाउनटाइम की ज़रूरत नहीं होती. हालांकि, इसके लिए ज़रूरी है कि रखरखाव की प्रोसेस एक बार में एक ही नोड पर की जाए. यह पक्का करके कि किसी भी समय सिर्फ़ एक ZooKeeper नोड बंद हो, यह पक्का किया जा सकता है कि लीडर चुनने के लिए, वोटर नोड का कोरम हमेशा उपलब्ध हो.

कई डेटा सेंटर में रखरखाव

एक से ज़्यादा डेटा सेंटर के साथ काम करते समय, याद रखें कि ZooKeeper एन्सेम्बल, डेटा सेंटर के बीच अंतर नहीं करता. ZooKeeper असेंबली, सभी डेटा सेंटर में मौजूद सभी ZooKeeper नोड को एक ही ग्रुप के तौर पर देखती हैं.

किसी डेटा सेंटर में वोटर नोड की जगह से, ZooKeeper के कोरम कैलकुलेशन पर कोई असर नहीं पड़ता. डेटा सेंटर में अलग-अलग नोड बंद हो सकते हैं. हालांकि, जब तक पूरे सिस्टम में कोरम बना रहता है, तब तक ZooKeeper काम करता रहता है.

रखरखाव से जुड़े असर

कई बार, आपको रखरखाव के लिए ZooKeeper नोड को बंद करना होगा. यह नोड, वोटर नोड या ऑब्ज़र्वर नोड हो सकता है. उदाहरण के लिए, आपको नोड पर Edge के वर्शन को अपग्रेड करना पड़ सकता है, ZooKeeper को होस्ट करने वाली मशीन काम करना बंद कर सकती है या नेटवर्क की गड़बड़ी जैसी किसी अन्य वजह से नोड उपलब्ध नहीं हो सकता.

अगर बंद होने वाला नोड ऑब्ज़र्वर नोड है, तो नोड के वापस चालू होने तक ZooKeeper एन्सेम्बल की परफ़ॉर्मेंस में थोड़ी गिरावट आ सकती है. अगर नोड एक वोटर नोड है, तो इससे ZooKeeper एन्सेम्बल की परफ़ॉर्मेंस पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि लीडर चुनने की प्रोसेस में हिस्सा लेने वाला नोड मौजूद नहीं है. वोटर नोड के बंद होने की वजह चाहे जो भी हो, उपलब्ध वोटर नोड का कोरम बनाए रखना ज़रूरी है.

रखरखाव की प्रक्रिया

आपको रखरखाव की कोई भी प्रोसेस सिर्फ़ यह पक्का करने के बाद करनी चाहिए कि ZooKeeper एन्सेम्बल काम कर रहा है. यह मान लिया जाता है कि ऑब्ज़र्वर नोड काम कर रहे हैं और रखरखाव के दौरान कोरम बनाए रखने के लिए, ज़रूरत के मुताबिक वोटर नोड उपलब्ध हैं.

इन शर्तों के पूरा होने पर, किसी भी साइज़ का ZooKeeper एन्सेम्बल, किसी भी समय एक नोड के नुकसान को सहन कर सकता है. इससे डेटा का नुकसान नहीं होता या परफ़ॉर्मेंस पर कोई असर नहीं पड़ता. इसका मतलब है कि आपके पास एन्सेम्बल के किसी भी नोड पर रखरखाव करने की सुविधा है. हालांकि, एक समय पर सिर्फ़ एक नोड पर रखरखाव किया जा सकता है.

रखरखाव के दौरान, ZooKeeper नोड (लीडर, वोटर या ऑब्ज़र्वर) के टाइप का पता लगाने के लिए, यह तरीका अपनाएं:

  1. अगर यह ZooKeeper नोड पर इंस्टॉल नहीं है, तो nc इंस्टॉल करें:
    > sudo yum install nc
  2. नोड पर यह nc कमांड चलाएं:
    > echo stat | nc localhost 2181

    यहां 2181, ZooKeeper पोर्ट है. आपको फ़ॉर्म पर आउटपुट दिखना चाहिए:
    Zookeeper वर्शन: 3.4.5-1392090, 30/09/2012 17:52 GMT को बनाया गया
    क्लाइंट: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    लेटेंसी कम से कम/औसत/ज़्यादा से ज़्यादा: 0/0/0
    मिले: 1
    भेजे गए: 0
    कनेक्शन: 1
    बकाया: 0
    Zxid: 0xc00000044
    मोड: फ़ॉलोअर
    नोड की संख्या: 653


    नोड के आउटपुट की मोड लाइन में, आपको नोड कॉन्फ़िगरेशन के आधार पर ऑब्ज़र्वर, लीडर या फ़ॉलोअर (यानी कि ऐसा वोटर जो लीडर नहीं है) दिखना चाहिए.

    ध्यान दें: एक ZooKeeper नोड के साथ Edge के स्टैंडअलोन इंस्टॉलेशन में, मोड को स्टैंडअलोन पर सेट किया जाता है.
  3. हर ZooKeeper नोड पर, पहले और दूसरे चरण को दोहराएं.

खास जानकारी

ZooKeeper एन्सेम्बल का रखरखाव करने का सबसे अच्छा तरीका है कि एक बार में एक नोड का रखरखाव किया जाए. ध्यान दें:

  • मेंटेनेंस के दौरान, आपको वोटर नोड का कोरम बनाए रखना होगा, ताकि यह पक्का किया जा सके कि ZooKeeper एन्सेम्बल काम करता रहे
  • ऑब्ज़र्वर नोड को हटाने से, कोरम या लीडर चुनने की क्षमता पर कोई असर नहीं पड़ता
  • कोरम का हिसाब, सभी डेटा सेंटर में मौजूद सभी ZooKeeper नोड के आधार पर लगाया जाता है
  • पिछले सर्वर के चालू होने के बाद, अगले सर्वर का रखरखाव शुरू करें
  • ZooKeeper नोड की जांच करने के लिए, nc कमांड का इस्तेमाल करें