महा उपयोगकर्ता की निगरानी के बारे में जानकारी

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 मॉडिफ़ायर शामिल किया जा सकता है. ऑब्ज़र्वर नोड, लीडर को चुनने में हिस्सा नहीं लेता.

आम तौर पर, एक से ज़्यादा Edge डेटा सेंटर बनाते समय या जब किसी एक डेटा सेंटर में ZooKeeper नोड की संख्या ज़्यादा होती है, तब :observer मॉडिफ़ायर तय किया जाता है. उदाहरण के लिए, दो डेटा सेंटर वाले 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 नोड की संख्या के आधे से ज़्यादा होनी चाहिए.

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

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

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

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

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

नोड को वोटर या ऑब्ज़र्वर के तौर पर जोड़ने के लिए ध्यान रखने वाली बातें

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

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

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

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

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

Zookeeper नोड हटाना

Zookeeper नोड हटाने की कई वजहें हो सकती हैं. जैसे, कोई नोड खराब हो गया हो या उसे गलत एनवायरमेंट में जोड़ दिया गया हो.

इस सेक्शन में, Zookeeper नोड को हटाने का तरीका बताया गया है. यह तरीका तब काम आता है, जब नोड बंद हो और उस तक पहुंचा न जा सके .

Zookeeper नोड हटाने के लिए:

  1. साइलेंट कॉन्फ़िगरेशन फ़ाइल में बदलाव करें और उस Zookeeper नोड का आईपी पता हटाएं जिसे आपको हटाना है.
  2. बाकी बचे ZooKeeper नोड को फिर से कॉन्फ़िगर करने के लिए, Zookeeper के लिए setup कमांड फिर से चलाएं:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. सभी Zookeeper नोड रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. Management Server नोड को फिर से कॉन्फ़िगर करें:
    /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
  5. सभी राऊटर को फिर से कॉन्फ़िगर करें:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. सभी मैसेज प्रोसेसर को फिर से कॉन्फ़िगर करें:
    /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
  7. सभी 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
  8. सभी 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 नोड (लीडर, वोटर या ऑब्ज़र्वर) का टाइप तय करने के लिए, यह तरीका अपनाएं:

  1. अगर ZooKeeper नोड पर nc इंस्टॉल नहीं है, तो इसे इंस्टॉल करें:
    sudo yum install nc
  2. नोड पर यह 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 (इसका मतलब है कि लीडर नहीं है, लेकिन वोटर है) दिखेगा.

  3. हर ZooKeeper नोड पर, पहले और दूसरे चरण को दोहराएं.

खास जानकारी

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

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