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

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

লক্ষণ

ZooKeeper-এর সংযোগ সমস্যা বিভিন্ন লক্ষণ হিসেবে প্রকাশ পেতে পারে, যেমন:

  1. এপিআই প্রক্সি স্থাপনের ত্রুটি
  2. 5XX ত্রুটির কারণে ম্যানেজমেন্ট এপিআই কলগুলো ব্যর্থ হয়।
  3. রাউটার বা মেসেজ প্রসেসর চালু হতে ব্যর্থ হয়
  4. অ্যানালিটিক্স কম্পোনেন্টগুলো 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. Edge UI-তে নিম্নলিখিত ত্রুটিটি প্রদর্শিত হতে পারে, যা নির্দেশ করে যে এটি API প্রক্সিগুলির ডেপ্লয়মেন্ট স্ট্যাটাস পরীক্ষা করতে পারেনি:
    Error Fetching Deployments
    Error while checking path existence for path: path

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

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

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

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

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

রোগ নির্ণয়

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

  • ডিসি-১ এ চিড়িয়াখানার সার্ভার ১, ২ এবং ৩ ভোটার হিসেবে
  • ডিসি-২-এ চিড়িয়াখানার রক্ষক ৪ ও ৫ ভোটার হিসেবে এবং চিড়িয়াখানার রক্ষক ৬ পর্যবেক্ষক হিসেবে।

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

সমাধান

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

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

সমাধান #১

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

সমাধান #২

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

  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. যে অঞ্চলে আপনি 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

    এই কমান্ডের আউটপুটে একটি লাইন থাকবে যেখানে 'mode' লেখা থাকবে এবং যদি এটি লিডার হয় তবে তার পরে 'leader' লেখা থাকবে, অথবা যদি এটি ফলোয়ার হয় তবে তার পরে 'follower' লেখা থাকবে।

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

সমাধান #৩

  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. বন্ধ হয়ে যাওয়া যেকোনো ZooKeeper নোডের কারণ নির্ণয় ও সমাধানের জন্য 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)

      যদি শেষ তিনটি হেলথ চেক কমান্ডের কোনোটিতে নিম্নলিখিত বার্তাটি দেখা যায়:

      $ 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 Support-এর সাথে যোগাযোগ করুন।