ZooKeeper রক্ষণাবেক্ষণ সম্পর্কে

ZooKeeper এনসেম্বল এমনভাবে ডিজাইন করা হয়েছে যাতে এক বা একাধিক ZooKeeper নোড হারিয়ে গেলেও, কোনও ডেটা না হারিয়ে এটি কাজ করতে পারে। এই স্থিতিস্থাপকতা ZooKeeper নোডে রক্ষণাবেক্ষণ করার জন্য কার্যকরভাবে ব্যবহার করা যেতে পারে কোনও সিস্টেম ডাউনটাইম ছাড়াই।

ZooKeeper এবং Edge সম্পর্কে

Edge-এ, ZooKeeper নোডে বিভিন্ন Edge কম্পোনেন্টের লোকেশন ও কনফিগারেশন সম্পর্কে কনফিগারেশন ডেটা থাকে এবং কনফিগারেশনে পরিবর্তন হলে বিভিন্ন কম্পোনেন্টকে বিজ্ঞপ্তি পাঠায়। প্রোডাকশন সিস্টেমের জন্য সব সমর্থিত এজ টপোলজি কমপক্ষে তিনটি ZooKeeper নোড ব্যবহার করে।

ZooKeeper নোড নির্দিষ্ট করতে Edge কনফিগারেশন ফাইলে ZK_HOSTS এবং ZK_CLIENT_HOSTS প্রপার্টি ব্যবহার করুন। যেমন:

ZK_HOSTS="$IP1 $IP2 $IP3"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

যেখানে:

  • ZK_HOSTS ZooKeeper নোডের IP অ্যাড্রেস নির্দিষ্ট করে। IP অ্যাড্রেসগুলি সব ZooKeeper নোডে একই ক্রমে তালিকাভুক্ত করতে হবে।

    মাল্টি-ডেটা সেন্টার পরিবেশে, সব ডেটা সেন্টার থেকে সব ZooKeeper নোডের তালিকা তৈরি করুন।

  • ZK_CLIENT_HOSTS শুধুমাত্র এই ডেটা সেন্টারের মাধ্যমে ব্যবহৃত ZooKeeper নোডের IP অ্যাড্রেস নির্দিষ্ট করে। ডেটা সেন্টারের সব ZooKeeper নোডে IP অ্যাড্রেস একই ক্রমে তালিকাভুক্ত করতে হবে।

    একটি ডেটা সেন্টার ইনস্টলেশনে, এগুলি ZK_HOSTS দ্বারা নির্দিষ্ট করা নোডের মতোই। একাধিক ডেটা সেন্টার পরিবেশে, প্রতিটি ডেটা সেন্টারের জন্য এজ কনফিগারেশন ফাইলে শুধুমাত্র সেই ডেটা সেন্টারের জন্য ZooKeeper নোডগুলি তালিকাভুক্ত করা উচিত।

ডিফল্ট হিসেবে, সব ZooKeeper নোডকে ভোটার নোড হিসেবে চিহ্নিত করা হয়। এর অর্থ হল, ZooKeeper লিডার নির্বাচন করার জন্য সব নোড অংশগ্রহণ করে। আপনি ZK_HOSTS-এর সাথে :observer মডিফায়ার যোগ করতে পারেন, যাতে বোঝা যায় যে নোডটি একটি পর্যবেক্ষক নোড, ভোটার নয়। একটি পর্যবেক্ষক নোড লিডার নির্বাচনে অংশগ্রহণ করে না।

একাধিক এজ ডেটা সেন্টার তৈরি করার সময় বা একটি ডেটা সেন্টারে অনেক ZooKeeper নোড থাকলে, আপনি সাধারণত :observer মডিফায়ার নির্দিষ্ট করেন। যেমন, দুটি ডেটা সেন্টার সহ ১২-হোস্ট Edge ইনস্টলেশনে, ডেটা সেন্টার ২-এর নোড ৯-এ ZooKeeper হল অবজারভার:

তারপর আপনি ডেটা সেন্টার ১-এর জন্য আপনার কনফিগারেশন ফাইলে নিম্নলিখিত সেটিংস ব্যবহার করেন:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"

এবং ডেটা সেন্টার ২-এর জন্য:

ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"

নিচের বিভাগগুলিতে লিডার, ভোটার এবং অবজারভার নোড সম্পর্কে আরও বিশদ বিবরণ রয়েছে এবং ভোটার এবং অবজারভার নোড যোগ করার বিবেচনার বর্ণনা দেওয়া হয়েছে।

নেতা, ফলোয়ার, ভোটার ও পর্যবেক্ষক সম্পর্কে

মাল্টি-নোড ZooKeeper ইনস্টলেশনে, একটি নোডকে লিডার হিসেবে মনোনীত করা হয়। অন্যান্য সব ZooKeeper নোডকে ফলোয়ার হিসেবে চিহ্নিত করা হয়। যেকোনও ZooKeeper নোড থেকে ডেটা পড়া গেলেও, ডেটা লেখার সব অনুরোধ লিডারের কাছে ফরওয়ার্ড করা হয়। যেমন, Edge-এ নতুন মেসেজ প্রসেসর যোগ করা হয়েছে। সেই তথ্য ZooKeeper লিডারে লেখা হয়। সব ফলোয়ার তারপর ডেটা রেপ্লিকেট করুন।

Edge ইনস্টল করার সময়, আপনি প্রতিটি ZooKeeper নোডকে ভোটার বা পর্যবেক্ষক হিসেবে মনোনীত করেন। তারপর সব ভোটার ZooKeeper নোড লিডারকে বেছে নেয়। নেতা নির্বাচনের জন্য একটি শর্ত হল, কার্যকর ZooKeeper ভোটার নোডের কোরাম উপলভ্য থাকতে হবে। কোরাম মানে হল, সব ডেটা সেন্টার জুড়ে, সমস্ত ভোটার ZooKeeper নোডের অর্ধেকের বেশি কার্যকরী।

ভোটার নোডের কোরাম উপলভ্য না থাকলে, কোনও লিডার বেছে নেওয়া যাবে না। এই পরিস্থিতিতে, Zookeeper অনুরোধের উত্তর দিতে পারে না। এর অর্থ হল, কোরাম রিস্টোর না হওয়া পর্যন্ত আপনি Edge ম্যানেজমেন্ট সার্ভারে অনুরোধ করতে, ম্যানেজমেন্ট API অনুরোধ প্রসেস করতে বা Edge UI-তে লগ-ইন করতে পারবেন না।

যেমন, একটি ডেটা সেন্টার ইনস্টলেশনে:

  • আপনি তিনটি ZooKeeper নোড ইনস্টল করেছেন
  • সব ZooKeeper নোড হল ভোটার
  • কোরাম হল দুটি কার্যকরী ভোটার নোড
  • শুধুমাত্র একটি ভোটার নোড উপলভ্য থাকলে, ZooKeeper এনসেম্বল কাজ করতে পারে না

দুটি ডেটা সেন্টার সহ ইনস্টলেশনে:

  • আপনি প্রতিটি ডেটা সেন্টারে তিনটি করে ZooKeeper নোড ইনস্টল করেছেন, অর্থাৎ মোট ছয়টি নোড
  • ডেটা সেন্টার ১-এ তিনটি ভোটার নোড আছে
  • ডেটা সেন্টার ২-এ দুটি ভোটার নোড এবং একটি অবজারভার নোড আছে
  • কোরাম দুটি ডেটা সেন্টার জুড়ে পাঁচজন ভোটারের উপর ভিত্তি করে তৈরি করা হয়েছে এবং তাই তিনটি কার্যকরী ভোটার নোড
  • শুধুমাত্র দুটি বা তার কম ভোটার নোড উপলভ্য থাকলে, ZooKeeper এনসেম্বল কাজ করতে পারবে না

ভোটার বা পর্যবেক্ষক হিসেবে নোড যোগ করার সময় যেসব বিষয় বিবেচনা করতে হবে

আপনার সিস্টেমের প্রয়োজনীয়তার জন্য আপনার Edge ইনস্টলেশনে অতিরিক্ত ZooKeeper নোড যোগ করতে হতে পারে। ZooKeeper নোড যোগ করা ডকুমেন্টেশনে Edge-এ কীভাবে অতিরিক্ত ZooKeeper নোড যোগ করতে হয় তা বর্ণনা করা হয়েছে। ZooKeeper নোড যোগ করার সময়, আপনাকে অবশ্যই যোগ করার জন্য নোডের ধরন বিবেচনা করতে হবে: ভোটার বা পর্যবেক্ষক।

আপনাকে নিশ্চিত করতে হবে যে পর্যাপ্ত ভোটার নোড আছে যাতে এক বা একাধিক ভোটার নোড ডাউন থাকলেও ZooKeeper এনসেম্বল কাজ করতে পারে, অর্থাৎ ভোটার নোডের কোরাম এখনও উপলভ্য আছে। ভোটার নোড যোগ করার মাধ্যমে, আপনি কোরামের সাইজ বাড়াতে পারবেন এবং এর ফলে আপনি আরও বেশি ভোটার নোড ডাউন থাকার বিষয়টি সহ্য করতে পারবেন।

তবে, অতিরিক্ত ভোটার নোড যোগ করলে তা রাইট পারফর্ম্যান্সের উপর নেতিবাচক প্রভাব ফেলতে পারে, কারণ রাইট অপারেশনের জন্য লিডারের উপর কোরামের সম্মতি প্রয়োজন। লিডার নির্ধারণ করতে যে সময় লাগে তা ভোটার নোডের সংখ্যার উপর নির্ভর করে, আপনি যত বেশি ভোটার নোড যোগ করবেন, তত বেশি সময় লাগবে। তাই, আপনি সব নোডকে ভোটার করতে চান না।

ভোটার নোড যোগ করার পরিবর্তে, আপনি পর্যবেক্ষক নোড যোগ করতে পারেন। অবজার্ভার নোড যোগ করলে লিডার বেছে নেওয়ার ওভারহেড যোগ না করেই সামগ্রিক সিস্টেম রিড পারফর্ম্যান্স বাড়ে, কারণ অবজার্ভার নোড ভোট দেয় না এবং কোরাম সাইজকে প্রভাবিত করে না। তাই, কোনও অবজারভার নোড বন্ধ হয়ে গেলে, লিডার বেছে নেওয়ার ক্ষেত্রে এনসেম্বলের ক্ষমতার উপর কোনও প্রভাব পড়ে না। তবে, অবজারভার নোড হারিয়ে গেলে ZooKeeper এনসেম্বলের রিড পারফর্ম্যান্স কমে যেতে পারে, কারণ ডেটা অনুরোধের পরিষেবা দেওয়ার জন্য কম নোড উপলভ্য থাকে।

Apigee সাজেস্ট করে যে একটি ডেটা সেন্টারে অবজারভার নোডের সংখ্যা যাই হোক না কেন, আপনার কাছে পাঁচটির বেশি ভোটার থাকা উচিত নয়। দুটি ডেটা সেন্টারে, Apigee সাজেস্ট করে যে আপনার কাছে নয়টির বেশি ভোটার থাকবে না (একটি ডেটা সেন্টারে পাঁচটি এবং অন্যটিতে চারটি)। আপনার সিস্টেমের প্রয়োজনীয়তা অনুযায়ী আপনি যতগুলি প্রয়োজন ততগুলি অবজার্ভার নোড যোগ করতে পারবেন।

Zookeeper নোড সরানো

আপনি অনেক কারণে Zookeeper নোড সরাতে চাইতে পারেন; যেমন, কোনও নোড খারাপ হয়ে গেছে বা ভুল এনভায়রনমেন্টে যোগ করা হয়েছে।

এই বিভাগে বর্ণনা করা হয়েছে যে কোনও Zookeeper নোড ডাউন থাকলে এবং সেটি অ্যাক্সেস করা না গেলে, কীভাবে সেটি সরাতে হয়।

Zookeeper নোড সরাতে:

  1. আপনার সাইলেন্ট কনফিগারেশন ফাইল এডিট করুন এবং আপনি যে Zookeeper নোড সরাতে চান তার IP অ্যাড্রেস সরিয়ে দিন।
  2. বাকি ZooKeeper নোড আবার কনফিগার করতে, ZooKeeper-এর জন্য setup কমান্ড আবার রান করুন:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
  3. সব Zookeeper নোড রিস্টার্ট করুন:
    /opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
  4. ম্যানেজমেন্ট সার্ভার নোড আবার কনফিগার করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
  5. সব রাউটার আবার কনফিগার করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-router restart
  6. সব মেসেজ প্রসেসর আবার কনফিগার করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
  7. সব Qpid নোড আবার কনফিগার করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
  8. সব Postgres নোড আবার কনফিগার করুন:
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server setup -f updated_config_file
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server restart

রক্ষণাবেক্ষণ সংক্রান্ত বিবেচনা

আপনি একবারে একটি নোডে ZooKeeper রক্ষণাবেক্ষণ করলে, কোনও ডাউনটাইম ছাড়াই সম্পূর্ণ কার্যকরী এনসেম্বলে এটি করতে পারবেন। যেকোনও সময়ে শুধুমাত্র একটি ZooKeeper নোড ডাউন আছে কিনা তা নিশ্চিত করার মাধ্যমে, আপনি নিশ্চিত করতে পারবেন যে লিডার বেছে নেওয়ার জন্য সবসময় ভোটার নোডের কোরাম উপলভ্য আছে।

একাধিক ডেটা সেন্টার জুড়ে রক্ষণাবেক্ষণ

একাধিক ডেটা সেন্টারের সাথে কাজ করার সময়, মনে রাখবেন যে ZooKeeper এনসেম্বল ডেটা সেন্টারের মধ্যে পার্থক্য করে না। ZooKeeper অ্যাসেম্বলি সব ডেটা সেন্টার জুড়ে সমস্ত ZooKeeper নোডকে একটি এনসেম্বল হিসাবে দেখে।

ZooKeeper কোরাম গণনা করার সময় কোনও নির্দিষ্ট ডেটা সেন্টারে ভোটার নোডের লোকেশন কোনও ফ্যাক্টর নয়। ডেটা সেন্টার জুড়ে স্বতন্ত্র নোড বন্ধ হয়ে যেতে পারে, তবে যতক্ষণ পর্যন্ত পুরো এনসেম্বল জুড়ে কোরাম সংরক্ষিত থাকে, ততক্ষণ ZooKeeper কাজ করে।

রক্ষণাবেক্ষণ সংক্রান্ত প্রভাব

বিভিন্ন সময়ে, রক্ষণাবেক্ষণের জন্য আপনাকে ZooKeeper নোড ডাউন করতে হবে, হয় ভোটার নোড অথবা অবজারভার নোড। যেমন, আপনাকে নোডে Edge-এর ভার্সন আপগ্রেড করতে হতে পারে, ZooKeeper হোস্ট করা মেশিন কাজ নাও করতে পারে অথবা নেটওয়ার্কের সমস্যার মতো অন্য কোনও কারণে নোড উপলভ্য নাও হতে পারে।

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

রক্ষণাবেক্ষণ সংক্রান্ত পদ্ধতি

ZooKeeper এনসেম্বল কাজ করছে কিনা তা নিশ্চিত করার পরেই রক্ষণাবেক্ষণ সংক্রান্ত পদ্ধতি সম্পূর্ণ করুন। এটি ধরে নেয় যে অবজারভার নোডগুলি কার্যকর এবং রক্ষণাবেক্ষণের সময় কোরাম বজায় রাখার জন্য পর্যাপ্ত ভোটার নোড উপলব্ধ রয়েছে।

এই শর্তগুলি পূরণ হলে, যেকোনও সাইজের ZooKeeper এনসেম্বল যেকোনও সময় একটি নোড হারিয়ে গেলেও ডেটা হারায় না বা পারফর্ম্যান্সে কোনও উল্লেখযোগ্য প্রভাব পড়ে না। এর অর্থ হল, আপনি এনসেম্বলের যেকোনও নোডে রক্ষণাবেক্ষণ করতে পারবেন, তবে একবারে একটি নোডেই তা করতে হবে।

রক্ষণাবেক্ষণ করার অংশ হিসেবে, ZooKeeper নোডের ধরন (লিডার, ভোটার বা পর্যবেক্ষক) নির্ধারণ করতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন:

  1. ZooKeeper নোডে এটি ইনস্টল করা না থাকলে, nc ইনস্টল করুন:
    sudo yum install nc
  2. নোডে নিম্নলিখিত nc কমান্ড রান করুন, যেখানে ZooKeeper পোর্ট হল ২১৮১:
    echo stat | nc localhost 2181

    আপনি ফর্মে আউটপুট দেখতে পাবেন:

    Zookeeper version: 3.4.5-1392090,
    built on 09/30/2012 17:52 GMT
    Clients: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    Latency min/avg/max: 0/0/0
    Received: 1
    Sent: 0
    Connections: 1
    Outstanding: 0
    Zxid: 0xc00000044
    Mode: follower
    Node count: 653

    নোডের জন্য আউটপুটের Mode লাইনে, নোড কনফিগারেশনের উপর নির্ভর করে আপনার observer, leader বা follower (অর্থাৎ, এমন ভোটার যিনি লিডার নন) দেখতে পাওয়া উচিত।

  3. প্রতিটি ZooKeeper নোডে ১ ও ২ নম্বর ধাপ আবার করুন।

সারাংশ

ZooKeeper এনসেম্বল রক্ষণাবেক্ষণ করার সবচেয়ে ভালো উপায় হল একবারে একটি নোড রক্ষণাবেক্ষণ করা। মনে রাখবেন:

  • ZooKeeper এনসেম্বল যাতে কাজ করে তা নিশ্চিত করতে রক্ষণাবেক্ষণের সময় আপনাকে অবশ্যই ভোটার নোডের কোরাম বজায় রাখতে হবে।
  • পর্যবেক্ষক নোড সরিয়ে দিলে কোরাম বা নেতা বেছে নেওয়ার ক্ষমতার উপর কোনও প্রভাব পড়ে না।
  • সব ডেটা সেন্টারের সব ZooKeeper নোড জুড়ে কোরাম গণনা করা হয়।
  • আগের সার্ভার চালু হওয়ার পরে পরবর্তী সার্ভারের রক্ষণাবেক্ষণ শুরু করুন।
  • ZooKeeper নোড পরীক্ষা করতে nc কমান্ড ব্যবহার করুন।