Si të instaloni Apache Kafka në Ubuntu 20.04
Autori zgjodhi programin Shkruaj për Dhurime.
Prezantimi
RabbitMQ. Megjithëse përdoret përgjithësisht si një sistem mesazhesh publikoni/pajtohuni, shumë organizata e përdorin gjithashtu për grumbullimin e regjistrave sepse ofron ruajtje të vazhdueshme për mesazhet e publikuara.
Një sistem mesazhesh publikimi/pajtimi lejon një ose më shumë prodhues të publikojnë mesazhe pa marrë parasysh numrin e konsumatorëve ose mënyrën se si ata do t'i përpunojnë mesazhet. Klientët e abonuar njoftohen automatikisht për përditësimet dhe krijimin e mesazheve të reja. Ky sistem është më efikas dhe më i shkallëzueshëm sesa sistemet ku klientët anketojnë periodikisht për të përcaktuar nëse mesazhet e reja janë të disponueshme.
Në këtë tutorial, ju do të instaloni dhe konfiguroni Apache Kafka 2.8.2 në Ubuntu 20.04.
Parakushtet
Për ta ndjekur, do t'ju duhet:
- Një udhëzues fillestar i konfigurimit të serverit nëse nuk keni konfiguruar një përdorues jo-root. Instalimet me më pak se 4 GB RAM mund të shkaktojnë dështimin e shërbimit Kafka.
- Si të instaloni Java me APT në Ubuntu 20.04. Kafka është shkruar në Java, kështu që kërkon një JVM.
Hapi 1 - Krijimi i një përdoruesi për Kafka
Për shkak se Kafka mund të trajtojë kërkesat përmes një rrjeti, hapi juaj i parë është të krijoni një përdorues të dedikuar për shërbimin. Kjo minimizon dëmtimin në makinën tuaj Ubuntu në rast se dikush komprometon serverin Kafka. Ju do të krijoni një përdorues të dedikuar kafka
në këtë hap.
Hyni në serverin tuaj si përdoruesi juaj jo-root sudo
, më pas krijoni një përdorues të quajtur kafka
:
- sudo adduser kafka
Ndiqni kërkesat për të vendosur një fjalëkalim dhe për të krijuar përdoruesin kafka
.
Më pas, shtoni përdoruesin kafka
në grupin sudo
me komandën adduser
. Ju nevojiten këto privilegje për të instaluar varësitë e Kafkës:
- sudo adduser kafka sudo
Përdoruesi juaj kafka
tani është gati. Hyni në llogarinë kafka
duke përdorur su
:
- su -l kafka
Tani që keni krijuar një përdorues specifik për Kafkën, jeni gati të shkarkoni dhe ekstraktoni binarët e Kafkës.
Hapi 2 — Shkarkimi dhe nxjerrja e Binareve Kafka
Në këtë hap, ju do të shkarkoni dhe ekstraktoni binarët Kafka në dosje të dedikuara në direktorinë e përdoruesit tuaj kafka
.
Për të filluar, krijoni një drejtori në /home/kafka
të quajtur Shkarkime
për të ruajtur shkarkimet tuaja:
- mkdir ~/Downloads
Përdorni curl
për të shkarkuar binarët Kafka:
- curl "https://downloads.apache.org/kafka/2.8.2/kafka_2.13-2.8.2.tgz" -o ~/Downloads/kafka.tgz
Krijoni një drejtori të quajtur kafka
dhe kaloni në këtë direktori. Ju do ta përdorni këtë direktori si drejtorinë bazë të instalimit të Kafkës:
- mkdir ~/kafka && cd ~/kafka
Ekstraktoni arkivin që keni shkarkuar duke përdorur komandën tar
:
- tar -xvzf ~/Downloads/kafka.tgz --strip 1
Ju specifikoni flamurin --strip 1
për të siguruar që përmbajtja e arkivit të nxirret në vetë ~/kafka/
dhe jo në një drejtori tjetër (si p.sh. ~/kafka /kafka_2.13-2.8.2/
) brenda tij.
Tani që i keni shkarkuar dhe nxjerrë binarët me sukses, mund të filloni të konfiguroni serverin tuaj Kafka.
Hapi 3 — Konfigurimi i serverit Kafka
Një temë Kafka është kategoria, grupi ose emri i burimit në të cilin mund të publikohen mesazhet. Megjithatë, sjellja e paracaktuar e Kafkës nuk do t'ju lejojë të fshini një temë. Për ta modifikuar këtë, duhet të redaktoni skedarin e konfigurimit, të cilin do ta bëni në këtë hap.
Opsionet e konfigurimit të Kafkës janë të specifikuara në server.properties
. Hapeni këtë skedar me nano
ose redaktorin tuaj të preferuar:
- nano ~/kafka/config/server.properties
Së pari, shtoni një cilësim që do t'ju lejojë të fshini temat e Kafkës. Shtoni rreshtin e mëposhtëm në fund të skedarit:
delete.topic.enable = true
Së dyti, ju do të ndryshoni direktorinë ku ruhen regjistrat e Kafkës duke modifikuar vetinë log.dirs
. Gjeni veçorinë log.dirs
dhe zëvendësoni itinerarin ekzistues me itinerarin e theksuar:
log.dirs=/home/kafka/logs
Ruani dhe mbyllni skedarin.
Tani që keni konfiguruar Kafka-n, mund të krijoni skedarë të njësisë systemd
për ekzekutimin dhe aktivizimin e serverit Kafka gjatë nisjes.
Hapi 4 - Krijimi i skedarëve të sistemuar të njësisë dhe fillimi i serverit Kafka
Në këtë seksion, ju do të krijoni skedarë të njësisë systemd
për shërbimin Kafka. Këta skedarë do t'ju ndihmojnë të kryeni veprime të zakonshme të shërbimit, si fillimi, ndalimi dhe rinisja e Kafka-s në një mënyrë në përputhje me shërbimet e tjera Linux.
Kafka përdor dokumentet zyrtare të Zookeeper. Do të përdorni Zookeper si shërbim me këto skedarë njësie.
Krijo skedarin e njësisë për zookeeper
:
- sudo nano /etc/systemd/system/zookeeper.service
Futni përkufizimin e mëposhtëm të njësisë në skedar:
[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
Seksioni [Unit]
specifikon se Zookeeper kërkon që rrjeti dhe sistemi i skedarëve të jenë gati përpara se të fillojë.
Seksioni [Shërbimi]
specifikon se systemd
duhet të përdorë zookeeper-server-start.sh
dhe zookeeper-server-stop.sh
skedarët e guaskës për fillimin dhe ndalimin e shërbimit. Ai gjithashtu specifikon se Zookeeper duhet të rindizet nëse del në mënyrë jonormale.
Pasi të keni shtuar këtë përmbajtje, ruani dhe mbyllni skedarin.
Më pas, krijoni skedarin e shërbimit systemd për kafka
:
- sudo nano /etc/systemd/system/kafka.service
Futni përkufizimin e mëposhtëm të njësisë në skedar:
[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
Seksioni [Unit]
specifikon se ky skedar njësie varet nga zookeeper.service
, i cili do të sigurojë që zookeeper
të fillojë automatikisht kur shërbimi kafka
fillon.
Seksioni [Shërbimi]
specifikon se systemd
duhet të përdorë kafka-server-start.sh
dhe kafka-server-stop.sh
skedarët e guaskës për fillimin dhe ndalimin e shërbimit. Ai gjithashtu specifikon se Kafka duhet të riniset nëse del në mënyrë jonormale.
Ruani dhe mbyllni skedarin.
Tani që i keni përcaktuar njësitë, filloni Kafka me komandën e mëposhtme:
- sudo systemctl start kafka
Për t'u siguruar që serveri ka nisur me sukses, kontrolloni regjistrat e ditarit për njësinë kafka
:
- sudo systemctl status kafka
Ju do të merrni dalje si kjo:
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>
Tani keni një server Kafka që dëgjon në portën 9092
, që është porti i paracaktuar që përdor serveri Kafka.
Ju keni filluar shërbimin kafka
. Por nëse rindizni serverin tuaj, Kafka nuk do të riniset automatikisht. Për të aktivizuar shërbimin kafka
në nisjen e serverit, ekzekutoni komandën e mëposhtme:
- sudo systemctl enable zookeeper
Do të merrni një përgjigje se një lidhje simbolike është krijuar:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/zookeeper.service → /etc/systemd/system/zookeeper.service.
Pastaj ekzekutoni këtë komandë:
- sudo systemctl enable kafka
Do të merrni një përgjigje se një lidhje simbolike është krijuar:
OutputCreated symlink /etc/systemd/system/multi-user.target.wants/kafka.service → /etc/systemd/system/kafka.service.
Në këtë hap, keni filluar dhe aktivizuar shërbimet kafka
dhe zookeeper
. Në hapin tjetër, do të kontrolloni instalimin Kafka.
Hapi 5 — Testimi i instalimit Kafka
Në këtë hap, ju do të testoni instalimin tuaj Kafka. Do të publikoni dhe konsumoni një mesazh Hello World për t'u siguruar që serveri Kafka po sillet siç pritej.
Publikimi i mesazheve në Kafka kërkon:
- Një prodhues, i cili mundëson publikimin e regjistrimeve dhe të dhënave për temat.
- Një konsumator, i cili lexon mesazhe dhe të dhëna nga temat.
Për të filluar, krijoni një temë me emrin TutorialTopic
:
- ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic TutorialTopic
Ju mund të krijoni një prodhues nga linja e komandës duke përdorur skriptin kafka-console-producer.sh
. Ai pret emrin e hostit të serverit Kafka, një port dhe një temë si argumente.
Do të merrni një përgjigje se tema është krijuar:
OutputCreated topic TutorialTopic.
Tani publikoni vargun Përshëndetje, Botë
në temën TutorialTopic
:
- echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
Më pas, krijoni një konsumator Kafka duke përdorur skriptin kafka-console-consumer.sh
. Ai pret emrin e hostit dhe portin e serverit ZooKeeper, së bashku me një emër teme, si argumente. Komanda e mëposhtme konsumon mesazhet nga TutorialTopic
. Vini re përdorimin e flamurit --from-beginning
, i cili lejon konsumimin e mesazheve që janë publikuar para fillimit të konsumatorit:
- ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic TutorialTopic --from-beginning
Nëse nuk ka probleme me konfigurimin, do të merrni një përgjigje Përshëndetje, Botë
në terminalin tuaj:
OutputHello, World
Skripti do të vazhdojë të ekzekutohet, duke pritur që të publikohen më shumë mesazhe. Për ta testuar këtë, hapni një dritare të re terminali dhe hyni në serverin tuaj. Mos harroni të identifikoheni si përdoruesi juaj kafka
:
- su -l kafka
Në këtë terminal të ri, filloni një prodhues të publikojë një mesazh të dytë:
- echo "Hello World from Sammy at DigitalOcean!" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null
Ky mesazh do të ngarkohet në daljen e konsumatorit në terminalin tuaj origjinal:
OutputHello, World
Hello World from Sammy at DigitalOcean!
Kur të keni mbaruar testimin, shtypni CTRL+C
për të ndaluar skriptin e konsumatorit në terminalin tuaj origjinal.
Tani keni instaluar dhe konfiguruar një server Kafka në Ubuntu 20.04. Në hapin tjetër, do të kryeni disa detyra të shpejta për të forcuar sigurinë e serverit tuaj Kafka.
Hapi 6 - Forcimi i serverit Kafka
Me përfundimin e instalimit, mund të hiqni privilegjet e administratorit të përdoruesit të kafka
dhe të forconi serverin Kafka.
Përpara se ta bëni këtë, dilni dhe identifikohuni përsëri si çdo përdorues tjetër sudo
jo-root. Nëse jeni duke ekzekutuar ende të njëjtin sesion shell me të cilin keni filluar këtë tutorial, shkruani dalje
.
Hiqni përdoruesin kafka
nga grupi sudo:
- sudo deluser kafka sudo
Për të përmirësuar më tej sigurinë e serverit tuaj Kafka, kyçni fjalëkalimin e përdoruesit kafka
duke përdorur komandën passwd
. Ky veprim siguron që askush nuk mund të hyjë drejtpërdrejt në server duke përdorur këtë llogari:
- sudo passwd kafka -l
Flamuri -l
bllokon komandën për të ndryshuar fjalëkalimin e një përdoruesi (passwd
).
Në këtë pikë, vetëm root
ose një përdorues sudo
mund të identifikohet si kafka
me komandën e mëposhtme:
- sudo su - kafka
Në të ardhmen, nëse dëshironi të zhbllokoni mundësinë për të ndryshuar fjalëkalimin, përdorni passwd
me opsionin -u
:
- sudo passwd kafka -u
Tani keni kufizuar me sukses privilegjet e administratorit të përdoruesit të kafka
. Jeni gati të filloni të përdorni Kafkën. Mund të ndiqni opsionalisht hapin tjetër, i cili do të shtojë KafkaT në sistemin tuaj.
Hapi 7 - Instalimi i KafkaT (opsionale)
KafkaT u zhvillua për të përmirësuar aftësinë tuaj për të parë detaje rreth grupit tuaj Kafka dhe për të kryer disa detyra administrative nga linja e komandës. Për shkak se është një gur i çmuar Ruby, do t'ju duhet Ruby për ta përdorur atë. Do t'ju duhet gjithashtu paketa build-essential
për të ndërtuar gurët e tjerë nga të cilët varet KafkaT
.
Instaloni Ruby dhe paketën build-essential
duke përdorur apt
:
- sudo apt install ruby ruby-dev build-essential
Tani mund të instaloni KafkaT me komandën gem
:
- sudo CFLAGS=-Wno-error=format-overflow gem install kafkat
Flamuri i përpilimit Wno-error=format-overflow
kërkohet për të shtypur paralajmërimet dhe gabimet e Zookeeper gjatë procesit të instalimit të kafkat
.
Kur instalimi të ketë përfunduar, do të merrni një përgjigje se është kryer:
Output...
Done installing documentation for json, colored, retryable, highline, trollop, zookeeper, zk, kafkat after 3 seconds
8 gems installed
KafkaT përdor .kafkatcfg
si skedar konfigurimi për të përcaktuar direktoritë e instalimit dhe regjistrit të serverit tuaj Kafka. Duhet të ketë gjithashtu një hyrje që tregon KafkaT në shembullin tuaj ZooKeeper.
Krijo një skedar të ri të quajtur .kafkatcfg
:
- nano ~/.kafkatcfg
Shtoni rreshtat e mëposhtëm për të specifikuar informacionin e kërkuar në lidhje me serverin tuaj Kafka dhe shembullin e Zookeeper:
{
"kafka_path": "~/kafka",
"log_path": "/home/kafka/logs",
"zk_path": "localhost:2181"
}
Ruani dhe mbyllni skedarin. Tani jeni gati të përdorni KafkaT.
Për të parë detaje rreth të gjitha ndarjeve Kafka, provoni të ekzekutoni këtë komandë:
- kafkat partitions
Do të merrni daljen e mëposhtme:
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]
...
...
Dalja do të përfshijë TutorialTopic
dhe __consumer_offsets
, një temë e brendshme e përdorur nga Kafka për ruajtjen e informacionit të lidhur me klientin. Ju mund të injoroni me siguri linjat që fillojnë me __consumer_offsets
.
Për të mësuar më shumë rreth KafkaT, referojuni depove të tij GitHub.
konkluzioni
Tani keni Apache Kafka që funksionon në mënyrë të sigurt në serverin tuaj Ubuntu. Ju mund ta integroni Kafkën në gjuhën tuaj të preferuar të programimit duke përdorur klientët Kafka.
Për të mësuar më shumë rreth Kafkës, mund të konsultoheni edhe me dokumentacionin e tij.