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 দ্বারা নির্দিষ্ট করা নোডের মতোই। মাল্টি-ডেটা সেন্টার এনভায়রনমেন্টে, প্রতিটি ডেটা সেন্টারের 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-এ নতুন মেসেজ প্রসেসর যোগ করা হয়েছে। সেই তথ্য ZooKeeper লিডারে লেখা হয়। সব ফলোয়ার তারপর ডেটা রেপ্লিকেট করুন।

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

ভোটার নোডের কোরাম উপলভ্য না থাকলে, কোনও লিডার বেছে নেওয়া যাবে না। এই পরিস্থিতিতে, ZooKeeper অনুরোধের উত্তর দিতে পারে না। এর অর্থ হল, কোরাম রিস্টোর না করা পর্যন্ত আপনি Edge Management Server-এ অনুরোধ করতে, API অনুরোধ প্রসেস করতে বা New 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 ensemble-এর পারফর্ম্যান্সে সামান্য অবনতি হতে পারে বলে ধরে নিতে পারেন। নোডটি যদি ভোটার নোড হয়, তাহলে এটি ZooKeeper ensemble-এর কার্যকারিতার উপর প্রভাব ফেলতে পারে, কারণ এটি এমন একটি নোড যা নেতা নির্বাচন প্রক্রিয়ায় অংশগ্রহণ করে। ভোটার নোড বন্ধ হয়ে যাওয়ার কারণ যাই হোক না কেন, উপলভ্য ভোটার নোডের কোরাম বজায় রাখা গুরুত্বপূর্ণ।

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

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 কমান্ড ব্যবহার করুন।