
آپاچی کافکا یک پلتفرم توزیعشده است که برای مدیریت کارآمد حجم زیادی از داده های 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.targetAfter=network.target remote-fs.target[Service]Type=simpleUser=kafkaExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.propertiesExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.shRestart=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.service17770 /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شما پاسخی دریافت خواهید کرد که یک لینک ایجاد شده است:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.سپس این دستور را اجرا کنید:
sudo systemctl enable kafkaشما پاسخی دریافت خواهید کرد که یک لینک ایجاد شده است:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.در این مرحله شما خدمات کافکا و zookeeper را راه اندازی و فعال کردید. 
در این آموزش نحوه نصب آپاچی کافکا در اوبونتو 20.04 را توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.

                     
                               
            
            
