ज़ूकीपर कनेक्शन लॉस एरर

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

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

चिड़ियाघर की कनेक्टिविटी से जुड़ी समस्याओं के अलग-अलग लक्षण हो सकते हैं, जैसे कि:

  1. एपीआई प्रॉक्सी डिप्लॉयमेंट से जुड़ी गड़बड़ियां
  2. मैनेजमेंट एपीआई कॉल नहीं हो सकी, क्योंकि 5XX गड़बड़ियां हैं
  3. राऊटर या मैसेज प्रोसेसर का चालू न होना
  4. Analytics कॉम्पोनेंट से पता चलता है कि System.logs में जाकर, ZoomKeeper कनेक्शन के खोने का खतरा है या नहीं

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

नीचे गड़बड़ी के मैसेज के उदाहरण दिए गए हैं.

  1. जब ZoomKeeper का कनेक्शन टूट जाता है, तब मैनेजमेंट सर्वर लॉग में यह गड़बड़ी दिखती है: एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता:
    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
    
  2. स्टार्टअप के दौरान, राऊटर और मैसेज प्रोसेसर, ज़ूकेपर से कनेक्ट होते हैं. अगर ZoomKeeper में कनेक्टिविटी से जुड़ी समस्याएं हैं, तो ये कॉम्पोनेंट इस गड़बड़ी के साथ शुरू नहीं हो पाएंगे:
    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]
    
  3. Edge यूज़र इंटरफ़ेस (यूआई) में नीचे दी गई गड़बड़ी दिख सकती है, जिससे पता चलता है कि यह एपीआई प्रॉक्सी के डिप्लॉयमेंट स्टेटस की जांच नहीं कर सका:
    Error Fetching Deployments
    Error while checking path existence for path: path
    

संभावित कारण

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

वजह इसके लिए:
अलग-अलग डेटा सेंटर में नेटवर्क कनेक्टिविटी की समस्या Edge Private Cloud के उपयोगकर्ता
ZooKeeper नोड अनुरोधों को पूरा नहीं कर रहा है Edge Private Cloud के उपयोगकर्ता

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

अलग-अलग डेटा सेंटर में नेटवर्क कनेक्टिविटी की समस्या

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

ज़ूकीपर क्लस्टर में ऐसे नोड हो सकते हैं जो कई क्षेत्रों/डेटा सेंटर में फैले होते हैं, जैसे कि DC-1 और DC-2. सामान्य Apigee Edge 2 DC टोपोलॉजी में ये चीज़ें होंगी:

  • DC-1 में सर्वर 1, 2, और 3 को वोटर के तौर पर सेव करके रखा गया है
  • ज़ूकीपर 4 और 5, वोटर के तौर पर और ज़ूकीपर 6 को DC-2 में ऑब्ज़र्वर के तौर पर शामिल किया गया है.

अगर DC-1 का इलाका बंद हो जाता है या DC-1 और DC-2 के बीच नेटवर्क कनेक्टिविटी टूट जाती है, तो DueKeeper नोड, DC-2 में कोई नया लीडर नहीं चुन सकते और लीडर नोड से कम्यूनिकेट कर पाते हैं. ज़ूकीपर के नज़र रखने वाले लोग कोई नया नेता नहीं चुन सकते. साथ ही, DC-2 में बचे दो मतदाताओं के पास नया नेता चुनने के लिए कम से कम तीन वोटर नोड नहीं हैं. इसलिए, DC-2 के ज़ूकीपर किसी भी अनुरोध को प्रोसेस नहीं कर पाएंगे. DC-2 में बचे हुए ZoomKeeper नोड लूप में रहेंगे. ज़ूकीपर वोटर से वापस कनेक्ट करने की कोशिश की जा रही है, ताकि लीडर ढूंढने की कोशिश की जा सके.

रिज़ॉल्यूशन

इस समस्या को हल करने के लिए, बताए गए क्रम में ये समाधान लागू करें.

अगर इन तरीकों को आज़माने के बाद भी समस्या हल नहीं होती है, तो कृपया Apigee की सहायता टीम से संपर्क करें.

समाधान #1

  1. डेटा सेंटर के बीच नेटवर्क कनेक्टिविटी से जुड़ी समस्या को ठीक करने के लिए, अपने नेटवर्क एडमिन के साथ काम करें.
  2. जब ज़ूकेपर ग्रुप, अलग-अलग डेटा सेंटर के बीच संपर्क कर पाता है और ज़ूकीपर का लीडर चुन पाता है, तो नोड अच्छे होने चाहिए और उनके अनुरोधों को प्रोसेस करने लायक हो जाना चाहिए.

समाधान #2

  1. अगर नेटवर्क कनेक्टिविटी को ठीक होने में समय लग रहा है, तो ज़ूकीपर नोड को उस इलाके में फिर से कॉन्फ़िगर किया जा सकता है जहां वह काम नहीं कर रहे हैं. उदाहरण के लिए, DC-2 में चिड़ियाघर के क्लस्टर को फिर से कॉन्फ़िगर करें, ताकि इस इलाके के तीन ज़ूKeeper नोड वोटर हों. साथ ही, DC-1 क्षेत्र से, ज़ूकेपर के zoo.cfg में मौजूद server.# को हटा दें.
    1. यहां दिए गए उदाहरण में, 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
      
    2. config के साथ कोड का इस्तेमाल करके, इसकी मदद से एक फ़ाइल /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 एनोटेशन हटाने पर, अमेरिका-पश्चिमी नोड वोटर में शामिल हो जाते हैं.

  2. /opt/apigee/apigee-zookeeper/conf/zoo.cfg और पुराने /opt/apigee/customer/application/zookeeper.properties का बैक अप लें.

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

  3. ऑब्ज़र्वर नोड के लिए ऑब्ज़र्वर नोटेशन को बंद करें. ऐसा करने के लिए, /opt/apigee/customer/application/zookeeper.properties के ऊपर यह कॉन्फ़िगरेशन जोड़ें:

    conf_zoo_peertype=
  4. /opt/apigee/data/apigee-zookeeper/data/myid फ़ाइल में इस तरह से बदलाव करें:

    • server.1 के लिए, myid में मौजूद एंट्री को 4 से बदलकर 1 करें.
    • server.2 के लिए, myid को 5 से बदलकर 2 करें.
    • server.3 के लिए, myid को 6 से 3 में बदलें.
  5. उस इलाके के ZKeeper नोड को रीस्टार्ट करें जहां आपने ZooKeeper क्लस्टर को फिर से कॉन्फ़िगर किया है.
  6. ऊपर दिए गए कॉन्फ़िगरेशन को DC-2 में, सभी चिड़ियाघर के नोड में चरण #1b से चरण# 5 तक दोहराएं.
  7. पुष्टि करें कि नोड किसी लीडर के साथ जुड़े हैं:
    $ 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" लिखा होगा. अगर यह लीडर है, तो "फ़ॉलोर" होगा. अगर यह फ़ॉलोअर है, तो "फ़ॉलोर".

    डेटा सेंटर के बीच नेटवर्क को फिर से चालू करने के बाद, छोटा सा चिड़ियाघर के कॉन्फ़िगरेशन में किए गए बदलावों को DC-2 में, ज़ूकेपर नोड में पहले जैसा किया जा सकता है.

समाधान #3

  1. अगर क्लस्टर में ZoomKeeper नोड शुरू नहीं हुआ है, तो उसे रीस्टार्ट करें.
  2. ZooKeeper नोड कम होने की वजह जानने के लिए, ZoomKeeper के लॉग देखें.

    ज़ूकेपर के लॉग इस डायरेक्ट्री में उपलब्ध हैं:

    $ 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
    
  3. Apigee की सहायता टीम से संपर्क करें और DueKeeper के लॉग उपलब्ध कराएं, ताकि ऐसे किसी भी ZoomKeeper नोड की वजह से जुड़ी समस्या को हल किया जा सके जो शायद बंद हो गई हो.

ZoomKeeper नोड अनुरोधों को पूरा नहीं कर रहा है

ग्रुप में मौजूद ZoomKeeper नोड खराब हो सकता है और वह क्लाइंट के अनुरोधों का जवाब नहीं दे पाएगा. ऐसा इन वजहों से हो सकता है:

  1. नोड को रीस्टार्ट किए बिना ही रोका गया.
  2. अपने-आप शुरू होने की सुविधा चालू किए बिना नोड को फिर से चालू किया गया.
  3. नोड पर सिस्टम लोड होने की वजह से, यह खराब हो गया था या खराब हो गया था.

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

  1. हर ज़ूकेपर नोड के लिए, ज़ूकेपर हेल्थ चेक के लिए दिए गए इन कमांड का इस्तेमाल करें और आउटपुट की जांच करें:
    1. $ echo "ruok" | nc localhost 2181
      

      आउटपुट का उदाहरण:

      $ echo "ruok" | nc localhost 2181
      imok
      
    2. echo srvr | nc localhost 2181
      

      यह पता लगाने के लिए मोड की जांच करें कि ZoomKeeper नोड लीडर है या फ़ॉलोअर है.

      एक ही जगह में पूरी जानकारी देने वाले, DueKeeper नोड में दिए गए आउटपुट का उदाहरण:

      $ 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
      
    3. $ echo mntr | nc localhost 2181
      

      इस निर्देश में 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
      
    4. $ 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
      
    5. $ echo cons | nc localhost 2181
      

      इस निर्देश से, चिड़ियाघर के कनेक्शन के बारे में ज़्यादा जानकारी मिलती है.

      आउटपुट का उदाहरण:

      $ 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
      

      इसके बाद, इससे पता चलता है कि कोई छोटा सा ज़ूकिपर नोड अनुरोध पूरा नहीं कर रहा है.

  2. किसी खास नोड के ZoomKeeper के लॉग की जांच करें और ऐसी गड़बड़ी का पता लगाने की कोशिश करें जिसकी वजह से, ZKeeper के बंद होने की समस्या हो रही है. चिड़ियाघर के लॉग इस डायरेक्ट्री में उपलब्ध हैं:
    $ 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
    

रिज़ॉल्यूशन

  1. क्लस्टर में मौजूद अन्य सभी चिड़ियाघर को एक-एक करके रीस्टार्ट करें.
  2. हर नोड पर ज़ूकीपर हेल्थ चेक कमांड फिर से चलाकर देखें और देखें कि आपको उम्मीद के मुताबिक आउटपुट मिल रहा है या नहीं.

अगर सिस्टम लोड होने की वजह बनी रहती है या रीस्टार्ट करने से समस्या ठीक नहीं होती, तो उसे हल करने के लिए, Apigee की सहायता टीम से संपर्क करें.