آپاچی کافکا یک پلتفرم توزیعشده است که برای مدیریت کارآمد حجم زیادی از داده های Real time طراحی شده است. یک کلاستر کافکا بسیار مقیاس پذیر و مقاوم در برابر خطا است. همچنین در مقایسه با سایر توزیع ها پیام مانند ActiveMQ و RabbitMQ دارای توان عملیاتی بسیار بالاتری است. اگرچه عموماً به عنوان یک سیستم پیامرسانی (انتشار/اشتراک) استفاده میشود، بسیاری از سازمانها نیز از آن برای جمعآوری لاگ ها استفاده میکنند زیرا ذخیرهسازی دائمی برای پیامهای منتشر شده ارائه میدهد.
یک سیستم پیامرسانی به یک یا چند تولیدکننده اجازه میدهد پیامها را بدون در نظر گرفتن تعداد مصرفکنندگان یا نحوه پردازش پیامها منتشر کنند. مشتریان مشترک به طور خودکار در مورد به روز رسانی ها و ایجاد پیام های جدید مطلع می شوند. این سیستم کارآمدتر و مقیاسپذیرتر از سیستمهایی است که مشتریان به صورت دورهای نظرسنجی میکنند تا مشخص کنند آیا پیامهای جدید در دسترس هستند یا خیر.
در این آموزش، آپاچی کافکا را بر روی CentOS 7 نصب و استفاده خواهید کرد.
پیش نیازها
برای ادامه، شما نیاز دارید:
-
یک سرور CentOS 7 و یک کاربر غیر روت با امتیازات sudo. اگر کاربر غیر روت راه اندازی نکرده اید، میتوانید آموزش راه اندازی سرور اولیه با CentOS را مشاهده کنید.
-
حداقل 4 گیگابایت رم روی سرور. نصبهای بدون این مقدار RAM ممکن است باعث از کار افتادن سرویس کافکا شود، زیرا ماشین مجازی جاوا (JVM) در هنگام راهاندازی یک استثنای «Out Of Memory» ایجاد میکند.
-
OpenJDK 8 روی سرور شما نصب شده است.کافکا به زبان جاوا نوشته شده است، بنابراین به JVM نیاز دارد.
مرحله 1 - ایجاد یک کاربر برای کافکا
از آنجایی که کافکا می تواند درخواست ها را از طریق یک شبکه انجام دهد، باید یک کاربر اختصاصی برای آن ایجاد کنید. اگر سرور کافکا در معرض خطر قرار گیرد، این کار آسیب به دستگاه CentOS شما را به حداقل می رساند. ما در این مرحله یک کاربر اختصاصی کافکا ایجاد خواهیم کرد، اما شما باید پس از اتمام راهاندازی کافکا، یک کاربر غیر ریشهای متفاوت برای انجام کارهای دیگر در این سرور ایجاد کنید.
به عنوان کاربر sudo غیر روت خود وارد شده، و یک کاربری به نام kafka با دستور useradd ایجاد کنید:
sudo useradd kafka -m
-m تضمین می کند که یک دایرکتوری اصلی برای کاربر ایجاد می شود. این دایرکتوری، /home/kafka، به عنوان دایرکتوری فضای کاری ما برای اجرای دستورات در بخش های زیر عمل می کند.
رمز عبور را با استفاده از passwd تنظیم کنید:
sudo passwd kafka
کاربر kafka را با دستور adduser به گروه wheel اضافه کنید تا از امتیازات لازم برای نصب وابستگی های کافکا برخوردار باشد:
sudo usermod -aG wheel kafka
کاربر کافکا شما اکنون آماده است. با استفاده از su وارد این حساب شوید:
su -l kafka
اکنون که کاربر خاص کافکا را ایجاد کردیم، میتوانیم به دانلود و استخراج باینریهای کافکا برویم.
مرحله 2 - دانلود و استخراج باینری های کافکا
بیایید باینری های کافکا را در پوشه های اختصاصی در دایرکتوری اصلی کاربر کافکا دانلود و استخراج کنیم. برای شروع، یک دایرکتوری در /home/kafka به نام Downloads ایجاد کنید تا دانلودهای شما ذخیره شود:
mkdir ~/Downloads
برای دانلود باینری های کافکا از curl استفاده کنید:
curl "https://www.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz" -o ~/Downloads/kafka.tgz
یک دایرکتوری به نام کافکا ایجاد کنید و به این دایرکتوری تغییر دهید. این دایرکتوری پایه نصب کافکا خواهد بود:
mkdir ~/kafka && cd ~/kafka
فایلی را که دانلود کرده اید با استفاده از دستور tar استخراج کنید:
tar -xvzf ~/Downloads/kafka.tgz --strip 1
ما strip1 -- را مشخص می کنیم تا اطمینان حاصل کنیم که محتوای بایگانی در خود ~/kafka/ استخراج می شود و نه در دایرکتوری دیگری (مانند ~/kafka/kafka_2.11-2.1.1/).
اکنون که باینری ها را با موفقیت دانلود و استخراج کردیم، می توانیم به پیکربندی کافکا برویم.
مرحله 3 - پیکربندی سرور کافکا
رفتار پیشفرض کافکا به ما اجازه نمیدهد موضوع، دسته، گروه یا نام فیدی را که میتوان پیامها را برای آن منتشر کرد حذف کنیم. برای تغییر این رفتار، اجازه دهید فایل پیکربندی را ویرایش کنیم.
گزینه های پیکربندی کافکا در server.properties مشخص شده است. این فایل را با vi یا ویرایشگر مورد علاقه خود باز کنید:
vi ~/kafka/config/server.properties
بیایید تنظیماتی اضافه کنیم که به ما امکان می دهد topicهای کافکا را حذف کنیم. برای وارد کردن متن، i را فشار دهید و موارد زیر را به پایین فایل اضافه کنید:
delete.topic.enable = true
وقتی کارتان تمام شد، ESC را برای خروج از حالت وارد کردن و wq: را فشار دهید تا تغییرات را در فایل بنویسید و خارج شوید. اکنون که کافکا را پیکربندی کردیم، میتوانیم به ایجاد فایلهای واحد سیستم برای اجرا و فعال کردن آن در هنگام راهاندازی برویم.
مرحله 4 - ایجاد فایل های Systemd Unit و راه اندازی سرور کافکا
در این قسمت فایل های systemd unit برای سرویس کافکا ایجاد می کنیم. این به ما کمک میکند تا اقدامات معمول سرویس مانند راهاندازی، توقف و راهاندازی مجدد کافکا را مطابق با سایر سرویسهای لینوکس انجام دهیم. Zookeeper سرویسی است که کافکا برای مدیریت وضعیت کلاستر و پیکربندی های خود از آن استفاده می کند. معمولاً در بسیاری از سیستم های توزیع شده به عنوان یک جزء جدایی ناپذیر استفاده می شود.
فایل واحد را برای zookeeper ایجاد کنید:
sudo vi /etc/systemd/system/zookeeper.service
تعاریف واحد زیر را در فایل وارد کنید:
[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=kafka
ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties
ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
بخش [unit] مشخص میکند که Zookeeper باید قبل از شروع به کار، شبکه و سیستم فایل آماده باشد.
بخش [Service] مشخص می کند که systemd باید از فایل های شل zookeeper-server-start.sh و zookeeper-server-stop.sh برای شروع و توقف سرویس استفاده کند. همچنین مشخص می کند که Zookeeper در صورت خروج غیرعادی باید به طور خودکار راه اندازی مجدد شود.
پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. بعد، فایل سرویس systemd را برای کافکا ایجاد کنید:
sudo vi /etc/systemd/system/kafka.service
تعاریف واحد زیر را در فایل وارد کنید:
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1
ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
بخش [Unit] مشخص می کند که این فایل واحد به zookeeper.service بستگی دارد. و اطمینان حاصل می کند که با شروع سرویس کافا، zookeeper به طور خودکار شروع به کار می کند.
بخش [Service] مشخص می کند که systemd باید از فایل های شل kafka-server-start.sh و kafka-server-stop.sh برای شروع و توقف سرویس استفاده کند. همچنین مشخص می کند که در صورت خروج غیرعادی کافکا باید به طور خودکار راه اندازی مجدد شود.
پس از اتمام ویرایش فایل را ذخیره کرده و ببندید. اکنون که واحدها تعریف شده اند، کافکا را با دستور زیر شروع کنید:
sudo systemctl start kafka
برای اطمینان از اینکه سرور با موفقیت راه اندازی شده است، لاگ ها را برای واحد کافکا بررسی کنید:
journalctl -u kafka
شما باید خروجی مشابه زیر را ببینید:
Output
.Jul 17 18:38:59 kafka-centos systemd[1]: Started kafka.service
شما اکنون یک سرور کافکا دارید که در پورت 9092 گوش می دهد. در حالی که ما سرویس کافکا را راه اندازی کرده ایم، اگر بخواهیم سرور خود را مجددا راه اندازی کنیم، به طور خودکار راه اندازی نمی شود. برای فعال کردن کافکا در بوت سرور، اجرا کنید:
sudo systemctl enable kafka
در این مرحله شما خدمات کافکا و zookeeper را راه اندازی و فعال کردید.
در این آموزش نحوه نصب آپاچی کافکا در CentOS 7 را توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
آموزش های مرتبط:
آموزش نصب MariaDB بر روی ابونتو
آموزش نصب و کانفیگ Nginx بر روی Ubuntu
چگونه یک مخزن پکیج به دبیان، اوبونتو اضافه کنیم
آموزش نحوه نصب و پیکربندی UFW در Ubuntu
نصب جنگو بر روی Centos 7
طریقه نصب ionCube بر روی CentOS
نصب مونگو دی بی بر روی CetnoOS