অ্যাপাচি কাফকা একটি ডিস্ট্রিবিউটেড স্ট্রিমিং প্ল্যাটফর্ম হিসেবে কাজ করে, এবং তার কার্যক্ষমতা সঠিকভাবে বজায় রাখার জন্য ZooKeeper একটি অপরিহার্য উপাদান। যদিও আধুনিক কাফকা ভার্সনে ZooKeeper ছাড়া কাজ করার প্রচেষ্টা হচ্ছে, কিন্তু এখনও অধিকাংশ কাফকা ক্লাস্টার ZooKeeper ব্যবহার করে। একাধিক ZooKeeper Node দিয়ে একটি ZooKeeper Ensemble তৈরি করা হয়, যা কাফকা ব্রোকারের জন্য হাই অ্যাভেইলেবিলিটি এবং ফোল্ট টলারেন্স নিশ্চিত করে।
এখানে আমরা আলোচনা করব কিভাবে ZooKeeper Ensemble তৈরি এবং কনফিগার করা যায়, এবং কিভাবে এটি কাফকা ক্লাস্টারের জন্য কাজ করে।
১. ZooKeeper Ensemble কী?
ZooKeeper Ensemble হল ZooKeeper সার্ভারের একটি সেট, যা একে অপরের সাথে সংযুক্ত থাকে এবং একটি ডিস্ট্রিবিউটেড সার্ভিস প্রদান করে। এটি একটি ফল্ট টলারেন্ট সিস্টেম, যেখানে একাধিক ZooKeeper নোড একসাথে কাজ করে। যদি কোনও একটি নোড ডাউন হয়ে যায়, অন্য নোডগুলো কাজ চালিয়ে যায় এবং সিস্টেমের সার্বিক কার্যক্ষমতা প্রভাবিত হয় না।
ZooKeeper Ensemble তৈরি করতে হলে, কমপক্ষে তিনটি ZooKeeper সার্ভার থাকতে হবে। এটি ব্যবহৃত হয় যাতে কনসেন্সাস মেকানিজম নিশ্চিত করা যায় এবং ডেটার কোনো ক্ষতি না হয়।
২. ZooKeeper Ensemble তৈরি এবং কনফিগারেশন
ZooKeeper Ensemble তৈরি করার জন্য আপনাকে কমপক্ষে তিনটি সার্ভার (যেমন ZooKeeper nodes) প্রস্তুত করতে হবে। এই সার্ভারগুলির মধ্যে কমিউনিকেশন এবং ডেটা সিঙ্ক্রোনাইজেশনের জন্য কিছু কনফিগারেশন করতে হবে।
ZooKeeper সার্ভার ইন্সটলেশন:
প্রথমে ZooKeeper ইন্সটল করতে হবে। আপনি Apache ZooKeeper অফিসিয়াল ওয়েবসাইট থেকে এটি ডাউনলোড এবং ইন্সটল করতে পারেন।
# Ubuntu/Debian:
sudo apt-get install zookeeperd
# CentOS/RHEL:
sudo yum install zookeeper
ZooKeeper Ensemble Configuration:
ZooKeeper Ensemble কনফিগারেশন শুরু করতে হবে zoo.cfg ফাইলে। এই ফাইলটি সাধারণত /etc/zookeeper/conf অথবা /conf ডিরেক্টরিতে থাকে।
আপনার ZooKeeper Ensemble তৈরি করতে হলে, নিম্নলিখিত কনফিগারেশন সেটিংস অনুসরণ করতে হবে:
tickTime: এটি ZooKeeper নোডগুলির মধ্যে একটি সিঙ্ক্রোনাইজেশন টাইম আউট নির্ধারণ করে।dataDir: ZooKeeper ডেটা সংরক্ষণের লোকেশন।clientPort: ক্লায়েন্ট সংযোগের জন্য ব্যবহার করা পোর্ট।initLimit: একটি সিঙ্ক্রোনাইজেশন পর্যায়ের জন্য প্রাথমিক লিমিট।syncLimit: সদস্য নোডগুলির মধ্যে সিঙ্ক্রোনাইজেশন লিমিট।server.X: X হচ্ছে নোডের ইনডেক্স এবংserver.Xলাইনে প্রতিটি নোডের হোস্টনেম এবং পোর্ট নির্ধারণ করতে হয়।
উদাহরণ কনফিগারেশন:
ধরা যাক, আমাদের তিনটি ZooKeeper নোড রয়েছে। আপনি তাদের কনফিগারেশন ফাইলে নীচের মতো সেট করবেন:
zoo.cfg কনফিগারেশন (এটি সব নোডে একইভাবে কনফিগার করুন):
# ZooKeeper config
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
# Define ensemble members (3 ZooKeeper nodes)
server.1=zookeeper-node1:2888:3888
server.2=zookeeper-node2:2888:3888
server.3=zookeeper-node3:2888:3888
এখানে:
- server.1, server.2, এবং server.3 হল ৩টি ZooKeeper নোড।
- 2888 এবং 3888 পোর্টগুলি election এবং leader-follower communication এর জন্য ব্যবহৃত হয়।
- clientPort হল সেই পোর্ট যার মাধ্যমে কাফকা ব্রোকার ZooKeeper সার্ভারে সংযুক্ত হয়।
৩. ZooKeeper নোড স্টার্ট করা
প্রতিটি ZooKeeper নোডে zoo.cfg কনফিগারেশন ফাইল তৈরি এবং সেভ করার পর, ZooKeeper সার্ভারগুলো শুরু করতে হবে।
ZooKeeper নোড চালানোর জন্য নীচের কমান্ড ব্যবহার করুন:
# ZooKeeper নোড শুরু করুন
zkServer.sh start
এটি সমস্ত নোডের জন্য আলাদাভাবে চালাতে হবে। একবার সব নোড চালু হলে, আপনি ZooKeeper Ensemble তৈরি করতে পারবেন।
৪. Kafka Configuration with ZooKeeper Ensemble
ZooKeeper Ensemble চালু হওয়ার পর, Kafka ব্রোকারগুলিকে ZooKeeper Ensemble এর সাথে সংযুক্ত করতে হবে। Kafka কনফিগারেশনে zookeeper.connect প্যারামিটারটি ব্যবহার করে আপনার ZooKeeper Ensemble এর নোডগুলির ঠিকানা দিতে হবে।
Kafka Configuration for ZooKeeper Ensemble:
Kafka ব্রোকারের কনফিগারেশন ফাইল server.properties এ zookeeper.connect প্যারামিটারটি সংশোধন করুন:
# Kafka Configuration
zookeeper.connect=zookeeper-node1:2181,zookeeper-node2:2181,zookeeper-node3:2181
broker.id=1
listeners=PLAINTEXT://localhost:9092
log.dirs=/tmp/kafka-logs
এখানে:
- zookeeper.connect প্যারামিটার দিয়ে তিনটি ZooKeeper নোডের ঠিকানা দেওয়া হয়েছে, যেখানে পোর্ট 2181 হল ZooKeeper ক্লায়েন্ট পোর্ট।
- broker.id: একাধিক Kafka ব্রোকারের জন্য ইউনিক ID হতে হবে।
৫. Kafka ব্রোকার চালানো
ZooKeeper Ensemble কনফিগারেশনের সাথে Kafka ব্রোকার চালানোর জন্য:
# Kafka ব্রোকার শুরু করুন
bin/kafka-server-start.sh config/server.properties
একাধিক ব্রোকার চালানোর জন্য, প্রতিটি ব্রোকারের জন্য আলাদা server.properties কনফিগারেশন ফাইল তৈরি করুন এবং সেগুলোর সাথে সংশ্লিষ্ট ZooKeeper Ensemble ব্যবহার করুন।
৬. ZooKeeper Ensemble-এর স্বাস্থ্য পর্যবেক্ষণ
ZooKeeper Ensemble এর স্বাস্থ্য পর্যবেক্ষণ করতে zkCli.sh ক্লায়েন্ট ব্যবহার করা যেতে পারে। এটি একটি কমান্ড-লাইন টুল যা ZooKeeper সার্ভারের সাথে যোগাযোগ করে এবং নোডগুলির অবস্থান দেখতে সাহায্য করে।
# ZooKeeper ক্লায়েন্ট শেল চালান
bin/zkCli.sh -server zookeeper-node1:2181
এটি ZooKeeper Ensemble এর সাথে সংযোগ স্থাপন করবে এবং আপনি ls / বা status এর মতো কমান্ড দিয়ে Ensemble-এর স্বাস্থ্য পরীক্ষা করতে পারবেন।
সারাংশ
ZooKeeper Ensemble তৈরি করা হলে, এটি কাফকা ক্লাস্টারের জন্য একটি ফোল্ট-টলারেন্ট সিস্টেম প্রদান করে, যেখানে একাধিক ZooKeeper সার্ভার একে অপরের সাথে যোগাযোগ করে এবং সিস্টেমের প্রতিটি ব্রোকারের জন্য অবিচ্ছিন্ন পরিষেবা নিশ্চিত করে। তিনটি ZooKeeper সার্ভার দিয়ে একটি Ensemble তৈরি করা যেতে পারে এবং এর মাধ্যমে কাফকা ব্রোকারগুলির জন্য নোড সিঙ্ক্রোনাইজেশন এবং ফোল্ট টলারেন্স সুবিধা পাওয়া যায়। ZooKeeper Ensemble সঠিকভাবে কনফিগার ও পরিচালনা করলে কাফকা ক্লাস্টারের স্থিতিশীলতা এবং কর্মক্ষমতা নিশ্চিত হয়।
Read more