यह Apigee Edge के दस्तावेज़ हैं.
पर जाएं
Apigee X के दस्तावेज़ों. info
समस्या का ब्यौरा
ZooKeeper कनेक्टिविटी की समस्याएं, अलग-अलग तरह से दिख सकती हैं. जैसे:
- एपीआई प्रॉक्सी को डिप्लॉय करने में गड़बड़ियां
- मैनेजमेंट एपीआई कॉल, 5XX गड़बड़ियों के साथ काम नहीं करते
- राउटर या मैसेज प्रोसेसर शुरू नहीं हो पाते
- Analytics कॉम्पोनेंट, system.logs में ZooKeeper कनेक्शन के बंद होने की जानकारी देते हैं
गड़बड़ी के मैसेज
यहां गड़बड़ी के मैसेज के उदाहरण दिए गए हैं. ये मैसेज, ZooKeeper नोड(नोड) से कनेक्शन बंद होने पर दिख सकते हैं.
- ZooKeeper कनेक्शन बंद होने की वजह से, एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सका. इस वजह से, मैनेजमेंट सर्वर के लॉग में यह गड़बड़ी दिखती है:
org: env: main INFO ZOOKEEPER - ZooKeeperServiceImpl.exists() : Retry path existence path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR ZOOKEEPER - ZooKeeperServiceImpl.exists() : Could not detect existence of path: /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable , reason: KeeperErrorCode = ConnectionLoss org: env: main ERROR KERNEL.DEPLOYMENT - ServiceDeployer.startService() : ServiceDeployer.deploy() : Got a life cycle exception while starting service [ServerRegistrationService, Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable] : com.apigee.zookeeper.ZooKeeperException{ code = zookeeper.ErrorCheckingPathExis tence, message = Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable, associated contexts = []} 2015-03-25 10:22:39,811 org: env: main ERROR KERNEL - MicroKernel.deployAll() : MicroKernel.deployAll() : Error in deploying the deployment : EventService com.apigee.zookeeper.ZooKeeperException: Error while checking path existence for path : /regions/dc-1/pods/analytics/servers/692afe93-8010-45c6-b37d-e4e05b6b2eb5/reachable at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists(ZooKeeperServiceImpl.java:339) ~[zookeeper-1.0.0.jar:na] at com.apigee.zookeeper.impl.ZooKeeperServiceImpl.exists( ZooKeeperServiceImpl.java:323) ~[zookeeper-1.0.0.jar:na] at ... snipped
- शुरू होने के दौरान, राउटर और मैसेज प्रोसेसर, ZooKeeper से कनेक्ट होते हैं. अगर ZooKeeper से
कनेक्टिविटी में समस्याएं आती हैं, तो ये कॉम्पोनेंट इस गड़बड़ी के साथ शुरू नहीं हो पाएंगे:
2017-08-01 23:20:00,404 CuratorFramework-0 ERROR o.a.c.f.i.CuratorFrameworkImpl - CuratorFrameworkImpl.logError() : Background operation retry gave up org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss at org.apache.zookeeper.KeeperException.create(KeeperException.java:99) ~[zookeeper-3.4.6.jar:3.4.6-1569965] at org.apache.curator.framework.imps.CuratorFrameworkImpl.checkBackgroundRetry(CuratorFrameworkImpl.java:710) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.performBackgroundOperation(CuratorFrameworkImpl.java:827) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.backgroundOperationsLoop(CuratorFrameworkImpl.java:793) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl.access$400(CuratorFrameworkImpl.java:57) [curator-framework-2.5.0.jar:na] at org.apache.curator.framework.imps.CuratorFrameworkImpl$4.call(CuratorFrameworkImpl.java:275) [curator-framework-2.5.0.jar:na] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131] at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
- New Edge यूज़र इंटरफ़ेस (यूआई) में यह गड़बड़ी दिख सकती है. इससे पता चलता है कि यह एपीआई प्रॉक्सी के डिप्लॉयमेंट स्टेटस की जांच नहीं कर पाया:
Error Fetching Deployments Error while checking path existence for path: path
संभावित कारण
इस समस्या की संभावित वजहें, यहां दी गई टेबल में बताई गई हैं:
| वजह | इसके लिए: |
|---|---|
| अलग-अलग डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी की समस्या | Edge Private Cloud के उपयोगकर्ता |
| ZooKeeper नोड, अनुरोधों को प्रोसेस नहीं कर रहा है | Edge Private Cloud के उपयोगकर्ता |
टेबल में मौजूद किसी लिंक पर क्लिक करके, उस वजह को ठीक करने के संभावित तरीके देखें.
अलग-अलग डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी की समस्या
संक्रमण की जांच
ZooKeeper क्लस्टर में ऐसे नोड हो सकते हैं जो एक से ज़्यादा क्षेत्रों/डेटा सेंटर में फैले हों. जैसे, DC-1 और DC-2. Apigee Edge 2 DC टोपोलॉजी में आम तौर पर ये कॉम्पोनेंट होते हैं:
- DC-1 में, ZooKeeper सर्वर 1, 2, और 3 वोटिंग के लिए इस्तेमाल किए जाते हैं
- DC-2 में, ZooKeeper 4 और 5 वोटिंग के लिए इस्तेमाल किए जाते हैं. वहीं, ZooKeeper 6 को ऑब्ज़र्वर के तौर पर इस्तेमाल किया जाता है.
अगर DC-1 क्षेत्र में कोई समस्या आती है या DC-1 और DC-2 के बीच नेटवर्क कनेक्टिविटी टूट जाती है, तो ZooKeeper नोड, DC-2 में नया लीडर नहीं चुन सकते. साथ ही, वे लीडर नोड के साथ कम्यूनिकेट नहीं कर पाते. ZooKeeper ऑब्ज़र्वर, नया लीडर नहीं चुन सकते. साथ ही, DC-2 में बचे हुए दो वोटर नोड के पास, नया लीडर चुनने के लिए कम से कम तीन वोटर नोड का कोरम नहीं होता. इसलिए, DC-2 में मौजूद ZooKeeper, किसी भी अनुरोध को प्रोसेस नहीं कर पाएंगे. DC-2 में बचे हुए ZooKeeper नोड, लीडर को ढूंढने के लिए, ZooKeeper वोटर से फिर से कनेक्ट होने की कोशिश करते रहेंगे.
रिज़ॉल्यूशन
इस समस्या को हल करने के लिए, यहां दिए गए समाधानों को बताए गए क्रम में लागू करें.
अगर इन समाधानों को आज़माने के बाद भी समस्या हल नहीं होती है, तो Apigee की सहायता टीम से संपर्क करें.
समाधान #1
- डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी की समस्या को ठीक करने के लिए, अपने नेटवर्क एडमिन के साथ मिलकर काम करें.
- जब ZooKeeper ensemble, डेटा सेंटर के बीच कम्यूनिकेट कर पाएंगे और एक ZooKeeper लीडर चुन पाएंगे, तब नोड ठीक हो जाएंगे और अनुरोधों को प्रोसेस कर पाएंगे.
समाधान #2
- अगर नेटवर्क कनेक्टिविटी को ठीक होने में समय लगेगा, तो समस्या को हल करने के लिए, उस क्षेत्र में ZooKeeper नोड को फिर से कॉन्फ़िगर करें जहां वे काम नहीं कर रहे हैं. उदाहरण के लिए, DC-2 में ZooKeeper
क्लस्टर को फिर से कॉन्फ़िगर करें, ताकि इस क्षेत्र में मौजूद तीनों ZooKeeper नोड, वोटर नोड के तौर पर काम करें. साथ ही, DC-1 क्षेत्र के ZooKeeper के
zoo.cfgमें मौजूदserver.#को हटाएं.- यहां दिए गए उदाहरण में,
zoo.cfgदो क्षेत्रों के लिए नोड कॉन्फ़िगर करता है. इसमें DC-1,us-eaहोस्टनेम का इस्तेमाल करता है. इससे अमेरिका के पूर्वी क्षेत्र का पता चलता है. वहीं, DC-2,us-woहोस्टनेम का इस्तेमाल करता है. इससे अमेरिका के पश्चिमी क्षेत्र का पता चलता है. (ध्यान दें: यहां सिर्फ़ काम के कॉन्फ़िगरेशन दिखाए गए हैं):server.1=zk01ea.us-ea.4.apigee.com:2888:3888 server.2=zk02ea.us-ea.4.apigee.com:2888:3888 server.3=zk03ea.us-ea.4.apigee.com:2888:3888 server.4=zk04wo.us-wo.4.apigee.com:2888:3888 server.5=zk05wo.us-wo.4.apigee.com:2888:3888 server.6=zk06wo.us-wo.4.apigee.com:2888:3888:observer
ऊपर दिए गए उदाहरण में,
zoo.cfgको इस तरह से फिर से कॉन्फ़िगर करें:server.1=zk04wo.us-wo.4.apigee.com:2888:3888 server.2=zk05wo.us-wo.4.apigee.com:2888:3888 server.3=zk06wo.us-wo.4.apigee.com:2888:3888
- कॉन्फ़िगरेशन वाले कोड का इस्तेमाल करके,
/opt/apigee/customer/application/zookeeper.propertiesफ़ाइल बनाएं. इसमें यह कॉन्फ़िगरेशन शामिल करें:conf_zoo_quorum=server.1=zk04wo.us-wo.4.apigee.com:2888:3888\ \nserver.2=zk05wo.us-wo.4.apigee.com:2888:3888\ \nserver.3=zk06wo.us-wo.4.apigee.com:2888:3888\
ऊपर दिए गए उदाहरण में, अमेरिका के पूर्वी क्षेत्र के नोड हटा दिए गए हैं. साथ ही, अमेरिका के पश्चिमी क्षेत्र के नोड, वोटर नोड के तौर पर काम करने लगते हैं. ऐसा तब होता है, जब
:observerएनोटेशन हटा दिया जाता है. - यहां दिए गए उदाहरण में,
/opt/apigee/apigee-zookeeper/conf/zoo.cfgऔर पुराने/opt/apigee/customer/application/zookeeper.propertiesका बैकअप लें.डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी ठीक होने पर, डिफ़ॉल्ट सेटिंग को वापस लाने के लिए इन फ़ाइलों का इस्तेमाल किया जाएगा
ऑब्ज़र्वर नोड के लिए, ऑब्ज़र्वर नोटेशन बंद करें. इसके लिए,
/opt/apigee/customer/application/zookeeper.propertiesमें सबसे ऊपर यह कॉन्फ़िगरेशन जोड़ें:conf_zoo_peertype=
-
/opt/apigee/data/apigee-zookeeper/data/myidफ़ाइल में इस तरह बदलाव करें:server.1के लिए,myidमें मौजूद एंट्री को 4 से बदलकर 1 करें.server.2के लिए,myidको 5 से बदलकर 2 करें.server.3के लिए,myidको 6 से बदलकर 3 करें.
- उस क्षेत्र में ZooKeeper नोड को रीस्टार्ट करें जहां आपने ZooKeeper क्लस्टर को फिर से कॉन्फ़िगर किया है.
- DC-2 में मौजूद सभी ZooKeeper नोड पर, ऊपर दिए गए कॉन्फ़िगरेशन को चरण #1b से चरण# 5 तक दोहराएं.
- पुष्टि करें कि नोड, लीडर के साथ काम कर रहे हैं या नहीं:
$ echo srvr | nc zk04wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk05wo.us-wo.4.apigee.com 2181 > echo srvr | nc zk06wo.us-wo.4.apigee.com 2181
इस निर्देश के आउटपुट में एक लाइन होगी. इसमें "mode" के बाद "leader" लिखा होगा. इसका मतलब है कि यह नोड, लीडर के तौर पर काम कर रहा है . वहीं, अगर "mode" के बाद "follower" लिखा होगा, तो इसका मतलब है कि यह नोड, फ़ॉलोअर के तौर पर काम कर रहा है.
डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी ठीक होने पर, DC-2 में मौजूद ZooKeeper नोड पर, ZooKeeper के कॉन्फ़िगरेशन में किए गए बदलावों को वापस लाया जा सकता है.
समाधान #3
- अगर क्लस्टर में मौजूद ZooKeeper नोड शुरू नहीं हुआ है, तो उसे रीस्टार्ट करें.
- ZooKeeper लॉग देखकर पता करें कि ZooKeeper नोड क्यों बंद हुआ.
ZooKeeper लॉग, इस डायरेक्ट्री में मौजूद होते हैं:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
- Apigee की सहायता टीम से संपर्क करें और उन्हें ZooKeeper लॉग उपलब्ध कराएं. इससे, ZooKeeper के किसी नोड के बंद होने की वजह का पता लगाया जा सकेगा.
ZooKeeper नोड, अनुरोधों को प्रोसेस नहीं कर रहा है
ensemble में मौजूद कोई ZooKeeper नोड, काम करना बंद कर सकता है. इस वजह से, वह क्लाइंट के अनुरोधों का जवाब नहीं दे पाएगा. इसकी ये वजहें हो सकती हैं:
- नोड को रीस्टार्ट किए बिना बंद कर दिया गया हो.
- ऑटो-स्टार्ट की सुविधा चालू किए बिना, नोड को रीबूट कर दिया गया हो.
- नोड पर सिस्टम लोड की वजह से, वह बंद हो गया हो या काम करना बंद कर दिया हो.
संक्रमण की जांच
- ZooKeeper के हर नोड पर, ZooKeeper की हेल्थ की जांच करने वाले ये निर्देश चलाएं और
आउटपुट देखें:
-
$ echo "ruok" | nc localhost 2181
आउटपुट का उदाहरण:
$ echo "ruok" | nc localhost 2181 imok
-
echo srvr | nc localhost 2181
यह देखने के लिए कि ZooKeeper नोड, लीडर के तौर पर काम कर रहा है या फ़ॉलोअर के तौर पर, मोड की जांच करें.
एक ही ZooKeeper नोड के लिए आउटपुट का उदाहरण:
$ echo srvr | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Latency min/avg/max: 0/0/88 Received: 4206601 Sent: 4206624 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo mntr | nc localhost 2181
इस निर्देश से, ZooKeeper के वैरिएबल की सूची मिलती है. इनका इस्तेमाल, ZooKeeper क्लस्टर की हेल्थ की जांच करने के लिए किया जा सकता है.
आउटपुट का उदाहरण:
$ echo mntr | nc localhost 2181 zk_version 3.4.5-1392090, built on 09/30/2012 17:52 GMT zk_avg_latency 0 zk_max_latency 88 zk_min_latency 0 zk_packets_received 4206750 zk_packets_sent 4206773 zk_num_alive_connections 8 zk_outstanding_requests 0 zk_server_state standalone zk_znode_count 282 zk_watch_count 194 zk_ephemerals_count 1 zk_approximate_data_size 22960 zk_open_file_descriptor_count 34 zk_max_file_descriptor_count 4096
-
$ echo stat | nc localhost 2181
इस निर्देश से, परफ़ॉर्मेंस और कनेक्टेड क्लाइंट के आंकड़ों की सूची मिलती है.
आउटपुट का उदाहरण:
$ echo stat | nc localhost 2181 ZooKeeper version: 3.4.5-1392090, built on 09/30/2012 17:52 GMT Clients: /10.128.0.8:54152[1](queued=0,recved=753379,sent=753385) /10.128.0.8:53944[1](queued=0,recved=980269,sent=980278) /10.128.0.8:54388[1](queued=0,recved=457094,sent=457094) /10.128.0.8:54622[1](queued=0,recved=972938,sent=972938) /10.128.0.8:54192[1](queued=0,recved=150843,sent=150843) /10.128.0.8:44564[1](queued=0,recved=267332,sent=267333) /127.0.0.1:40820[0](queued=0,recved=1,sent=0) /10.128.0.8:53960[1](queued=0,recved=150844,sent=150844) Latency min/avg/max: 0/0/88 Received: 4206995 Sent: 4207018 Connections: 8 Outstanding: 0 Zxid: 0x745 Mode: standalone Node count: 282
-
$ echo cons | nc localhost 2181
इस निर्देश से, ZooKeeper कनेक्शन के बारे में ज़्यादा जानकारी मिलती है.
आउटपुट का उदाहरण:
$ echo cons | nc localhost 2181 /127.0.0.1:40864[0](queued=0,recved=1,sent=0) /10.128.0.8:54152[1](queued=0,recved=753400,sent=753406,sid=0x15d521a96d40007, lop=PING,est=1500321588647,to=40000,lcxid=0x972e9,lzxid=0x745,lresp=1502334173174, llat=0,minlat=0,avglat=0,maxlat=26) /10.128.0.8:53944[1](queued=0,recved=980297,sent=980306,sid=0x15d521a96d40005, lop=PING,est=1500321544896,to=40000,lcxid=0xce92a,lzxid=0x745,lresp=1502334176055, llat=0,minlat=0,avglat=0,maxlat=23) /10.128.0.8:54388[1](queued=0,recved=457110,sent=457110,sid=0x15d521a96d4000a, lop=PING,est=1500321673852,to=40000,lcxid=0x4dbe3,lzxid=0x745,lresp=1502334174245, llat=0,minlat=0,avglat=0,maxlat=22) /10.128.0.8:54622[1](queued=0,recved=972967,sent=972967,sid=0x15d521a96d4000b, lop=PING,est=1500321890175,to=40000,lcxid=0xccc9d,lzxid=0x745,lresp=1502334182417, llat=0,minlat=0,avglat=0,maxlat=88) /10.128.0.8:54192[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40008, lop=PING,est=1500321591985,to=40000,lcxid=0x8,lzxid=0x745,lresp=1502334184475, llat=3,minlat=0,avglat=0,maxlat=19) /10.128.0.8:44564[1](queued=0,recved=267354,sent=267355,sid=0x15d521a96d4000d, lop=PING,est=1501606633426,to=40000,lcxid=0x356e2,lzxid=0x745,lresp=1502334182315, llat=0,minlat=0,avglat=0,maxlat=35) /10.128.0.8:53960[1](queued=0,recved=150848,sent=150848,sid=0x15d521a96d40006, lop=PING,est=1500321547138,to=40000,lcxid=0x5,lzxid=0x745,lresp=1502334177036, llat=1,minlat=0,avglat=0,maxlat=20)
अगर हेल्थ की जांच करने वाले आखिरी तीन निर्देशों में से किसी में भी यह मैसेज दिखता है:
$ echo stat | nc localhost 2181 This ZooKeeper instance is not currently serving requests
तो इसका मतलब है कि ZooKeeper के कुछ नोड, अनुरोधों को प्रोसेस नहीं कर रहे हैं.
-
- उस नोड पर ZooKeeper लॉग देखें और ऐसी गड़बड़ियों का पता लगाने की कोशिश करें जिनकी वजह से
ZooKeeper बंद हुआ. ZooKeeper लॉग, इस डायरेक्ट्री में मौजूद होते हैं:
$ cd /opt/apigee/var/log/apigee-zookeeper $ ls -l total 188 -rw-r--r--. 1 apigee apigee 2715 Jul 22 19:51 apigee-zookeeper.log -rw-r--r--. 1 apigee apigee 10434 Jul 17 19:51 config.log -rw-r--r--. 1 apigee apigee 169640 Aug 1 19:51 zookeeper.log
रिज़ॉल्यूशन
- क्लस्टर में मौजूद बाकी सभी ZooKeeper नोड को एक-एक करके रीस्टार्ट करें.
- हर नोड पर, ZooKeeper की हेल्थ की जांच करने वाले निर्देश फिर से चलाएं और देखें कि आपको उम्मीद के मुताबिक आउटपुट मिलता है या नहीं.
अगर सिस्टम लोड की वजह से समस्या बनी रहती है या रीस्टार्ट करने से समस्या हल नहीं होती है, तो Apigee सहायता टीम से संपर्क करें ताकि समस्या का हल किया जा सके.