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:

  1. 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:

  1. sudo adduser kafka sudo

Përdoruesi juaj kafka tani është gati. Hyni në llogarinë kafka duke përdorur su:

  1. 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:

  1. mkdir ~/Downloads

Përdorni curl për të shkarkuar binarët Kafka:

  1. 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:

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

Ekstraktoni arkivin që keni shkarkuar duke përdorur komandën tar:

  1. 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:

  1. 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:

  1. 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:

  1. 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:

  1. sudo systemctl start kafka

Për t'u siguruar që serveri ka nisur me sukses, kontrolloni regjistrat e ditarit për njësinë kafka:

  1. 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:

  1. sudo systemctl enable zookeeper

Do të merrni një përgjigje se një lidhje simbolike është krijuar:

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

Pastaj ekzekutoni këtë komandë:

  1. sudo systemctl enable kafka

Do të merrni një përgjigje se një lidhje simbolike është krijuar:

Output
Created 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:

  1. ~/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:

Output
Created topic TutorialTopic.

Tani publikoni vargun Përshëndetje, Botë në temën TutorialTopic:

  1. 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:

  1. ~/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:

Output
Hello, 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:

  1. su -l kafka

Në këtë terminal të ri, filloni një prodhues të publikojë një mesazh të dytë:

  1. 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:

Output
Hello, 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:

  1. 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:

  1. 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:

  1. 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:

  1. 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:

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

Tani mund të instaloni KafkaT me komandën gem:

  1. 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:

  1. 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ë:

  1. 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.