Zookeeper শুরু করতে অক্ষম

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

লক্ষণ

ZooKeeper প্রসেসটি চালু করা সম্ভব হয়নি।

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

যখন আপনি ZooKeeper প্রসেসটি চালু করার চেষ্টা করেন, তখন নিম্নলিখিত ত্রুটি বার্তাটি প্রদর্শিত হয়, যা নির্দেশ করে যে ZooKeeper চালু করা যায়নি:

+ apigee-service apigee-zookeeper status
apigee-service: apigee-zookeeper: Not running (DEAD)
apigee-all: Error: status failed on [apigee-zookeeper]

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

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

কারণ জন্য
ভুলভাবে কনফিগার করা ZooKeeper myid এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
ZooKeeper পোর্ট ব্যবহার করা হচ্ছে এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
apigee-zookeeper.pid ফাইলে ভুল প্রসেস আইডি এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা
চিড়িয়াখানার রক্ষক নেতার নির্বাচনে ব্যর্থতা এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা

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

ভুলভাবে কনফিগার করা ZooKeeper myid

নিম্নলিখিত বিভাগগুলিতে myid ফাইলের একটি সংক্ষিপ্ত বিবরণ দেওয়া হয়েছে এবং ভুল কনফিগারেশনজনিত সমস্যাগুলি কীভাবে নির্ণয় ও সমাধান করতে হয় তা বর্ণনা করা হয়েছে।

myid ফাইলের সংক্ষিপ্ত বিবরণ

প্রতিটি ZooKeeper নোডে দুটি ফাইল থাকে:

  1. /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
  2. /opt/apigee/data/apigee-zookeeper/data/myid ফাইলটিতে একটিমাত্র লাইনের টেক্সট থাকে, যা সেই নির্দিষ্ট ZooKeeper নোডটির সার্ভার নম্বরকে নির্দেশ করে। সার্ভার ১-এর myid-তে শুধুমাত্র "1" লেখাটি থাকবে, অন্য কিছু নয়। এই আইডিটি পুরো এনসেম্বলের মধ্যে অনন্য হতে হবে এবং এর মান ১ থেকে ২৫৫-এর মধ্যে হওয়া উচিত।

    উদাহরণস্বরূপ, ZooKeeper server.1-এ, /opt/apigee/data/apigee-zookeeper/data/myid ফাইলটিতে নিচে দেখানো অনুযায়ী শুধু 1 লেখাটি থাকা উচিত:

    $ cat myid
    1

রোগ নির্ণয়

  1. ত্রুটির জন্য ZooKeeper লগ /opt/apigee/var/log/apigee-zookeeper/zookeeper.log পরীক্ষা করুন।
  2. যদি আপনি নীচের চিত্রে দেখানো “Connection broken for id #, my id = #”-এর মতো কোনো WARN বার্তা দেখতে পান, তাহলে এই সমস্যার সম্ভাব্য কারণ হতে পারে যে 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)
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg ফাইলটি পরীক্ষা করুন এবং বর্তমান ZooKeeper নোডটির server.# লিখে নিন।
  4. /opt/apigee/data/apigee-zookeeper/data/myid ফাইলটি পরীক্ষা করুন এবং দেখুন এই ফাইলের লেখাটি ধাপ #২-এ উল্লিখিত server.#-এর সাথে মেলে কি না।
  5. যদি কোনো অমিল থাকে, তাহলে আপনি ZooKeeper চালু না হওয়ার কারণটি শনাক্ত করতে পেরেছেন।

সমাধান

যদি myid ফাইলটি ভুলভাবে কনফিগার করা থাকে, তাহলে myid ফাইলটি সম্পাদনা করুন এবং zoo.cfg-তে থাকা server.# প্যারামিটারটির প্রতিনিধিত্বকারী সঠিক টেক্সট দিয়ে এর মানটি প্রতিস্থাপন করুন।

ZooKeeper পোর্ট ব্যবহার করা হচ্ছে

রোগ নির্ণয়

  1. ত্রুটির জন্য ZooKeeper লগ /opt/apigee/var/log/apigee-zookeeper/zookeeper.log দেখুন।
  2. যদি আপনি নিচের চিত্রে দেখানো অনুযায়ী পোর্ট #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)
  3. ZooKeeper পোর্ট 2181 সত্যিই অন্য কোনো প্রসেস দ্বারা ব্যবহৃত হচ্ছে কিনা তা নিশ্চিত করতে নিচের netstat কমান্ডটি ব্যবহার করুন:
    netstat -an | grep 2181

সমাধান

যদি ZooKeeper পোর্ট 2181 এখনও ব্যবহৃত হয়ে থাকে, তাহলে এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  1. netstat কমান্ড ব্যবহার করে সেই প্রসেসটি খুঁজুন যেটি পোর্ট 2181 দখল করে রেখেছে। 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
  2. যদি pid এবং lock ফাইল থাকে, তবে সেগুলি মুছে ফেলুন:
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.pid
    /opt/apigee/var/run/apigee-zookeeper/apigee-zookeeper.lock
  3. চিড়িয়াখানার রক্ষক পুনরায় চালু করুন:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart

apigee-zookeeper.pid ফাইলে ভুল প্রসেস আইডি

যখন আপনি ZooKeeper বন্ধ বা পুনরায় চালু করার চেষ্টা করেন, তখন তা ব্যর্থ হতে পারে কারণ apigee-zookeeper.pid ফাইলটিতে বর্তমানে চলমান ZooKeeper প্রসেসের pid-এর পরিবর্তে পুরোনো বা ভুল pid থাকে। এমনটা হতে পারে যদি কোনো কারণে ZooKeeper প্রসেসটি অপ্রত্যাশিতভাবে বা হঠাৎ বন্ধ হয়ে যায় এবং apigee-zookeeper.pid ফাইলটি মুছে ফেলা না হয়।

রোগ নির্ণয়

  1. ps কমান্ডটি চালিয়ে বর্তমানে চলমান ZooKeeper প্রসেসের প্রসেস আইডিটি জেনে নিন:
    ps -ef | grep zookeeper
  2. /opt/apigee/var/run/apigee-ZooKeeper/apigee-zookeeper.pid ফাইলটি আছে কিনা তা পরীক্ষা করুন। যদি ফাইলটি থাকে, তাহলে এতে লেখা প্রসেস আইডিটি লিখে রাখুন।
  3. ধাপ #১ এবং #২ থেকে নেওয়া প্রসেস আইডিগুলো তুলনা করুন। যদি সেগুলো ভিন্ন হয়, তাহলে এই সমস্যার কারণ হলো apigee-zookeeper.pid file.

সমাধান

  1. apigee-zookeeper.pid ফাইলটি সম্পাদনা করুন এবং ps কমান্ড থেকে প্রাপ্ত সঠিক প্রসেস আইডি (উপরের ধাপ #১) দিয়ে ভুল প্রসেস আইডিটি প্রতিস্থাপন করুন।
  2. চিড়িয়াখানার রক্ষক পুনরায় চালু করুন:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart

চিড়িয়াখানার রক্ষক নেতার নির্বাচনে ব্যর্থতা

রোগ নির্ণয়

রোগ নির্ণয় করতে:

  1. ত্রুটির জন্য ZooKeeper লগ /opt/apigee/var/log/apigee-zookeeper/zookeeper.log পরীক্ষা করুন।
  2. এমন কোনো কনফিগারেশন পরিবর্তন করা হয়েছে কিনা তা পরীক্ষা করুন, যার কারণে ZooKeeper-এ লিডার নির্বাচন ব্যর্থ হতে পারে।
  3. /opt/apigee/apigee-zookeeper/conf/zoo.cfg ফাইলটি পরীক্ষা করুন এবং নিশ্চিত করুন যে ক্লাস্টারের সমস্ত ZooKeeper-এর server.# প্যারামিটারের জন্য সঠিক নম্বর এবং আইপি অ্যাড্রেস রয়েছে। আরও মনে রাখবেন যে, লিডার নির্বাচন সফল হওয়ার জন্য ন্যূনতম ৩ জন ভোটার থাকা প্রয়োজন এবং ভোটারের সংখ্যা বিজোড় হতে হবে। যদি ভোটারের সংখ্যা খুব কম হয়, যেমন মাত্র ২ জন, তবে শুধুমাত্র ২ জন ভোটারের মধ্যে থেকে লিডার নির্ধারণের জন্য কোরাম গঠিত হতে পারে না।

সমাধান

সাধারণত, ভুলভাবে কনফিগার করা myid-এর কারণে ZooKeeper নির্বাচন ব্যর্থ হয়। এই নির্বাচন ব্যর্থতা সমাধানের জন্য 'Misconfigured ZooKeeper myid' অংশে দেওয়া সমাধানটি ব্যবহার করুন।

যদি সমস্যাটি অব্যাহত থাকে এবং আরও বিশ্লেষণের প্রয়োজন হয়, তাহলে Apigee Edge Support-এর সাথে যোগাযোগ করুন।