Како да инсталирате Apache Kafka на Ubuntu 20.04


Авторот ја избра програмата Пишувај за донации.

Вовед

RabbitMQ. Иако генерално се користи како систем за објавување/претплати за пораки, многу организации го користат и за собирање на дневници бидејќи нуди постојано складирање за објавените пораки.

Системот за пораки за објавување/претплати им овозможува на еден или повеќе производители да објавуваат пораки без да го земат предвид бројот на потрошувачи или како ќе ги обработат пораките. Претплатените клиенти автоматски се известуваат за ажурирањата и создавањето нови пораки. Овој систем е поефикасен и поскалабилен од системите каде што клиентите периодично анкетираат за да утврдат дали се достапни нови пораки.

Во ова упатство, ќе инсталирате и конфигурирате Apache Kafka 2.8.2 на Ubuntu 20.04.

Предуслови

За да го следите, ќе ви требаат:

  • Водич за почетно поставување на серверот ако немате поставено корисник без корен. Инсталации со помалку од 4 GB RAM може да предизвикаат откажување на услугата Кафка.
  • Како да инсталирате Java со APT на Ubuntu 20.04. Кафка е напишана во Јава, затоа бара JVM.

Чекор 1 - Создавање корисник за Кафка

Бидејќи Кафка може да се справи со барањата преку мрежа, вашиот прв чекор е да создадете посветен корисник за услугата. Ова ја минимизира штетата на вашата Ubuntu машина во случај некој да го компромитира серверот Кафка. Во овој чекор ќе создадете посветен корисник kafka.

Најавете се на вашиот сервер како ваш не-root корисник sudo, а потоа креирајте корисник наречен kafka:

  1. sudo adduser kafka

Следете ги инструкциите за да поставите лозинка и да го креирате корисникот kafka.

Следно, додадете го корисникот kafka во групата sudo со командата adduser. Потребни ви се овие привилегии за да ги инсталирате зависностите на Кафка:

  1. sudo adduser kafka sudo

Вашиот корисник kafka сега е подготвен. Најавете се на сметката kafka користејќи su:

  1. su -l kafka

Сега кога сте создале корисник специфичен за Кафка, подготвени сте да ги преземете и извлечете бинарните датотеки на Кафка.

Чекор 2 — Преземање и вадење на бинарните датотеки на Кафка

Во овој чекор, ќе ги преземете и извлечете бинарните датотеки на Кафка во посветени папки во домашниот директориум на корисникот kafka.

За почеток, креирајте директориум во /home/kafka наречен Преземања за да ги зачувате вашите преземања:

  1. mkdir ~/Downloads

Користете curl за да ги преземете бинарните датотеки на Кафка:

  1. curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz

Направете директориум наречен kafka и преместете се во овој директориум. Овој директориум ќе го користите како основен директориум на инсталацијата на Кафка:

  1. mkdir ~/kafka && cd ~/kafka

Извлечете ја архивата што сте ја презеле со помош на командата tar:

  1. tar -xvzf ~/Downloads/kafka.tgz --strip 1

Го одредувате знамето --strip 1 за да се осигурате дека содржината на архивата е извлечена во самиот ~/kafka/, а не во друг директориум (како што е ~/kafka /kafka_2.13-2.8.2/) внатре во неа.

Сега кога успешно ги преземавте и извлечете бинарните датотеки, можете да започнете со конфигурирање на вашиот сервер Кафка.

Чекор 3 — Конфигурирање на серверот Кафка

Кафка тема е категоријата, групата или името на доводот на кои пораките може да се објавуваат. Сепак, стандардното однесување на Кафка нема да ви дозволи да избришете тема. За да го измените ова, мора да ја уредите конфигурациската датотека, што ќе го направите во овој чекор.

Опциите за конфигурација на Кафка се наведени во server.properties. Отворете ја оваа датотека со nano или вашиот омилен уредувач:

  1. nano ~/kafka/config/server.properties

Прво, додајте поставка што ќе ви овозможи да ги избришете темите за Кафка. Додадете ја следнава линија на дното на датотеката:

delete.topic.enable = true

Второ, ќе го промените директориумот каде што се чуваат дневниците на Кафка со менување на својството log.dirs. Најдете го својството log.dirs и заменете ја постоечката рута со означената рута:

log.dirs=/home/kafka/logs

Зачувајте ја и затворете ја датотеката.

Сега кога го конфигуриравте Кафка, можете да креирате датотеки со единица systemd за стартување и овозможување на серверот Кафка при стартување.

Чекор 4 - Создавање системски Unit-датотеки и стартување на серверот Кафка

Во овој дел, ќе креирате единечни датотеки системски за услугата Кафка. Овие датотеки ќе ви помогнат да ги извршувате заедничките сервисни дејства како што се стартување, запирање и рестартирање на Кафка на начин што е во согласност со другите услуги на Linux.

Кафка користи официјални документи на Zookeeper. Ќе го користите Zookeper како услуга со овие датотеки на единицата.

Создајте ја единицата датотека за zookeeper:

  1. sudo nano /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 бара вмрежување и датотечниот систем да бидат подготвени пред да може да започне.

Секцијата [Услуга] одредува дека systemd треба да ги користи zookeeper-server-start.sh и zookeeper-server-stop.sh школка датотеки за стартување и запирање на услугата. Исто така, назначува дека Zookeeper треба да се рестартира ако излезе ненормално.

Откако ќе ја додадете оваа содржина, зачувајте ја и затворете ја датотеката.

Следно, креирајте ја датотеката за услугата systemd за kafka:

  1. sudo nano /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 ќе започне автоматски кога започнува услугата kafka.

Секцијата [Услуга] одредува дека systemd треба да ги користи kafka-server-start.sh и kafka-server-stop.sh школка датотеки за стартување и запирање на услугата. Исто така, прецизира дека Кафка треба да се рестартира ако излезе ненормално.

Зачувајте ја и затворете ја датотеката.

Сега кога ги дефиниравте единиците, стартувајте го Кафка со следнава команда:

  1. sudo systemctl start kafka

За да се уверите дека серверот е успешно стартуван, проверете ги дневниците на дневниците за единицата kafka:

  1. 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, што е стандардната порта што ја користи серверот Кафка.

Ја започнавте услугата kafka. Но, ако го рестартирате вашиот сервер, Кафка нема автоматски да се рестартира. За да ја овозможите услугата kafka при подигање на серверот, извршете ја следнава команда:

  1. sudo systemctl enable zookeeper

Ќе добиете одговор дека е создадена симврска:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.

Потоа извршете ја оваа команда:

  1. sudo systemctl enable kafka

Ќе добиете одговор дека е создадена симврска:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.

Во овој чекор, ги започнавте и овозможивте услугите kafka и zookeeper. Во следниот чекор, ќе ја проверите инсталацијата на Кафка.

Чекор 5 - Тестирање на инсталацијата на Кафка

Во овој чекор, ќе ја тестирате вашата инсталација на Кафка. Ќе објавите и консумирате порака Здраво свет за да бидете сигурни дека серверот Кафка се однесува како што се очекува.

Објавувањето пораки во Кафка бара:

  • продуцент, кој овозможува објавување записи и податоци за теми.
  • потрошувач, кој чита пораки и податоци од теми.

За почеток, креирајте тема со име TutorialTopic:

  1. ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic

Можете да креирате продуцент од командната линија користејќи ја скриптата kafka-console-producer.sh. Очекува името на домаќинот на серверот Кафка, порта и тема како аргументи.

Ќе добиете одговор дека темата е креирана:

Output
Created topic TutorialTopic.

Сега објави ја низата „Здраво, свето“ на темата TutorialTopic:

  1. echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Следно, креирајте потрошувач на Кафка користејќи ја скриптата kafka-console-consumer.sh. Очекува името на домаќинот и портата на серверот ZooKeeper, заедно со името на темата, како аргументи. Следнава команда ги троши пораките од TutorialTopic. Забележете ја употребата на знаменцето --from-beginning, кое овозможува трошење на пораките што биле објавени пред да започне потрошувачот:

  1. ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning

Ако нема проблеми со конфигурацијата, ќе добиете одговор Здраво, свето во вашиот терминал:

Output
Hello, World

Скриптата ќе продолжи да работи, чекајќи да се објават повеќе пораки. За да го тестирате ова, отворете нов терминален прозорец и најавете се на вашиот сервер. Запомнете да се најавите како ваш корисник kafka:

  1. su -l kafka

Во овој нов терминал, започнете продуцент да објави втора порака:

  1. echo "Hello World from Sammy at DigitalOcean!" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Оваа порака ќе се вчита во излезот на потрошувачот во вашиот оригинален терминал:

Output
Hello, World Hello World from Sammy at DigitalOcean!

Кога ќе завршите со тестирањето, притиснете CTRL+C за да ја запрете скриптата за потрошувачи во вашиот оригинален терминал.

Сега имате инсталирано и конфигурирано сервер на Кафка на Ubuntu 20.04. Во следниот чекор, ќе извршите неколку брзи задачи за да ја зацврстите безбедноста на вашиот сервер Кафка.

Чекор 6 - Стврднување на серверот Кафка

Откако ќе заврши инсталацијата, можете да ги отстраните административните привилегии на корисникот kafka и да го зацврстите серверот Кафка.

Пред да го направите тоа, одјавете се и повторно најавете се како кој било друг корисник sudo што не е root. Ако сè уште ја извршувате истата сесија на школка со која сте го започнале ова упатство, напишете излез.

Отстранете го корисникот kafka од групата sudo:

  1. sudo deluser kafka sudo

За дополнително да ја подобрите безбедноста на вашиот сервер Кафка, заклучете ја лозинката на корисникот kafka користејќи ја командата passwd. Оваа акција осигурува дека никој не може директно да се најави на серверот користејќи ја оваа сметка:

  1. sudo passwd kafka -l

Знамето -l ја заклучува командата за промена на лозинката на корисникот (passwd).

Во овој момент, само корисникот root или sudo може да се најави како kafka со следнава команда:

  1. sudo su - kafka

Во иднина, ако сакате да ја отклучите можноста за промена на лозинката, користете passwd со опцијата -u:

  1. sudo passwd kafka -u

Сега успешно ги ограничивте административните привилегии на корисникот kafka. Подготвени сте да започнете да го користите Кафка. Опционално можете да го следите следниот чекор, кој ќе го додаде KafkaT во вашиот систем.

Чекор 7 - Инсталирање на KafkaT (опционално)

KafkaT е развиен за да ја подобри вашата способност да гледате детали за вашиот кластер Кафка и да извршувате одредени административни задачи од командната линија. Бидејќи е скапоцен камен од Руби, ќе ви треба Руби за да го користите. Ќе ви треба и пакетот build-essential за да ги изградите другите скапоцени камења од кои зависи KafkaT.

Инсталирајте го Ruby и пакетот build-essential користејќи apt:

  1. sudo apt install ruby ruby-dev build-essential

Сега можете да го инсталирате KafkaT со командата gem:

  1. sudo CFLAGS=-Wno-error=format-overflow gem install kafkat

Знамето за компилација Wno-error=format-overflow е потребно за да се потиснат предупредувањата и грешките на Zookeeper за време на процесот на инсталација на kafkat.

Кога ќе заврши инсталацијата, ќе добиете одговор дека е завршено:

Output
... Done installing documentation for json, colored, retryable, highline, trollop, zookeeper, zk, kafkat after 3 seconds 8 gems installed

KafkaT користи .kafkatcfg како конфигурациска датотека за да ги одреди директориумите за инсталација и дневници на вашиот сервер Кафка. Исто така, треба да има запис што укажува на KafkaT кон вашиот примерок на ZooKeeper.

Направете нова датотека наречена .kafkatcfg:

  1. nano ~/.kafkatcfg

Додајте ги следните редови за да ги одредите потребните информации за вашиот сервер Кафка и примерот на Zookeeper:

{
  "kafka_path": "~/kafka",
  "log_path": "/home/kafka/logs",
  "zk_path": "localhost:2181"
}

Зачувајте ја и затворете ја датотеката. Сега сте подготвени да користите KafkaT.

За да видите детали за сите партиции на Кафка, обидете се да ја извршите оваа команда:

  1. kafkat partitions

Ќе го добиете следниот излез:

Output
[DEPRECATION] The trollop gem has been renamed to optimist and will no longer be supported. Please switch to optimist as soon as possible. /var/lib/gems/2.7.0/gems/json-1.8.6/lib/json/common.rb:155: warning: Using the last argument as keyword parameters is deprecated ... Topic Partition Leader Replicas ISRs TutorialTopic 0 0 [0] [0] __consumer_offsets 0 0 [0] [0] ... ...

Излезот ќе вклучува TutorialTopic и __consumer_offsets, внатрешна тема што ја користи Кафка за складирање на информации поврзани со клиентот. Можете безбедно да ги игнорирате линиите што почнуваат со __consumer_offsets.

За да дознаете повеќе за KafkaT, погледнете го неговото складиште GitHub.

Заклучок

Сега имате Apache Kafka што работи безбедно на вашиот Ubuntu сервер. Можете да го интегрирате Кафка во вашиот омилен програмски јазик користејќи клиенти на Кафка.

За да дознаете повеќе за Кафка, можете да ја консултирате и неговата документација.