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"
डेटा सेंटर 2 के लिए:
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 के लिए
setupकमांड को फिर से चलाएं:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- सभी Zookeeper नोड रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- मैनेजमेंट सर्वर नोड को फिर से कॉन्फ़िगर करें:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart - सभी राऊटर फिर से कॉन्फ़िगर करें:
/opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-router restart - सभी मैसेज प्रोसेसर को फिर से कॉन्फ़िगर करें:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart - सभी Qpid नोड को फिर से कॉन्फ़िगर करें:
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart - सभी Postgres नोड को फिर से कॉन्फ़िगर करें:
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart
रखरखाव से जुड़ी ज़रूरी बातें
अगर ZooKeeper का रखरखाव एक बार में एक ही नोड पर किया जाता है, तो पूरी तरह से काम कर रहे एन्सेम्बल पर बिना किसी डाउनटाइम के रखरखाव किया जा सकता है. यह पक्का करके कि किसी भी समय सिर्फ़ एक ZooKeeper नोड बंद हो, यह पक्का किया जा सकता है कि लीडर चुनने के लिए, वोटर नोड का कोरम हमेशा उपलब्ध हो.
कई डेटा सेंटर में रखरखाव
एक से ज़्यादा डेटा सेंटर के साथ काम करते समय, याद रखें कि ZooKeeper एन्सेम्बल, डेटा सेंटर के बीच अंतर नहीं करता. ZooKeeper असेंबली, सभी डेटा सेंटर में मौजूद सभी ZooKeeper नोड को एक ही ग्रुप के तौर पर देखती हैं.
किसी डेटा सेंटर में वोटर नोड की जगह से, ZooKeeper के कोरम कैलकुलेशन पर कोई असर नहीं पड़ता. डेटा सेंटर में अलग-अलग नोड बंद हो सकते हैं. हालांकि, जब तक पूरे एन्सेम्बल में कोरम सुरक्षित रहता है, तब तक ZooKeeper काम करता रहता है.
रखरखाव से जुड़ी ज़रूरी बातें
कई बार, आपको रखरखाव के लिए ZooKeeper नोड को बंद करना होगा. यह नोड, वोटर नोड या ऑब्ज़र्वर नोड हो सकता है. उदाहरण के लिए, आपको नोड पर Edge के वर्शन को अपग्रेड करना पड़ सकता है, ZooKeeper को होस्ट करने वाली मशीन काम करना बंद कर सकती है या नेटवर्क की गड़बड़ी जैसी किसी अन्य वजह से नोड उपलब्ध नहीं हो सकता.
अगर बंद होने वाला नोड एक ऑब्ज़र्वर नोड है, तो नोड के वापस चालू होने तक ZooKeeper एन्सेम्बल की परफ़ॉर्मेंस में थोड़ी गिरावट आ सकती है. अगर नोड एक वोटर नोड है, तो इससे ZooKeeper एन्सेम्बल की परफ़ॉर्मेंस पर असर पड़ सकता है. ऐसा इसलिए, क्योंकि लीडर चुनने की प्रोसेस में हिस्सा लेने वाला नोड मौजूद नहीं है. वोटर नोड के बंद होने की वजह चाहे जो भी हो, उपलब्ध वोटर नोड का कोरम बनाए रखना ज़रूरी है.
रखरखाव की प्रोसेस
रखरखाव की प्रोसेस सिर्फ़ तब करें, जब आपको पक्का पता हो कि ZooKeeper एन्सेम्बल काम कर रहा है. यह मान लिया जाता है कि ऑब्ज़र्वर नोड काम कर रहे हैं और रखरखाव के दौरान कोरम बनाए रखने के लिए, ज़रूरत के मुताबिक वोटर नोड उपलब्ध हैं.
इन शर्तों के पूरा होने पर, किसी भी साइज़ का ZooKeeper एन्सेम्बल, किसी भी समय एक नोड के नुकसान को सहन कर सकता है. इससे डेटा का नुकसान नहीं होता या परफ़ॉर्मेंस पर कोई असर नहीं पड़ता. इसका मतलब है कि आपके पास एन्सेम्बल के किसी भी नोड पर रखरखाव करने की सुविधा है. हालांकि, एक समय पर सिर्फ़ एक नोड पर रखरखाव किया जा सकता है.
रखरखाव के दौरान, ZooKeeper नोड (लीडर, वोटर या ऑब्ज़र्वर) के टाइप का पता लगाने के लिए, यह तरीका अपनाएं:
- अगर यह ZooKeeper नोड पर इंस्टॉल नहीं है, तो
ncइंस्टॉल करें:sudo yum install nc
- नोड पर यह
ncकमांड चलाएं, जहां 2181, ZooKeeper पोर्ट है:echo stat | nc localhost 2181
आपको फ़ॉर्म पर आउटपुट दिखना चाहिए:
Zookeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0) Latency min/avg/max: 0/0/0 Received: 1 Sent: 0 Connections: 1 Outstanding: 0 Zxid: 0xc00000044 Mode: follower Node count: 653
नोड के आउटपुट की
Modeलाइन में, आपको नोड कॉन्फ़िगरेशन के आधार परobserver,leaderयाfollower(इसका मतलब है कि वोटर, लीडर नहीं है) दिखना चाहिए. - हर ZooKeeper नोड पर, पहले और दूसरे चरण को दोहराएं.
खास जानकारी
ZooKeeper एन्सेम्बल का रखरखाव करने का सबसे अच्छा तरीका है कि एक बार में एक नोड का रखरखाव किया जाए. ध्यान दें:
- रखरखाव के दौरान, आपको वोटर नोड का कोरम बनाए रखना होगा, ताकि ZooKeeper एन्सेम्बल काम करता रहे.
- ऑब्ज़र्वर नोड को हटाने से, कोरम या लीडर चुनने की क्षमता पर कोई असर नहीं पड़ता.
- कोरम का हिसाब, सभी डेटा सेंटर में मौजूद सभी ZooKeeper नोड के आधार पर लगाया जाता है.
- पिछले सर्वर के चालू होने के बाद, अगले सर्वर का रखरखाव शुरू करें.
- ZooKeeper नोड की जांच करने के लिए,
ncकमांड का इस्तेमाल करें.