آپاچی کافکا یک پلتفرم توزیعشده است که برای مدیریت کارآمد حجم زیادی از داده های Real time طراحی شده است. یک کلاستر کافکا بسیار مقیاس پذیر و مقاوم در برابر خطا است. همچنین در مقایسه با سایر توزیع ها پیام مانند ActiveMQ و RabbitMQ دارای توان عملیاتی بسیار بالاتری است. اگرچه عموماً به عنوان یک سیستم پیامرسانی (انتشار/اشتراک) استفاده میشود، بسیاری از سازمانها نیز از آن برای جمعآوری لاگ ها استفاده میکنند زیرا ذخیرهسازی دائمی برای پیامهای منتشر شده ارائه میدهد.
یک سیستم پیامرسانی به یک یا چند تولیدکننده اجازه میدهد پیامها را بدون در نظر گرفتن تعداد مصرفکنندگان یا نحوه پردازش پیامها منتشر کنند. مشتریان مشترک به طور خودکار در مورد به روز رسانی ها و ایجاد پیام های جدید مطلع می شوند. این سیستم کارآمدتر و مقیاسپذیرتر از سیستمهایی است که مشتریان به صورت دورهای نظرسنجی میکنند تا مشخص کنند آیا پیامهای جدید در دسترس هستند یا خیر.
در این آموزش، آپاچی کافکا 2.8.2 را روی اوبونتو 20.04 نصب و پیکربندی خواهید کرد.
پیش نیازها
-
یک سرور اوبونتو 20.04 با حداقل 4 گیگابایت رم و یک کاربر غیر روت با امتیازات sudo. نصب هایی با رم کمتر از 4 گیگابایت ممکن است باعث از کار افتادن سرویس کافکا شود. جهت خرید سرور مجازی با سیستم عامل ابونتو کلیک نمایید.
-
OpenJDK 11 روی سرور شما نصب شده باشد. کافکا به زبان جاوا نوشته شده است، بنابراین به JVM نیاز دارد.
مرحله 1 - ایجاد یک کاربر برای کافکا
از آنجایی که کافکا می تواند درخواست ها را از طریق شبکه انجام دهد، اولین قدم شما ایجاد یک کاربر اختصاصی برای این سرویس است. در صورتی که شخصی سرور کافکا را به خطر بیندازد، این آسیب به دستگاه اوبونتو شما را به حداقل می رساند. در این مرحله یک کاربر اختصاصی کافکا ایجاد خواهید کرد.
به عنوان کاربر sudo غیر روت وارد سرور خود شوید، سپس کاربری به نام کافکا ایجاد کنید:
sudo adduser kafka
برای تنظیم رمز عبور و ایجاد کاربر کافکا، دستورات را دنبال کنید.
سپس کاربر kafka را با دستور adduser به گروه sudo اضافه کنید. برای نصب وابستگی های کافکا به این امتیازات نیاز دارید:
sudo adduser kafka sudo
کاربر کافکا شما اکنون آماده است. با استفاده از su وارد حساب کافکا شوید:
su -l kafka
اکنون که یک کاربر خاص کافکا ایجاد کرده اید، آماده دانلود و استخراج باینری های کافکا هستید.
مرحله 2 - دانلود و استخراج باینری های کافکا
در این مرحله، باینری های کافکا را دانلود و در پوشه های اختصاصی در دایرکتوری اصلی کاربر کافکا خود extract می کنید. برای شروع، یک دایرکتوری در /home/kafka به نام Downloads ایجاد کنید تا دانلودهای شما ذخیره شود:
mkdir ~/Downloads
برای دانلود باینری های کافکا از curl استفاده کنید:
curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz
یک دایرکتوری به نام کافکا ایجاد کنید و به این دایرکتوری بروید. شما از این دایرکتوری به عنوان دایرکتوری پایه نصب کافکا استفاده خواهید کرد:
mkdir ~/kafka && cd ~/kafka
فایلی را که دانلود کرده اید با استفاده از دستور tar استخراج کنید:
tar -xvzf ~/Downloads/kafka.tgz --strip 1
شما --strip 1 را مشخص می کنید تا مطمئن شوید که محتوای آرشیو در خود ~/kafka/ استخراج می شود و نه در فهرست دیگری (مانند ~/kafka/kafka_2.13-2.8.2/).
اکنون که باینری ها را با موفقیت دانلود و استخراج کردید، می توانید پیکربندی سرور کافکا خود را شروع کنید.
مرحله 3 - پیکربندی سرور کافکا
topic کافکا دسته بندی، گروه یا نام فیدی است که پیامها را میتوان برای آن منتشر کرد. با این حال، کانفیگ پیشفرض کافکا به شما اجازه حذف یک topic را نمیدهد. برای اصلاح این مورد باید فایل پیکربندی را ویرایش کنید که در این مرحله این کار را انجام خواهید داد.
گزینه های پیکربندی کافکا در server.properties مشخص شده است. این فایل را با نانو یا ویرایشگر مورد علاقه خود باز کنید:
nano ~/kafka/config/server.properties
ابتدا تنظیماتی را اضافه کنید که به شما امکان می دهد topic های کافکا را حذف کنید. خط زیر را به پایین فایل اضافه کنید:
delete.topic.enable = true
دوم، با تغییر ویژگی log.dirs، دایرکتوریی را که لاگ های کافکا در آن ذخیره می شوند، تغییر می دهید. ویژگی log.dirs را پیدا کنید و مسیر موجود را با مسیر زیر جایگزین کنید:
log.dirs=/home/kafka/logs
ذخیره کنید و فایل را ببندید.
اکنون که کافکا را پیکربندی کردهاید، میتوانید فایلهای systemd unit را برای اجرا و فعال کردن سرور کافکا در هنگام راهاندازی ایجاد کنید.
مرحله 4 - ایجاد فایل های سیستمی واحد و راه اندازی سرور کافکا
در این قسمت فایل های systemd unit برای سرویس کافکا ایجاد می کنید. این فایلها به شما کمک میکنند تا اقدامات معمول سرویس مانند راهاندازی، توقف و راهاندازی مجدد کافکا را مطابق با سایر سرویسهای لینوکس انجام دهید.
کافکا از Zookeeper برای مدیریت وضعیت کلاستر و تنظیمات خود استفاده می کند. این ابزار در بسیاری از سیستمهای توزیعشده استفاده میشود، و میتوانید در اسناد رسمی Zookeeper اطلاعات بیشتری درباره این ابزار بخوانید. با این فایل های unit از Zookeper به عنوان یک سرویس استفاده خواهید کرد.
فایل واحد را برای zookeeper ایجاد کنید:
sudo nano /etc/systemd/system/zookeeper.service
تعریف unit زیر را در فایل وارد کنید:
[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 systemctl start kafka
برای اطمینان از اینکه سرور با موفقیت راه اندازی شده است، لاگ های مجله را برای unit کافکا بررسی کنید:
sudo systemctl status kafka
خروجی را به صورت زیر دریافت خواهید کرد:
Output
kafka.service ●
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset>
Active: active (running) since Wed 2023-02-01 23:44:12 UTC; 4s ago
Main PID: 17770 (sh)
Tasks: 69 (limit: 4677)
Memory: 321.9M
CGroup: /system.slice/kafka.service
17770 /bin/sh -c /home/kafka/kafka/bin/kafka-server-start.sh /ho> ├─
17793 java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMill> └─
شما اکنون یک سرور کافکا دارید که روی پورت 9092 گوش می دهد، که پورت پیش فرضی است که سرور کافکا از آن استفاده می کند.
شما سرویس کافکا را راه اندازی کرده اید. اما اگر سرور خود را مجددا راه اندازی کنید، کافکا به طور خودکار راه اندازی مجدد نمی شود. برای فعال کردن سرویس کافکا در بوت سرور، دستور زیر را اجرا کنید:
sudo systemctl enable zookeeper
شما پاسخی دریافت خواهید کرد که یک لینک ایجاد شده است:
Output
Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.
سپس این دستور را اجرا کنید:
sudo systemctl enable kafka
شما پاسخی دریافت خواهید کرد که یک لینک ایجاد شده است:
Output
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.
در این مرحله شما خدمات کافکا و zookeeper را راه اندازی و فعال کردید.
در این آموزش نحوه نصب آپاچی کافکا در اوبونتو 20.04 را توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.