চিড়িয়াখানার সংযোগ হারানোর ত্রুটি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

উপসর্গ

ZooKeeper সংযোগ সমস্যাগুলি বিভিন্ন উপসর্গ হিসাবে প্রকাশ করতে পারে যেমন:

  1. API প্রক্সি স্থাপনার ত্রুটি৷
  2. ব্যবস্থাপনা API কল 5XX ত্রুটির সাথে ব্যর্থ হয়
  3. রাউটার বা বার্তা প্রসেসর শুরু করতে ব্যর্থ
  4. Analytics উপাদানগুলি system.logs-এ ZooKeeper সংযোগ ক্ষতির রিপোর্ট করে৷

ত্রুটি বার্তা

ZooKeeper নোড(গুলি) এর সংযোগ নষ্ট হলে নিম্নলিখিত ত্রুটি বার্তাগুলির উদাহরণ প্রদান করে যা লক্ষ্য করা যেতে পারে।

  1. ZooKeeper সংযোগ ক্ষতির কারণে একটি API প্রক্সি স্থাপনা ব্যর্থ হলে ম্যানেজমেন্ট সার্ভার লগগুলিতে নিম্নলিখিত ত্রুটিটি ফেরত দেওয়া হয়:
    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. স্টার্টআপের সময়, রাউটার এবং মেসেজ প্রসেসর 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]
  3. এজ UI নিম্নলিখিত ত্রুটিটি প্রদর্শন করতে পারে যা নির্দেশ করে যে এটি API প্রক্সিগুলির স্থাপনার স্থিতি পরীক্ষা করতে অক্ষম ছিল:
    Error Fetching Deployments
    Error while checking path existence for path: path

সম্ভাব্য কারণ

নিম্নলিখিত সারণী এই সমস্যার সম্ভাব্য কারণগুলি তালিকাভুক্ত করে:

কারণ জন্য
বিভিন্ন ডেটা সেন্টার জুড়ে নেটওয়ার্ক সংযোগ সমস্যা এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
ZooKeeper নোড অনুরোধ পরিবেশন না এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা

সেই কারণের সম্ভাব্য রেজোলিউশন দেখতে টেবিলের একটি লিঙ্কে ক্লিক করুন।

বিভিন্ন ডেটা সেন্টার জুড়ে নেটওয়ার্ক সংযোগ সমস্যা

রোগ নির্ণয়

একটি ZooKeeper ক্লাস্টারে নোড থাকতে পারে যা একাধিক অঞ্চল/ডেটা সেন্টার জুড়ে বিস্তৃত, যেমন DC-1 এবং DC-2। সাধারণ Apigee Edge 2 DC টপোলজিতে থাকবে:

  • ZooKeeper সার্ভার 1, 2, এবং 3 DC-1 এ ভোটার হিসাবে
  • চিড়িয়াখানা 4 ও 5 জন ভোটার এবং চিড়িয়াখানা 6 জন পর্যবেক্ষক হিসাবে ডিসি-2।

যদি DC-1 অঞ্চল নিচে চলে যায় বা DC-1 এবং DC-2-এর মধ্যে নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলে ZooKeeper নোডগুলি DC-2-এ একজন নতুন নেতা নির্বাচন করতে পারে না এবং তারা লিডার নোডের সাথে যোগাযোগ করতে ব্যর্থ হয়। ZooKeeper পর্যবেক্ষকরা একটি নতুন নেতা নির্বাচন করতে পারে না এবং DC-2-এ অবশিষ্ট দুই ভোটারের একটি নতুন নেতা নির্বাচন করার জন্য কমপক্ষে 3টি ভোটার নোডের কোরাম নেই। এইভাবে, DC-2-এর চিড়িয়াখানারা কোনো অনুরোধ প্রক্রিয়া করতে পারবে না। DC-2-এ অবশিষ্ট ZooKeeper নোডগুলি নেতা খুঁজে পেতে ZooKeeper ভোটারদের সাথে আবার সংযোগ করার জন্য পুনরায় চেষ্টা চালিয়ে যাবে।

রেজোলিউশন

নির্দিষ্ট ক্রমে এই সমস্যাটি সমাধান করতে নিম্নলিখিত সমাধানগুলি প্রয়োগ করুন৷

আপনি যদি এই সমাধানগুলি চেষ্টা করার পরে সমস্যাটি সমাধান করতে অক্ষম হন, অনুগ্রহ করে Apigee সহায়তার সাথে যোগাযোগ করুন৷

সমাধান #1

  1. ডেটা সেন্টারগুলির মধ্যে নেটওয়ার্ক সংযোগ সমস্যা মেরামত করতে আপনার নেটওয়ার্ক প্রশাসকদের সাথে কাজ করুন৷
  2. যখন ZooKeeper ensemble ডাটা সেন্টার জুড়ে যোগাযোগ করতে এবং একটি ZooKeeper নেতা নির্বাচন করতে সক্ষম হয়, তখন নোডগুলি সুস্থ হয়ে ওঠে এবং অনুরোধগুলি প্রক্রিয়া করতে সক্ষম হয়।

সমাধান #2

  1. যদি নেটওয়ার্ক কানেক্টিভিটি মেরামত করতে সময় নেয়, একটি সমাধান হল ZooKeeper নোডগুলি যে অঞ্চলে নিচে আছে সেখানে পুনরায় কনফিগার করা। উদাহরণস্বরূপ, DC-2-এ ZooKeeper ক্লাস্টারটি পুনরায় কনফিগার করুন যাতে এই অঞ্চলের 3টি ZooKeeper নোড সব ভোটার হয় এবং server.# DC-1 অঞ্চলের ZooKeepers-এর zoo.cfg এ।
    1. নিম্নলিখিত উদাহরণে, zoo.cfg 2টি অঞ্চলের জন্য নোড কনফিগার করে যেখানে DC-1 US-East অঞ্চলকে নির্দেশ করে us-ea হোস্টনাম ব্যবহার করে এবং DC-2 US-পশ্চিম অঞ্চল নির্দেশ করে 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\

    উপরোক্ত ক্ষেত্রে, US-East থেকে নোডগুলি সরানো হয়, এবং US-ওয়েস্ট নোডগুলি ভোটারদের কাছে প্রচারিত হয় যখন :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 জন্য । 3 থেকে myid পরিবর্তন করুন।
  5. যে অঞ্চলে আপনি ZooKeeper ক্লাস্টার পুনরায় কনফিগার করেছেন সেখানে ZooKeeper নোডগুলি পুনরায় চালু করুন।
  6. DC-2-এর সমস্ত ZooKeeper নোডে ধাপ #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

    এই কমান্ডের আউটপুটে একটি লাইন থাকবে যা বলে "মোড" এর পরে "লিডার" যদি এটি লিডার হয়, অথবা "অনুসরণকারী" যদি এটি অনুগামী হয়।

    যখন ডেটা সেন্টারের মধ্যে নেটওয়ার্ক পুনঃস্থাপিত হয়, তখন ZooKeeper কনফিগারেশন পরিবর্তনগুলি DC-2-এ ZooKeeper নোডগুলিতে ফিরিয়ে আনা যেতে পারে।

সমাধান #3

  1. যদি ক্লাস্টারে ZooKeeper নোড (গুলি) শুরু না হয়, তাহলে এটি পুনরায় চালু করুন।
  2. 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
  3. Apigee সাপোর্টের সাথে যোগাযোগ করুন এবং যে কোন ZooKeeper নোড বন্ধ হয়ে থাকতে পারে তার সমস্যা সমাধানের জন্য ZooKeeper লগ প্রদান করুন।

ZooKeeper নোড অনুরোধ পরিবেশন না

একটি চিড়িয়াখানার নোড অস্বাস্থ্যকর হয়ে উঠতে পারে এবং ক্লায়েন্টের অনুরোধে সাড়া দিতে অক্ষম হতে পারে। এটি হতে পারে কারণ:

  1. নোডটি পুনরায় চালু না করে বন্ধ করা হয়েছিল।
  2. নোডটি অটো-স্টার্ট সক্ষম না করেই রিবুট করা হয়েছে।
  3. নোডের উপর সিস্টেম লোডের কারণে এটি নিচে চলে যায় বা অস্বাস্থ্যকর হয়ে পড়ে।

রোগ নির্ণয়

  1. ZooKeeper নোডগুলির প্রতিটিতে নিম্নলিখিত ZooKeeper হেলথ চেক কমান্ডগুলি চালান এবং আউটপুট পরীক্ষা করুন:
    1. $ echo "ruok" | nc localhost 2181

      উদাহরণ আউটপুট:

      $ echo "ruok" | nc localhost 2181
      imok
    2. 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
    3. $ 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
    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

      এই কমান্ড 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)

      যদি শেষ 3টি স্বাস্থ্য পরীক্ষা কমান্ডের মধ্যে যেকোনও নিম্নলিখিত বার্তাটি দেখায়:

      $ echo stat | nc localhost 2181
          This ZooKeeper instance is not currently serving requests

      তারপর এটি নির্দেশ করে যে নির্দিষ্ট ZooKeeper নোড(গুলি) অনুরোধগুলি পরিবেশন করছে না।

  2. নির্দিষ্ট নোডে 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

রেজোলিউশন

  1. এক এক করে ক্লাস্টারে অন্যান্য সমস্ত ZooKeeper নোড পুনরায় চালু করুন।
  2. প্রতিটি নোডে ZooKeeper হেলথ চেক কমান্ড পুনরায় চালান এবং দেখুন আপনি প্রত্যাশিত আউটপুট পান কিনা।

সিস্টেম লোডের কারণ সমস্যা সমাধানের জন্য Apigee সাপোর্টের সাথে যোগাযোগ করুন যদি এটি অব্যাহত থাকে বা পুনরায় চালু হলে সমস্যা সমাধান না হয়।