ज़ूकीपर को चालू नहीं किया जा सकता

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

समस्या का ब्यौरा

ZooKeeper प्रोसेस शुरू नहीं की जा सकी.

गड़बड़ी के मैसेज

जब आप ZooKeeper प्रोसेस शुरू करने की कोशिश करते हैं, तब गड़बड़ी का यह मैसेज दिखता है यह बताता है कि ZooKeeper चालू नहीं किया जा सकता:

+ apigee-service apigee-zookeeper status
apigee-service: apigee-zookeeper: Not running (DEAD)
apigee-all: Error: status failed on [apigee-zookeeper]

संभावित कारण

नीचे दी गई टेबल में, इस समस्या की संभावित वजहों की सूची दी गई है:

वजह इसके लिए:
गलत तरीके से कॉन्फ़िगर किया गया ZooKeeper मायआईडी Edge के प्राइवेट क्लाउड के उपयोगकर्ता
ZooKeeper पोर्ट का इस्तेमाल किया जा रहा है Edge के प्राइवेट क्लाउड के उपयोगकर्ता
apigee-zookeeper.pid फ़ाइल में गलत प्रोसेस आईडी Edge के प्राइवेट क्लाउड के उपयोगकर्ता
ZooKeeper लीडर के चुनाव में हिस्सा नहीं ले सका Edge के प्राइवेट क्लाउड के उपयोगकर्ता

उस समस्या के संभावित समाधान देखने के लिए, टेबल में दिए गए किसी लिंक पर क्लिक करें.

गलत कॉन्फ़िगर किया गया ZooKeeper मायआईडी

इन सेक्शन में myid फ़ाइल के बारे में खास जानकारी दी गई है. इसमें यह भी बताया गया है कि गड़बड़ी का पता कैसे लगाना है और गलत कॉन्फ़िगरेशन से जुड़ी समस्याओं को हल करें.

myid फ़ाइल की खास जानकारी

हर ZooKeeper नोड में, दो फ़ाइलें होती हैं:

  1. /opt/apigee/apigee-zookeeper/conf/zoo.cfg फ़ाइल जिसमें क्लस्टर में सभी ZooKeeper नोड के आईपी.

    उदाहरण के लिए, अगर /opt/apigee/apigee-zookeeper/conf/zoo.cfg में तीन ZooKeeper नोड के आईपी इस तरह से क्लस्टर का हिस्सा होते हैं:

    server.1=11.11.11.11:2888:3888
    server.2=22.22.22.22:2888:3888
    server.3=33.33.33.33:2888:3888
    
  2. /opt/apigee/data/apigee-zookeeper/data/myid फ़ाइल में वह टेक्स्ट जो उस खास ZooKeeper नोड के सर्वर नंबर के बारे में बताता है. इसका मायआईडी सर्वर 1 में "1" टेक्स्ट होगा और कुछ नहीं. एन्सेम्बल में आईडी यूनीक होना चाहिए और इसकी वैल्यू 1 से 255 के बीच होनी चाहिए.

    उदाहरण के लिए, ZooKeeper Server.1 पर, /opt/apigee/data/apigee-zookeeper/data/myid फ़ाइल में सिर्फ़ टेक्स्ट 1 होना चाहिए जैसा कि नीचे दिखाया गया है:

    $ cat myid
    1
    

संक्रमण की जांच

  1. इसके लिए ZooKeeper लॉग /opt/apigee/var/log/apigee-zookeeper/zookeeper.log देखें गड़बड़ियां हैं.
  2. अगर आपको “आईडी # के लिए कनेक्शन टूट गया है, मेरा आईडी = #” से मिलता-जुलता WARN मैसेज दिखता है, जैसा कि नीचे दिए गए चित्र में दिखाया गया है, तो इस समस्या की संभावित वजह यह हो सकती है कि सर्वर # मेरी आईडी फ़ाइल गलत तरीके से कॉन्फ़िगर की गई है या उसमें कोई गड़बड़ी है.
    [myid:2] - WARN [RecvWorker:2:QuorumCnxManager$RecvWorker@762] -
      Connection broken for id 2, my id = 2, error = java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at org.apache.zookeeper.server.quorum.QuorumCnxManager$RecvWorker.
          run(QuorumCnxManager.java:747)
    
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg फ़ाइल देखें और मौजूदा ZooKeeper नोड के लिए Server.#.
  4. /opt/apigee/data/apigee-zookeeper/data/myid फ़ाइल की जांच करके देखें कि टेक्स्ट इस फ़ाइल में उस सर्वर.# से मेल खाता है, जो चरण #2 में बताया गया है.
  5. अगर यह जानकारी मेल नहीं खाती है, तो आपने ZooKeeper के न मिलने की वजह का पता लगा लिया है शुरू करें.

रिज़ॉल्यूशन

अगर myid फ़ाइल गलत तरीके से कॉन्फ़िगर की गई है, तो myid फ़ाइल में बदलाव करें और वैल्यू को Zoo.cfg में सर्वर.# पैरामीटर को दर्शाने वाला सही टेक्स्ट.

ZooKeeper पोर्ट का इस्तेमाल किया जा रहा है

संक्रमण की जांच

  1. इसके लिए ZooKeeper लॉग /opt/apigee/var/log/apigee-zookeeper/zookeeper.log देखें गड़बड़ियां हैं.
  2. अगर आपको java.net.BindException: Address already in use अपवाद दिखे पोर्ट #2181 से जुड़े होने पर, जैसा कि नीचे दिए गए चित्र में दिखाया गया है, यह दिखाता है कि ZooKeeper पोर्ट 2181 का इस्तेमाल किसी दूसरे प्रोसेस में किया जा रहा है. इसलिए, ZooKeeper शुरू नहीं किया जा सका.
    2017-04-26 07:00:10,420 [myid:3] - INFO  [main:NIOServerCnxnFactory@94] -
      binding to port 0.0.0.0/0.0.0.0:2181
    2017-04-26 07:00:10,421 [myid:3] - ERROR [main:QuorumPeerMain@89] -
      Unexpected exception, exiting abnormally
      java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
        at org.apache.zookeeper.server.NIOServerCnxnFactory.configure(NIOServerCnxnFactory.java:95)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.runFromConfig(QuorumPeerMain.java:130)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:111)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:78)
    
  3. नीचे दिए गए netstat निर्देश का इस्तेमाल करके, यह पुष्टि करें कि ZooKeeper पोर्ट 2181 का इस्तेमाल वाकई में किया जा रहा है किसी अन्य प्रोसेस से:
    netstat -an | grep 2181
    

रिज़ॉल्यूशन

अगर ZooKeeper पोर्ट 2181 का इस्तेमाल अब भी किया जा रहा है, तो इस समस्या को हल करने के लिए नीचे दिया गया तरीका अपनाएं समस्या:

  1. पोर्ट 2181 पर होल्ड की गई प्रोसेस को ढूंढने के लिए, netstat कमांड का इस्तेमाल करें. ZooKeeper पोर्ट 2181 का इस्तेमाल करने वाली प्रोसेस को खत्म करें:
    $ netstat -antp | grep 2181
    tcp        0      0 0.0.0.0:2181            0.0.0.0:*
    LISTEN      28016/java <defunct>
    $ kill -9 28016
    
  2. अगर पीआईडी फ़ाइलें मौजूद हैं, तो उन्हें मिटाएं और उन्हें लॉक करें:
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
    
  3. ZooKeeper को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
    

apigee-zookeper.pid फ़ाइल में गलत प्रोसेस आईडी

जब आप ZooKeeper को रोकें/फिर से चालू करने की कोशिश करते/करती हैं, तो यह काम नहीं कर सकता. ऐसा इसलिए, क्योंकि apigee-zookeeper.pid फ़ाइल में पुराना/गलत पीआईडी है और मौजूदा पीआईडी नहीं है ZooKeeper प्रोसेस चला रही हूँ. ऐसा तब हो सकता है, जब ZooKeeper प्रोसेस अचानक बंद हो जाती है या किसी वजह से अचानक और apigee-zookeeper.pid फ़ाइल को मिटाया नहीं गया.

संक्रमण की जांच

  1. इस समय चल रही ZooKeeper प्रोसेस की प्रोसेस आईडी पाने के लिए, ps निर्देश:
    ps -ef | grep zookeeper
    
  2. देखें कि /opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid फ़ाइल मौजूद है. अगर यह मौजूद है, तो इस फ़ाइल में लिखा गया प्रोसेस आईडी लिख लें.
  3. चरण #1 और #2 में लिए गए प्रोसेस आईडी की तुलना करें. अगर वे अलग-अलग हैं, तो इस समस्या के लिए apigee-zookeeper.pid file. में गलत प्रोसेस आईडी है

रिज़ॉल्यूशन

  1. apigee-zookeeper.pid फ़ाइल में बदलाव करें और गलत प्रोसेस आईडी को सही आईडी से बदलें ps आदेश से मिली प्रक्रिया आईडी (ऊपर चरण #1).
  2. ZooKeeper को रीस्टार्ट करें:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
    

ZooKeeper लीडर के चुनाव में कोई गड़बड़ी हुई

संक्रमण की जांच

गड़बड़ी की जानकारी पाने के लिए:

  1. इसके लिए ZooKeeper लॉग /opt/apigee/var/log/apigee-zookeeper/zookeeper.log देखें गड़बड़ियां हैं.
  2. देखें कि क्या कॉन्फ़िगरेशन में कोई ऐसे बदलाव हुए हैं जिनकी वजह से लीडर फ़ेल कर सकते हैं.
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg की जांच करें और पक्का करें कि क्लस्टर में ZooKeepers के पास Server.# पैरामीटर के लिए, सही संख्या और आईपी पते होते हैं. यह भी ध्यान रखें कि नेता के चुनाव के सफल होने के लिए कम से कम 3 मतदाताओं का होना ज़रूरी है और मतदाताओं की संख्या विषम संख्या में होनी चाहिए. अगर मतदाताओं की संख्या बहुत कम है, जैसे कि सिर्फ़ 2 वोटों के लिए, सिर्फ़ दो मतदाताओं में से किसी नेता का चुनाव करने के लिए कोठरी नहीं हो सकती.

रिज़ॉल्यूशन

आम तौर पर, गलत तरीके से कॉन्फ़िगर किए गए मायआईडी की वजह से, ZooKeeper चुनाव में ऐसा नहीं होता है. रिज़ॉल्यूशन का इस्तेमाल इसमें चुनाव में गड़बड़ी का पता लगाने के लिए, गलत तरीके से कॉन्फ़िगर किया गया ZooKeeper myid.

अगर समस्या बनी रहती है और समस्या के बारे में ज़्यादा जानकारी चाहिए, तो Apigee Edge की सहायता टीम से संपर्क करें.