CentOS 7 به پایان عمر رسیده و راهنماهای قدیمی Kafka مبتنی بر ZooKeeper با نسل 4.x یکسان نیستند. این آموزش یک آزمایش تکگرهای Kafka 4.3.1 روی لینوکس پشتیبانیشده با Java 17 یا بالاتر میسازد. این محیط نه پایداری چندگرهای دارد و نه بدون تنظیم امنیت برای اینترنت مناسب است.
دریافت و آمادهسازی
فایل kafka_2.13-4.3.1.tgz را از صفحه رسمی Apache و همراه فایلهای بررسی اصالت همان انتشار بگیرید. پس از تطبیق checksum و امضا طبق راهنمای Apache، آن را در پوشه آزمایشی تازه باز کنید. با کاربر محدود کار کنید و مسیر داده عملیاتی را وارد این آزمایش نکنید.
java -version
tar -xzf kafka_2.13-4.3.1.tgz
cd kafka_2.13-4.3.1
آمادهسازی KRaft فقط برای نصب تازه
پیش از format، مسیر log.dirs در config/server.properties را بخوانید و مطمئن شوید متعلق به همین محیط خالی است. فرمتکردن بخشی از راهاندازی اولیه است، نه دستور تعمیر کلاستر یا اجرای تکراری روی داده موجود.
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
bin/kafka-storage.sh format --standalone -t "$KAFKA_CLUSTER_ID" -c config/server.properties
bin/kafka-server-start.sh config/server.properties
پورت broker و controller را در فایروال عمومی باز نکنید. listenerها باید با محدوده آزمایش و آدرسهای واقعی هماهنگ باشند؛ advertised.listeners اشتباه میتواند پس از اتصال اولیه هم ارتباط client را خراب کند.
ساخت topic و یک پیام نمونه
سرور را در ترمینال اول فعال نگه دارید. در ترمینال دوم و داخل پوشه Kafka اجرا کنید:
bin/kafka-topics.sh --create --topic demo-events --bootstrap-server localhost:9092
bin/kafka-topics.sh --describe --topic demo-events --bootstrap-server localhost:9092
bin/kafka-console-producer.sh --topic demo-events --bootstrap-server localhost:9092
یک خط متن غیرحساس بنویسید. در ترمینال سوم مصرفکننده را اجرا کنید؛ باید همان متن را ببینید.
bin/kafka-console-consumer.sh --topic demo-events --from-beginning --bootstrap-server localhost:9092
مرز این آزمایش با تولید
- تکگره و replication factor یک، تحمل خرابی واقعی ایجاد نمیکند.
- برای تولید، quorum، replication، ظرفیت دیسک، retention و بازیابی را طراحی کنید.
- TLS، احراز هویت و ACLها باید پیش از دسترسی شبکهای آماده باشند.
- نسخه Java، client و broker و مسیر ارتقای metadata باید با راهنمای همان انتشار سازگار باشند.
پایان آزمایش و عیبیابی
producer، consumer و سپس broker را با Ctrl+C متوقف کنید. پوشه داده را با دستور حذف عمومی پاک نکنید؛ ابتدا مسیر دقیق و بیارزشبودن داده را تأیید کنید. اگر پیام دیده نمیشود، topic، پورت، listener و لاگ broker را بررسی کنید. مهاجرت از ZooKeeper یا broker قدیمی پروژهای جداست و با همین format انجام نمیشود.
مطالعه مرتبط
منابع و مستندات
بازبینی محتوا و منابع: ۲۶ مهر ۱۴۰۵. دستورهای نمونه برای محیط مشخصشدهاند؛ پیش از استفاده روی سرویس عملیاتی، سازگاری محیط و نسخه پشتیبان را بررسی کنید.