ZooKeeper ensembles এক বা একাধিক ZooKeeper নোডের ক্ষতি হওয়া সত্ত্বেও, কোন ডেটা ক্ষতি ছাড়াই কার্যকরী থাকার জন্য ডিজাইন করা হয়েছে। এই স্থিতিস্থাপকতা কোন সিস্টেম ডাউনটাইম ছাড়া ZooKeeper নোডগুলিতে রক্ষণাবেক্ষণ করতে কার্যকরভাবে ব্যবহার করা যেতে পারে।
ZooKeeper এবং Edge সম্পর্কে
এজ-এ, ZooKeeper নোডগুলিতে বিভিন্ন এজ উপাদানগুলির অবস্থান এবং কনফিগারেশন সম্পর্কে কনফিগারেশন ডেটা থাকে এবং কনফিগারেশন পরিবর্তনের বিভিন্ন উপাদানগুলিকে অবহিত করে। একটি প্রোডাকশন সিস্টেমের জন্য সমস্ত সমর্থিত এজ টপোলজি অন্তত তিনটি ZooKeeper নোড ব্যবহার করে।
ZooKeeper নোডগুলি নির্দিষ্ট করতে এজ কনফিগারেশন ফাইলে ZK_HOSTS
এবং ZK_CLIENT_HOSTS
বৈশিষ্ট্যগুলি ব্যবহার করুন৷ যেমন:
ZK_HOSTS="$IP1 $IP2 $IP3" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
কোথায়:
-
ZK_HOSTS
ZooKeeper নোডের IP ঠিকানা নির্দিষ্ট করে। সমস্ত ZooKeeper নোডগুলিতে আইপি ঠিকানাগুলি অবশ্যই একই ক্রমে তালিকাভুক্ত করা উচিত।একটি মাল্টি-ডেটা সেন্টার পরিবেশে, সমস্ত ডেটা সেন্টার থেকে সমস্ত ZooKeeper নোড তালিকাভুক্ত করুন।
ZK_CLIENT_HOSTS
শুধুমাত্র এই ডেটা সেন্টার দ্বারা ব্যবহৃত ZooKeeper নোডগুলির IP ঠিকানাগুলি নির্দিষ্ট করে৷ আইপি ঠিকানাগুলিকে ডেটা সেন্টারের সমস্ত ZooKeeper নোডগুলিতে একই ক্রমে তালিকাভুক্ত করা আবশ্যক৷একটি একক ডেটা সেন্টার ইনস্টলেশনে, এইগুলি একই নোডগুলি যেমন ZK_HOSTS দ্বারা নির্দিষ্ট করা হয়েছে৷ একটি মাল্টি-ডেটা সেন্টার পরিবেশে, প্রতিটি ডেটা সেন্টারের জন্য এজ কনফিগার ফাইলটি শুধুমাত্র সেই ডেটা সেন্টারের জন্য ZooKeeper নোডগুলি তালিকাভুক্ত করা উচিত।
ডিফল্টরূপে, সমস্ত ZooKeeper নোড ভোটার নোড হিসাবে মনোনীত হয়। এর মানে হল নোডগুলি সবই ZooKeeper নেতা নির্বাচন করতে অংশগ্রহণ করে। আপনি ZK_HOSTS
এর সাথে :observer
মডিফায়ার অন্তর্ভুক্ত করতে পারেন যাতে বোঝানো যায় যে নোডটি একটি পর্যবেক্ষক নোড, ভোটার নয়। একজন পর্যবেক্ষক নোড নেতা নির্বাচনে অংশগ্রহণ করে না।
একাধিক এজ ডেটা সেন্টার তৈরি করার সময় আপনি সাধারণত :observer
মডিফায়ার নির্দিষ্ট করেন, অথবা যখন একটি ডাটা সেন্টারে প্রচুর পরিমাণে ZooKeeper নোড থাকে। উদাহরণস্বরূপ, দুটি ডেটা সেন্টার সহ একটি 12-হোস্ট এজ ইনস্টলেশনে, ডেটা সেন্টার 2-এ নোড 9-এর ZooKeeper হল পর্যবেক্ষক:
তারপরে আপনি ডেটা সেন্টার 1 এর জন্য আপনার কনফিগার ফাইলে নিম্নলিখিত সেটিংস ব্যবহার করুন:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
এবং ডেটা সেন্টার 2 এর জন্য:
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer" ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
নিম্নলিখিত বিভাগগুলিতে নেতা, ভোটার এবং পর্যবেক্ষক নোডগুলি সম্পর্কে আরও বিশদ বিবরণ রয়েছে এবং ভোটার এবং পর্যবেক্ষক নোডগুলি যুক্ত করার বিবেচনার বর্ণনা রয়েছে৷
নেতা, অনুসারী, ভোটার এবং পর্যবেক্ষকদের সম্পর্কে
একটি মাল্টি-নোড ZooKeeper ইনস্টলেশনে, নোডগুলির মধ্যে একটিকে নেতা হিসাবে মনোনীত করা হয়। অন্যান্য সমস্ত ZooKeeper নোড অনুসরণকারী হিসাবে মনোনীত করা হয়েছে। যেকোন ZooKeeper নোড থেকে রিডগুলি ঘটতে পারে, সমস্ত লেখার অনুরোধ লিডারের কাছে ফরোয়ার্ড করা হয়। উদাহরণস্বরূপ, এজে একটি নতুন বার্তা প্রসেসর যুক্ত করা হয়েছে। সেই তথ্য চিড়িয়াখানার নেতাকে লেখা হয়েছে। সমস্ত অনুসরণকারীরা তারপর ডেটা প্রতিলিপি করে।
এজ ইনস্টলেশনের সময়, আপনি প্রতিটি ZooKeeper নোডকে ভোটার বা পর্যবেক্ষক হিসাবে মনোনীত করেন। নেতা তারপর সব ভোটার ZooKeeper নোড দ্বারা নির্বাচিত হয়. একজন নেতা নির্বাচনের জন্য একটি প্রয়োজনীয়তা হল কার্যকরী ZooKeeper ভোটার নোডের একটি কোরাম থাকতে হবে। একটি কোরাম মানে সমস্ত ভোটার ZooKeeper নোডের অর্ধেকেরও বেশি, সমস্ত ডেটা সেন্টার জুড়ে, কার্যকরী৷
ভোটার নোডের কোরাম না থাকলে কোনো নেতা নির্বাচন করা যাবে না। এই পরিস্থিতিতে, Zookeeper অনুরোধগুলি পরিবেশন করতে পারে না। এর মানে হল আপনি এজ ম্যানেজমেন্ট সার্ভারের কাছে একটি অনুরোধ করতে পারবেন না, ম্যানেজমেন্ট API অনুরোধগুলি প্রক্রিয়া করতে পারবেন না বা কোরাম পুনরুদ্ধার না হওয়া পর্যন্ত এজ UI-তে লগ ইন করতে পারবেন না।
উদাহরণস্বরূপ, একটি একক ডেটা সেন্টার ইনস্টলেশনে:
- আপনি তিনটি ZooKeeper নোড ইনস্টল করেছেন
- সমস্ত ZooKeeper নোড ভোটার হয়
- কোরাম হল দুটি কার্যকরী ভোটার নোড
- যদি শুধুমাত্র একটি ভোটার নোড পাওয়া যায় তাহলে ZooKeeper ensemble কাজ করতে পারবে না
দুটি ডেটা সেন্টার সহ একটি ইনস্টলেশনে:
- আপনি প্রতি ডেটা সেন্টারে তিনটি ZooKeeper নোড ইনস্টল করেছেন, মোট ছয়টি নোডের জন্য
- ডেটা সেন্টার 1-এ তিনটি ভোটার নোড রয়েছে
- ডেটা সেন্টার 2-এ দুটি ভোটার নোড এবং একটি পর্যবেক্ষক নোড রয়েছে
- কোরাম উভয় ডেটা সেন্টারের পাঁচজন ভোটারের উপর ভিত্তি করে, এবং তাই তিনটি কার্যকরী ভোটার নোড।
- যদি মাত্র দুই বা তার কম ভোটার নোড পাওয়া যায় তাহলে ZooKeeper ensemble কাজ করতে পারবে না
ভোটার বা পর্যবেক্ষক হিসাবে নোড যোগ করার জন্য বিবেচনা
আপনার সিস্টেমের প্রয়োজনীয়তার জন্য আপনার এজ ইনস্টলেশনে অতিরিক্ত ZooKeeper নোড যোগ করার প্রয়োজন হতে পারে। ZooKeeper নোড যুক্ত করা ডকুমেন্টেশন বর্ণনা করে কিভাবে এজ-এ অতিরিক্ত ZooKeeper নোড যোগ করা যায়। ZooKeeper নোডগুলি যোগ করার সময়, আপনাকে অবশ্যই বিবেচনা করতে হবে যে নোডগুলি যোগ করতে হবে: ভোটার বা পর্যবেক্ষক৷
আপনি পর্যাপ্ত ভোটার নোড আছে তা নিশ্চিত করতে চান যাতে এক বা একাধিক ভোটার নোড নিচে থাকলে ZooKeeper ensemble এখনও কাজ করতে পারে, মানে এখনও ভোটার নোডের একটি কোরাম উপলব্ধ রয়েছে। ভোটার নোড যোগ করার মাধ্যমে, আপনি কোরামের আকার বাড়ান, এবং সেইজন্য আপনি আরও ভোটার নোড নিচে থাকা সহ্য করতে পারেন।
যাইহোক, অতিরিক্ত ভোটার নোড যুক্ত করা লেখার কার্যকারিতাকে নেতিবাচকভাবে প্রভাবিত করতে পারে কারণ লেখার ক্রিয়াকলাপের জন্য নেতার সাথে একমত হওয়ার জন্য কোরাম প্রয়োজন। নেতা নির্ধারণ করতে যে সময় লাগে তা ভোটার নোডের সংখ্যার উপর ভিত্তি করে, যা আপনি আরও ভোটার নোড যোগ করার সাথে সাথে বৃদ্ধি পায়। অতএব, আপনি সব নোড ভোটার করতে চান না.
ভোটার নোড যোগ করার পরিবর্তে, আপনি পর্যবেক্ষক নোড যোগ করতে পারেন। পর্যবেক্ষক নোডগুলি যোগ করার ফলে একজন নেতা নির্বাচনের ওভারহেডে যোগ না করে সামগ্রিক সিস্টেমের পাঠ কার্যক্ষমতা বৃদ্ধি পায় কারণ পর্যবেক্ষক নোডগুলি ভোট দেয় না এবং কোরামের আকারকে প্রভাবিত করে না। অতএব, যদি একটি পর্যবেক্ষক নোড নিচে চলে যায়, এটি নেতা নির্বাচন করার জন্য দলটির ক্ষমতাকে প্রভাবিত করে না। যাইহোক, পর্যবেক্ষক নোডগুলি হারানোর ফলে ZooKeeper ensemble-এর পঠন কর্মক্ষমতা হ্রাস পেতে পারে কারণ পরিষেবা ডেটা অনুরোধের জন্য কম নোড উপলব্ধ রয়েছে।
একটি একক ডেটা সেন্টারে, Apigee সুপারিশ করে যে পর্যবেক্ষক নোডের সংখ্যা নির্বিশেষে আপনার পাঁচটির বেশি ভোটার নেই। দুটি ডেটা সেন্টারে, Apigee সুপারিশ করে যে আপনার নয়জনের বেশি ভোটার নেই (একটি ডেটা সেন্টারে পাঁচজন এবং অন্যটিতে চারজন)। তারপরে আপনি আপনার সিস্টেমের প্রয়োজনীয়তার জন্য প্রয়োজনীয় যতগুলি পর্যবেক্ষক নোড যোগ করতে পারেন।
একটি Zookeeper নোড সরান
আপনি একটি Zookeeper নোড অপসারণ করতে চাইতে পারেন অনেক কারণ আছে; উদাহরণস্বরূপ, একটি নোড দূষিত হয়েছে বা এটি ভুল পরিবেশে যোগ করা হয়েছে।
এই বিভাগে বর্ণনা করা হয়েছে কিভাবে একটি Zookeeper নোড অপসারণ করা যায় যখন নোডটি নিচে থাকে এবং পৌঁছানো যায় না।
একটি Zookeeper নোড অপসারণ করতে:
- আপনার নীরব কনফিগারেশন ফাইল সম্পাদনা করুন এবং Zookeeper নোডের IP ঠিকানাটি সরান যা আপনি সরাতে চান।
- অবশিষ্ট ZooKeeper নোডগুলি পুনরায় কনফিগার করতে Zookeeper-এর জন্য
setup
কমান্ড পুনরায় চালান:/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper setup -f updated_config_file
- সমস্ত Zookeeper নোড পুনরায় চালু করুন:
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- ম্যানেজমেন্ট সার্ভার নোড পুনরায় কনফিগার করুন:
/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
- সমস্ত রাউটার পুনরায় কনফিগার করুন:
/opt/apigee/apigee-service/bin/apigee-service edge-router setup -f updated_config_file
/opt/apigee/apigee-service/bin/apigee-service edge-router restart
- সমস্ত বার্তা প্রসেসর পুনরায় কনফিগার করুন:
/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
- সমস্ত 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
- সমস্ত 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 নোডগুলিকে একটি ensemble হিসাবে দেখে।
ZooKeeper যখন কোরাম গণনা করে তখন প্রদত্ত ডেটা সেন্টারে ভোটার নোডের অবস্থান একটি ফ্যাক্টর নয়। ব্যক্তিগত নোডগুলি ডাটা সেন্টার জুড়ে নিচে যেতে পারে, কিন্তু যতক্ষণ পর্যন্ত পুরো দল জুড়ে একটি কোরাম সংরক্ষিত থাকে, ততক্ষণ ZooKeeper কার্যকর থাকে।
রক্ষণাবেক্ষণের প্রভাব
বিভিন্ন সময়ে, আপনাকে রক্ষণাবেক্ষণের জন্য একটি ZooKeeper নোড নিতে হবে, একটি ভোটার নোড বা একটি পর্যবেক্ষক নোড। উদাহরণস্বরূপ, আপনাকে নোডে এজ-এর সংস্করণ আপগ্রেড করতে হতে পারে, মেশিন হোস্টিং ZooKeeper ব্যর্থ হতে পারে, অথবা নেটওয়ার্ক ত্রুটির মতো অন্য কোনো কারণে নোডটি অনুপলব্ধ হতে পারে।
যে নোডটি নিচে যায় সেটি যদি একটি পর্যবেক্ষক নোড হয়, তাহলে নোডটি পুনরুদ্ধার না হওয়া পর্যন্ত আপনি ZooKeeper ensemble-এর কর্মক্ষমতায় সামান্য অবনতি আশা করতে পারেন। যদি নোডটি একটি ভোটার নোড হয়, তবে নেতা নির্বাচন প্রক্রিয়ায় অংশগ্রহণকারী একটি নোড হারিয়ে যাওয়ার কারণে এটি ZooKeeper ensemble এর কার্যকারিতাকে প্রভাবিত করতে পারে। ভোটার নোড কমে যাওয়ার কারণ যাই হোক না কেন, উপলব্ধ ভোটার নোডগুলির একটি কোরাম বজায় রাখা গুরুত্বপূর্ণ৷
রক্ষণাবেক্ষণ পদ্ধতি
একটি ZooKeeper ensemble কার্যকরী কিনা তা নিশ্চিত করার পরেই রক্ষণাবেক্ষণের পদ্ধতিগুলি সম্পাদন করুন৷ এটি অনুমান করে যে পর্যবেক্ষক নোডগুলি কার্যকরী এবং একটি কোরাম বজায় রাখার জন্য রক্ষণাবেক্ষণের সময় পর্যাপ্ত ভোটার নোড উপলব্ধ রয়েছে৷
যখন এই শর্তগুলি পূরণ করা হয়, তখন নির্বিচারে আকারের একটি ZooKeeper ensemble একটি একক নোডের ক্ষতি সহ্য করতে পারে যে কোনও সময়ে ডেটার ক্ষতি বা কার্যকারিতার উপর অর্থপূর্ণ প্রভাব ছাড়াই। এর মানে হল আপনি এনসেম্বলের যেকোনো নোডের রক্ষণাবেক্ষণ করতে পারবেন যতক্ষণ না এটি একবারে একটি নোডে থাকে।
রক্ষণাবেক্ষণের অংশ হিসাবে, একটি ZooKeeper নোডের ধরন নির্ধারণ করতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন (নেতা, ভোটার, বা পর্যবেক্ষক):
- এটি ZooKeeper নোডে ইনস্টল করা না থাকলে,
nc
ইনস্টল করুন:sudo yum install nc
- নোডে নিম্নলিখিত
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
(অর্থাৎ একজন ভোটার যে নেতা নয়) দেখতে পাবেন। - প্রতিটি ZooKeeper নোডে পদক্ষেপ 1 এবং 2 পুনরাবৃত্তি করুন।
সারাংশ
একটি ZooKeeper ensemble এ রক্ষণাবেক্ষণ করার সর্বোত্তম উপায় হল এটি একবারে একটি নোড সম্পাদন করা। মনে রাখবেন:
- রক্ষণাবেক্ষণের সময় আপনাকে অবশ্যই ভোটার নোডের একটি কোরাম বজায় রাখতে হবে যাতে ZooKeeper ensemble কার্যকর থাকে।
- একটি পর্যবেক্ষক নোড নামিয়ে নেওয়া কোরাম বা নেতা নির্বাচন করার ক্ষমতাকে প্রভাবিত করে না।
- সমস্ত ডেটা সেন্টারের সমস্ত ZooKeeper নোড জুড়ে কোরাম গণনা করা হয়।
- পূর্ববর্তী সার্ভারটি চালু হওয়ার পরে পরবর্তী সার্ভারে রক্ষণাবেক্ষণের সাথে এগিয়ে যান।
- ZooKeeper নোড পরিদর্শন করতে
nc
কমান্ড ব্যবহার করুন।