ZooKeeper রক্ষণাবেক্ষণ

প্রাইভেট ক্লাউডের জন্য Edge v. 4.16.09

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 অ্যাড্রেস নির্দিষ্ট করে। সব ZooKeeper নোডে IP অ্যাড্রেস একই ক্রমে তালিকাভুক্ত করতে হবে।

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

    সিঙ্গেল ডেটা সেন্টার ইনস্টলেশনে, এগুলি ZK_HOSTS-এর মাধ্যমে নির্দিষ্ট করা একই নোড। মাল্টি-ডেটা সেন্টার এনভায়রনমেন্টে, প্রতিটি ডেটা সেন্টারের Edge কনফিগারেশন ফাইলে শুধুমাত্র সেই ডেটা সেন্টারের ZooKeeper নোড তালিকাভুক্ত থাকতে হবে

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

আপনি সাধারণত একাধিক Edge Data Center তৈরি করার সময় বা একটি ডেটা সেন্টারে প্রচুর সংখ্যক 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-এ একটি নতুন Message Processor যোগ করা হয়েছে। সেই তথ্য ZooKeeper লিডারে লেখা হয়। সব ফলোয়ার তারপর ডেটা রেপ্লিকেট করুন।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    যেখানে 2181 হল ZooKeeper পোর্ট। ফর্মের আউটপুটে এগুলি দেখতে পাবেন:
    Zookeeper ভার্সন: 3.4.5-1392090, ৩০/০৯/২০১২ ১৭:৫২ GMT-তে বিল্ড করা হয়েছে
    ক্লায়েন্ট: /a.b.c.d:xxxx[0](queued=0,recved=1,sent=0)
    লেটেন্সি ন্যূনতম/গড়/সর্বাধিক: ০/০/০
    প্রাপ্ত: ১
    প্রেরিত: ০
    কানেকশন: ১
    বাকি আছে: ০
    Zxid: 0xc00000044
    মোড: ফলোয়ার
    নোড সংখ্যা: ৬৫৩


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

    মনে রাখবেন: একটি ZooKeeper নোড সহ Edge-এর স্ট্যান্ডঅলোন ইনস্টলেশনে, মোড স্ট্যান্ডঅলোন হিসেবে সেট করা আছে।
  3. প্রতিটি ZooKeeper নোডে ১ ও ২ নম্বর ধাপ আবার করুন।

সারাংশ

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

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