Како да инсталирате 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
:
- sudo adduser kafka
Следете ги инструкциите за да поставите лозинка и да го креирате корисникот kafka
.
Следно, додадете го корисникот kafka
во групата sudo
со командата adduser
. Потребни ви се овие привилегии за да ги инсталирате зависностите на Кафка:
- sudo adduser kafka sudo
Вашиот корисник kafka
сега е подготвен. Најавете се на сметката kafka
користејќи su
:
- su -l kafka
Сега кога сте создале корисник специфичен за Кафка, подготвени сте да ги преземете и извлечете бинарните датотеки на Кафка.
Чекор 2 — Преземање и вадење на бинарните датотеки на Кафка
Во овој чекор, ќе ги преземете и извлечете бинарните датотеки на Кафка во посветени папки во домашниот директориум на корисникот kafka
.
За почеток, креирајте директориум во /home/kafka
наречен Преземања
за да ги зачувате вашите преземања:
- mkdir ~/Downloads
Користете curl
за да ги преземете бинарните датотеки на Кафка:
- curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz
Направете директориум наречен kafka
и преместете се во овој директориум. Овој директориум ќе го користите како основен директориум на инсталацијата на Кафка:
- mkdir ~/kafka && cd ~/kafka
Извлечете ја архивата што сте ја презеле со помош на командата tar
:
- tar -xvzf ~/Downloads/kafka.tgz --strip 1
Го одредувате знамето --strip 1
за да се осигурате дека содржината на архивата е извлечена во самиот ~/kafka/
, а не во друг директориум (како што е ~/kafka /kafka_2.13-2.8.2/
) внатре во неа.
Сега кога успешно ги преземавте и извлечете бинарните датотеки, можете да започнете со конфигурирање на вашиот сервер Кафка.
Чекор 3 — Конфигурирање на серверот Кафка
Кафка тема е категоријата, групата или името на доводот на кои пораките може да се објавуваат. Сепак, стандардното однесување на Кафка нема да ви дозволи да избришете тема. За да го измените ова, мора да ја уредите конфигурациската датотека, што ќе го направите во овој чекор.
Опциите за конфигурација на Кафка се наведени во server.properties
. Отворете ја оваа датотека со nano
или вашиот омилен уредувач:
- 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
:
- 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
:
- 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
школка датотеки за стартување и запирање на услугата. Исто така, прецизира дека Кафка треба да се рестартира ако излезе ненормално.
Зачувајте ја и затворете ја датотеката.
Сега кога ги дефиниравте единиците, стартувајте го Кафка со следнава команда:
- sudo systemctl start kafka
За да се уверите дека серверот е успешно стартуван, проверете ги дневниците на дневниците за единицата kafka
:
- 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
при подигање на серверот, извршете ја следнава команда:
- 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.
Во овој чекор, ги започнавте и овозможивте услугите kafka
и zookeeper
. Во следниот чекор, ќе ја проверите инсталацијата на Кафка.
Чекор 5 - Тестирање на инсталацијата на Кафка
Во овој чекор, ќе ја тестирате вашата инсталација на Кафка. Ќе објавите и консумирате порака Здраво свет за да бидете сигурни дека серверот Кафка се однесува како што се очекува.
Објавувањето пораки во Кафка бара:
- продуцент, кој овозможува објавување записи и податоци за теми.
- потрошувач, кој чита пораки и податоци од теми.
За почеток, креирајте тема со име TutorialTopic
:
- ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic
Можете да креирате продуцент од командната линија користејќи ја скриптата kafka-console-producer.sh
. Очекува името на домаќинот на серверот Кафка, порта и тема како аргументи.
Ќе добиете одговор дека темата е креирана:
OutputCreated topic TutorialTopic.
Сега објави ја низата „Здраво, свето“
на темата TutorialTopic
:
- 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
, кое овозможува трошење на пораките што биле објавени пред да започне потрошувачот:
- ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning
Ако нема проблеми со конфигурацијата, ќе добиете одговор Здраво, свето
во вашиот терминал:
OutputHello, World
Скриптата ќе продолжи да работи, чекајќи да се објават повеќе пораки. За да го тестирате ова, отворете нов терминален прозорец и најавете се на вашиот сервер. Запомнете да се најавите како ваш корисник kafka
:
- su -l kafka
Во овој нов терминал, започнете продуцент да објави втора порака:
- echo "Hello World from Sammy at DigitalOcean!" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
Оваа порака ќе се вчита во излезот на потрошувачот во вашиот оригинален терминал:
OutputHello, World
Hello World from Sammy at DigitalOcean!
Кога ќе завршите со тестирањето, притиснете CTRL+C
за да ја запрете скриптата за потрошувачи во вашиот оригинален терминал.
Сега имате инсталирано и конфигурирано сервер на Кафка на Ubuntu 20.04. Во следниот чекор, ќе извршите неколку брзи задачи за да ја зацврстите безбедноста на вашиот сервер Кафка.
Чекор 6 - Стврднување на серверот Кафка
Откако ќе заврши инсталацијата, можете да ги отстраните административните привилегии на корисникот kafka
и да го зацврстите серверот Кафка.
Пред да го направите тоа, одјавете се и повторно најавете се како кој било друг корисник sudo
што не е root. Ако сè уште ја извршувате истата сесија на школка со која сте го започнале ова упатство, напишете излез
.
Отстранете го корисникот kafka
од групата sudo:
- sudo deluser kafka sudo
За дополнително да ја подобрите безбедноста на вашиот сервер Кафка, заклучете ја лозинката на корисникот kafka
користејќи ја командата passwd
. Оваа акција осигурува дека никој не може директно да се најави на серверот користејќи ја оваа сметка:
- sudo passwd kafka -l
Знамето -l
ја заклучува командата за промена на лозинката на корисникот (passwd
).
Во овој момент, само корисникот root
или sudo
може да се најави како kafka
со следнава команда:
- sudo su - kafka
Во иднина, ако сакате да ја отклучите можноста за промена на лозинката, користете passwd
со опцијата -u
:
- sudo passwd kafka -u
Сега успешно ги ограничивте административните привилегии на корисникот kafka
. Подготвени сте да започнете да го користите Кафка. Опционално можете да го следите следниот чекор, кој ќе го додаде KafkaT во вашиот систем.
Чекор 7 - Инсталирање на KafkaT (опционално)
KafkaT е развиен за да ја подобри вашата способност да гледате детали за вашиот кластер Кафка и да извршувате одредени административни задачи од командната линија. Бидејќи е скапоцен камен од Руби, ќе ви треба Руби за да го користите. Ќе ви треба и пакетот build-essential
за да ги изградите другите скапоцени камења од кои зависи KafkaT
.
Инсталирајте го Ruby и пакетот build-essential
користејќи apt
:
- sudo apt install ruby ruby-dev build-essential
Сега можете да го инсталирате KafkaT со командата gem
:
- 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
:
- nano ~/.kafkatcfg
Додајте ги следните редови за да ги одредите потребните информации за вашиот сервер Кафка и примерот на Zookeeper:
{
"kafka_path": "~/kafka",
"log_path": "/home/kafka/logs",
"zk_path": "localhost:2181"
}
Зачувајте ја и затворете ја датотеката. Сега сте подготвени да користите KafkaT.
За да видите детали за сите партиции на Кафка, обидете се да ја извршите оваа команда:
- 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 сервер. Можете да го интегрирате Кафка во вашиот омилен програмски јазик користејќи клиенти на Кафка.
За да дознаете повеќе за Кафка, можете да ја консултирате и неговата документација.