অ্যাপাচি কাফকা (Apache Kafka) একটি উচ্চ পারফরম্যান্স এবং স্কেলেবল স্ট্রিমিং প্ল্যাটফর্ম যা ডেটা স্ট্রিমিং এবং মেসেজিং সিস্টেম হিসেবে কাজ করে। কাফকা ক্লাস্টার একটি ডিস্ট্রিবিউটেড সিস্টেম, যেখানে একাধিক কাফকা ব্রোকার (broker) একটি সিস্টেমে একত্রিত হয়ে কাজ করে। ক্লাস্টার তৈরি করার মাধ্যমে কাফকা সিস্টেমের স্কেলেবিলিটি এবং ফোল্ট টলারেন্স (Fault Tolerance) বৃদ্ধি পায়।
এখানে আমরা Kafka Cluster তৈরি করার ধাপগুলো নিয়ে আলোচনা করবো।
১. কাফকা এবং জুকিপার (Zookeeper) ইনস্টলেশন
Kafka ক্লাস্টার কাজ করার জন্য Zookeeper সার্ভারের প্রয়োজন হয়। যদিও বর্তমানে কাফকা KRaft mode (Kafka Raft mode) সমর্থন করে, যেখানে Zookeeper প্রয়োজন হয় না, তবে এখানে আমরা Zookeeper ব্যবহার করে একটি সাধারণ কাফকা ক্লাস্টার কনফিগার করব।
Kafka এবং Zookeeper ইনস্টলেশন
- প্রথমে আপনার সিস্টেমে Kafka এবং Zookeeper ইনস্টল করতে হবে। আপনি নিচের ধাপগুলি অনুসরণ করতে পারেন:
Kafka ডাউনলোড করুন: কাফকা ডাউনলোড করার জন্য Kafka Download Page থেকে সর্বশেষ ভার্সনটি ডাউনলোড করুন।
wget https://downloads.apache.org/kafka/<version>/kafka_<scala_version>-<version>.tgz tar -xvzf kafka_<scala_version>-<version>.tgz cd kafka_<scala_version>-<version>- Zookeeper ডাউনলোড করুন (যদি Zookeeper ইনস্টল করা না থাকে): আপনি Zookeeper Download Page থেকে Zookeeper ডাউনলোড করে সেটআপ করতে পারেন।
২. Zookeeper কনফিগারেশন
যেহেতু কাফকা একটি ডিসট্রিবিউটেড সিস্টেম, এটি সঠিকভাবে কাজ করতে Zookeeper সার্ভারের সাহায্য নেয়। Zookeeper ব্রোকারদের মধ্যে কোঅর্ডিনেশন এবং ক্লাস্টারের অবস্থান ট্র্যাক করে।
Zookeeper কনফিগারেশন ফাইলটি খোলার জন্য নিচের কমান্ডটি ব্যবহার করুন:
vim config/zookeeper.propertiesকনফিগারেশন ফাইলে ডিফল্ট পোর্ট (2181) নিশ্চিত করুন, বা প্রয়োজন অনুযায়ী পরিবর্তন করুন।
clientPort=2181 dataDir=/var/lib/zookeeperZookeeper চালু করুন:
bin/zookeeper-server-start.sh config/zookeeper.properties
৩. Kafka ব্রোকার কনফিগারেশন
কাফকা ব্রোকারের কনফিগারেশন ফাইলটি server.properties এ সংরক্ষিত থাকে। এখানে আপনার কাফকা ব্রোকারের জন্য কয়েকটি গুরুত্বপূর্ণ কনফিগারেশন সেট করতে হবে।
কাফকা কনফিগারেশন ফাইলটি খুলুন:
vim config/server.propertiesনিম্নলিখিত কনফিগারেশন সেট করুন:
- broker.id: এইটি প্রতিটি কাফকা ব্রোকারের ইউনিক আইডি হবে। প্রথম ব্রোকারের জন্য এটি ১ হতে পারে, দ্বিতীয় ব্রোকারের জন্য ২ ইত্যাদি।
- listeners: কাফকা ব্রোকারটি কোথায় কানেক্ট হবে (পোর্ট 9092 সাধারণত ব্যবহৃত হয়)।
- zookeeper.connect: এখানে Zookeeper সার্ভারের ঠিকানা এবং পোর্ট উল্লেখ করতে হবে।
উদাহরণ:
broker.id=1 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181 log.dirs=/tmp/kafka-logs num.partitions=3কাফকা ব্রোকার চালু করুন:
bin/kafka-server-start.sh config/server.properties
৪. Kafka Cluster তৈরি করা
একটি কাফকা ক্লাস্টার তৈরি করার জন্য একাধিক কাফকা ব্রোকার চালাতে হবে। সাধারণত দুটি বা তার বেশি ব্রোকার ব্যবহার করা হয়, যাতে ক্লাস্টারটি স্কেলেবল এবং ফোল্ট-টলারেন্ট থাকে।
নতুন কাফকা ব্রোকার কনফিগারেশন
প্রথম ব্রোকার কনফিগার করার পর, দ্বিতীয় বা তৃতীয় ব্রোকার কনফিগারেশন ফাইলের broker.id এবং zookeeper.connect মান পরিবর্তন করুন। উদাহরণস্বরূপ:
Broker 1:
broker.id=1 listeners=PLAINTEXT://localhost:9092 zookeeper.connect=localhost:2181Broker 2:
broker.id=2 listeners=PLAINTEXT://localhost:9093 zookeeper.connect=localhost:2181Broker 3:
broker.id=3 listeners=PLAINTEXT://localhost:9094 zookeeper.connect=localhost:2181
ব্রোকার চালু করা
প্রতিটি ব্রোকারকে আলাদাভাবে চালু করতে হবে:
Broker 1:
bin/kafka-server-start.sh config/server-1.propertiesBroker 2:
bin/kafka-server-start.sh config/server-2.propertiesBroker 3:
bin/kafka-server-start.sh config/server-3.properties
এভাবে, আপনার কাফকা ক্লাস্টার তৈরি হবে, যেখানে তিনটি ব্রোকার যুক্ত থাকবে। এখন আপনি এই ক্লাস্টারে টপিক তৈরি করতে পারবেন এবং ডেটা পাঠাতে ও গ্রহণ করতে পারবেন।
৫. Kafka Cluster পরীক্ষা করা
ক্লাস্টার তৈরি করার পর, আপনি নিম্নলিখিত কমান্ডের মাধ্যমে কাফকা ক্লাস্টারের অবস্থা পরীক্ষা করতে পারেন:
bin/kafka-topics.sh --zookeeper localhost:2181 --list
এটি আপনার ক্লাস্টারে থাকা টপিকগুলো দেখাবে।
সারাংশ
অ্যাপাচি কাফকা ক্লাস্টার তৈরি করতে, আপনি প্রথমে Zookeeper সার্ভার এবং তারপর কাফকা ব্রোকার কনফিগার করতে হবে। একাধিক ব্রোকার ব্যবহার করার মাধ্যমে একটি কাফকা ক্লাস্টার তৈরি করা যায়, যা স্কেলেবল এবং ফোল্ট টলারেন্ট। এই ক্লাস্টারে আপনি বিভিন্ন টপিক তৈরি করতে পারবেন এবং ডেটা স্ট্রিমিংয়ের জন্য কাফকা ব্যবহৃত হবে।
Read more