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 অ্যাড্রেস নির্দিষ্ট করে। সব 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 নোড সরাতে হয় তা বর্ণনা করা হয়েছে।

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 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 কমান্ড রান করুন, যেখানে 2181 হল 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 ensemble-এ রক্ষণাবেক্ষণ করার সবচেয়ে ভালো উপায় হল, এটি একবারে একটি নোডে করা। মনে রাখবেন:

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