आपको 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]
संभावित कारण
इस टेबल में, इस समस्या की संभावित वजहें दी गई हैं:
| वजह | इसके लिए: |
|---|---|
| Misconfigured ZooKeeper myid | Edge Private Cloud के उपयोगकर्ता |
| ZooKeeper पोर्ट का इस्तेमाल किया जा रहा है | Edge Private Cloud के उपयोगकर्ता |
| apigee-zookeeper.pid फ़ाइल में प्रोसेस आईडी गलत है | Edge Private Cloud के उपयोगकर्ता |
| ZooKeeper Leader Election Failure | Edge Private Cloud के उपयोगकर्ता |
समस्या के संभावित समाधान देखने के लिए, टेबल में मौजूद किसी लिंक पर क्लिक करें.
ZooKeeper myid को गलत तरीके से कॉन्फ़िगर किया गया है
यहां दिए गए सेक्शन में, myid फ़ाइल के बारे में खास जानकारी दी गई है. साथ ही, कॉन्फ़िगरेशन से जुड़ी समस्याओं का पता लगाने और उन्हें हल करने का तरीका बताया गया है.
myid फ़ाइल के बारे में खास जानकारी
हर ZooKeeper नोड पर, दो फ़ाइलें होती हैं:
/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
/opt/apigee/data/apigee-zookeeper/data/myidफ़ाइल में टेक्स्ट की एक लाइन होती है. यह लाइन, उस खास ZooKeeper नोड के सर्वर नंबर से मेल खाती है. सर्वर 1 के myid में, "1" टेक्स्ट के अलावा और कुछ नहीं होगा. आईडी, ग्रुप में शामिल सभी आइटम के लिए यूनीक होना चाहिए. साथ ही, इसकी वैल्यू 1 से 255 के बीच होनी चाहिए.उदाहरण के लिए, ZooKeeper server.1 पर,
/opt/apigee/data/apigee-zookeeper/data/myidफ़ाइल में सिर्फ़ 1 टेक्स्ट होना चाहिए. जैसा कि यहां दिखाया गया है:$ cat myid 1
संक्रमण की जांच
- गड़बड़ियों के लिए, ZooKeeper लॉग
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logदेखें. - अगर आपको “Connection broken for id #, my id = #” जैसा चेतावनी वाला मैसेज दिखता है, जैसा कि नीचे दी गई इमेज में दिखाया गया है, तो इस समस्या की वजह यह हो सकती है कि myid फ़ाइल में मौजूद सर्वर # गलत तरीके से कॉन्फ़िगर किया गया है या खराब हो गया है.
[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)
/opt/apigee/apigee-zookeeper/conf/zoo.cfgफ़ाइल देखें और मौजूदा ZooKeeper नोड के लिए, server.# नोट करें./opt/apigee/data/apigee-zookeeper/data/myidफ़ाइल देखें और देखें कि इस फ़ाइल में मौजूद टेक्स्ट, दूसरे चरण में बताए गए सर्वर से मेल खाता है या नहीं.- अगर कोई अंतर है, तो इसका मतलब है कि आपको ZooKeeper के शुरू न होने की वजह पता चल गई है.
रिज़ॉल्यूशन
अगर myid फ़ाइल को गलत तरीके से कॉन्फ़िगर किया गया है, तो myid फ़ाइल में बदलाव करें. इसके बाद, zoo.cfg में मौजूद server.# पैरामीटर को सही टेक्स्ट से बदलें.
ZooKeeper पोर्ट का इस्तेमाल किया जा रहा है
संक्रमण की जांच
- गड़बड़ियों के लिए, ZooKeeper लॉग
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logदेखें. - अगर आपको पोर्ट #2181 से बाइंड करते समय, नीचे दी गई इमेज में दिखाए गए तरीके से अपवाद
java.net.BindException: Address already in useदिखता है, तो इसका मतलब है कि 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)
- नीचे दिए गए netstat कमांड का इस्तेमाल करके पुष्टि करें कि ZooKeeper पोर्ट 2181 का इस्तेमाल किसी दूसरी प्रोसेस से किया जा रहा है:
netstat -an | grep 2181
रिज़ॉल्यूशन
अगर ZooKeeper पोर्ट 2181 का इस्तेमाल अब भी किया जा रहा है, तो इस समस्या को हल करने के लिए, यह तरीका अपनाएं:
- पोर्ट 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
- अगर pid और लॉक फ़ाइलें मौजूद हैं, तो उन्हें हटाएं:
/opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
- ZooKeeper को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
apigee-zookeeper.pid फ़ाइल में प्रोसेस आईडी गलत है
ZooKeeper को बंद/फिर से चालू करने की कोशिश करने पर, ऐसा हो सकता है कि वह काम न करे. इसकी वजह यह है कि apigee-zookeeper.pid फ़ाइल में पुराना/गलत पीआईडी होता है. इसमें, ZooKeeper की मौजूदा प्रोसेस का पीआईडी नहीं होता. ऐसा तब हो सकता है, जब किसी वजह से ZooKeeper प्रोसेस अचानक बंद हो गई हो और apigee-zookeeper.pid फ़ाइल मिटाई न गई हो.
संक्रमण की जांच
psनिर्देश चलाकर, फ़िलहाल चल रही ZooKeeper प्रोसेस का प्रोसेस आईडी पाएं:ps -ef | grep zookeeper
- देखें कि
/opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pidफ़ाइल मौजूद है या नहीं. अगर यह फ़ाइल मौजूद है, तो इसमें लिखा गया प्रोसेस आईडी नोट कर लें. - पहले और दूसरे चरण में लिए गए प्रोसेस आईडी की तुलना करें. अगर ये दोनों अलग-अलग हैं, तो इस समस्या की वजह यह है कि
apigee-zookeeper.pid file.
रिज़ॉल्यूशन
- apigee-zookeeper.pid फ़ाइल में बदलाव करें और गलत प्रोसेस आईडी की जगह सही प्रोसेस आईडी डालें. यह आईडी, ps कमांड (ऊपर दिया गया चरण #1) से मिला होना चाहिए.
- ZooKeeper को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
ZooKeeper Leader Election Failure
संक्रमण की जांच
गड़बड़ी का पता लगाने के लिए:
- गड़बड़ियों के लिए, ZooKeeper लॉग
/opt/apigee/var/log/apigee-zookeeper/zookeeper.logदेखें. - देखें कि कॉन्फ़िगरेशन में कोई ऐसा बदलाव तो नहीं हुआ जिसकी वजह से, ZooKeeper में लीडर का चुनाव नहीं हो पाया.
/opt/apigee/apigee-zookeeper/conf/zoo.cfgकी जांच करें और पक्का करें कि क्लस्टर में मौजूद सभी ZooKeeper के पास, server.# पैरामीटर के लिए सही संख्या और आईपी पते हों. यह भी ध्यान दें कि लीडर चुनने के लिए, कम से कम तीन वोट देने वाले होने चाहिए. साथ ही, वोट देने वालों की संख्या विषम होनी चाहिए. अगर वोट देने वाले लोगों की संख्या बहुत कम है, जैसे कि सिर्फ़ दो लोग, तो सिर्फ़ दो लोगों में से किसी नेता को चुनने के लिए ज़रूरी संख्या पूरी नहीं हो सकती.
रिज़ॉल्यूशन
आम तौर पर, ZooKeeper के चुनाव में गड़बड़ी, myid के गलत कॉन्फ़िगरेशन की वजह से होती है. चुनाव पूरा न होने की समस्या को ठीक करने के लिए, Misconfigured ZooKeeper myid में दिए गए रिज़ॉल्यूशन का इस्तेमाल करें.
अगर समस्या बनी रहती है और आपको ज़्यादा जानकारी चाहिए, तो Apigee Edge की सहायता टीम से संपर्क करें.