Ako nainštalovať Apache Kafka s CMAK na CentOS


Na tejto stránke

  1. Predpoklady
  2. Začíname
  3. Nainštalujte Java
  4. Stiahnite si Kafku
  5. Vytvorte systémový súbor pre Kafku a Zookeeper
  6. Nainštalujte a nakonfigurujte CMAK
  7. Spustite služby CMAK
  8. Nakonfigurujte SELinux a Firewall
  9. Prístup k webovému používateľskému rozhraniu CMAK
  10. Pridajte svoju prvú tému na Kafku
  11. Záver

Apache Kafka je bezplatná a open source platforma na streamovanie, ktorá sa používa na analýzu streamovania, integráciu údajov a kritické aplikácie. V porovnaní s ActiveMQ a RabbitMQ má Kafka lepšiu priepustnosť, vstavané delenie, replikáciu a odolnosť voči chybám. Kafka je distribuovaný agent správ, ktorý dokáže efektívne narábať s obrovskými objemami informácií v reálnom čase.

CMAK známy aj ako "Cluster Manager" sa používa na správu klastra Kafka vyvinutého spoločnosťou Yahoo. Pomocou CMAK môžete spravovať viacero klastrov a kontrolovať stav klastrov vrátane tém, spotrebiteľov, ofsetov, maklérov, distribúcie replík, distribúcie oddielov a mnohých ďalších.

V tomto návode si ukážeme, ako nainštalovať streamovaciu platformu Apache Kafka s CMAK na server CentOS 8.

Predpoklady

  • Server so systémom CentOS 8.
  • Na serveri je nakonfigurované heslo root.

Začíname

Najprv sa odporúča aktualizovať systémové balíky na najnovšiu verziu. Všetko môžete aktualizovať pomocou nasledujúceho príkazu:

dnf update -y

Po aktualizácii všetkých balíkov nainštalujte ďalšie požadované závislosti pomocou nasledujúceho príkazu:

dnf install git unzip -y

Po dokončení môžete prejsť na ďalší krok.

Nainštalujte Java

Kafka je založená na Jave, takže Java musí byť nainštalovaná na vašom serveri. Ak nie je nainštalovaný, môžete ho nainštalovať pomocou nasledujúceho príkazu:

dnf install java-11-openjdk-devel -y

Po nainštalovaní Java môžete overiť nainštalovanú verziu Java pomocou nasledujúceho príkazu:

java --version

Mali by ste dostať nasledujúci výstup:

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-CentOS-0centos8)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-CentOS-0centos8, mixed mode, sharing)

Po dokončení môžete prejsť na ďalší krok.

Stiahnite si Kafku

Pred stiahnutím Kafky vytvorte adresár na uloženie Kafky. Môžete ho vytvoriť pomocou nasledujúceho príkazu:

mkdir /usr/local/kafka-server

Ďalej zmeňte adresár na kafka-server a stiahnite si najnovšiu verziu Kafky pomocou nasledujúceho príkazu:

cd /usr/local/kafka-server
wget https://downloads.apache.org/kafka/2.6.0/kafka_2.13-2.6.0.tgz

Po dokončení sťahovania rozbaľte stiahnutý súbor pomocou nasledujúceho príkazu:

tar -xvzf kafka_2.13-2.6.0.tgz --strip 1

Po dokončení môžete prejsť na ďalší krok.

Vytvorte systémový súbor pre Kafku a Zookeeper

Ďalej budete musieť vytvoriť servisný súbor systemd na správu služby Zookeeper a Kafka.

Najprv vytvorte súbor služby Zookeeper pomocou nasledujúceho príkazu:

nano /etc/systemd/system/zookeeper.service

Pridajte nasledujúce riadky:

[Unit]
Description=Apache Zookeeper Server
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/local/kafka-server/bin/zookeeper-server-start.sh /usr/local/kafka-server/config/zookeeper.properties
ExecStop=/usr/local/kafka-server/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Po dokončení uložte a zatvorte súbor.

Potom vytvorte súbor služby Kafka pomocou nasledujúceho príkazu:

nano /etc/systemd/system/kafka.service

Pridajte nasledujúce riadky:

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-11-openjdk"
ExecStart=/usr/local/kafka-server/bin/kafka-server-start.sh /usr/local/kafka-server/config/server.properties
ExecStop=/usr/local/kafka-server/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Uložte a zatvorte súbor a potom znovu načítajte démona systemd pomocou nasledujúceho príkazu:

systemctl daemon-reload

Potom spustite obe služby a povoľte ich spustenie pri zavádzaní pomocou nasledujúceho príkazu:

systemctl enable --now zookeeper
systemctl enable --now kafka
systemctl start zookeeper
systemctl start kafka

Potom skontrolujte stav oboch služieb pomocou nasledujúceho príkazu:

systemctl status zookeeper kafka

Mali by ste vidieť nasledujúci výstup:

? zookeeper.service - Apache Zookeeper Server
   Loaded: loaded (/etc/systemd/system/zookeeper.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 08:48:42 EDT; 30s ago
 Main PID: 26722 (java)
    Tasks: 31 (limit: 12523)
   Memory: 68.8M
   CGroup: /system.slice/zookeeper.service
           ??26722 java -Xmx512M -Xms512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCIn>

Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,326] INFO maxSessionTimeout set to 60000 (org.apache.zookeeper.>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,327] INFO Created server with tickTime 3000 minSessionTimeout 6>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,344] INFO Using org.apache.zookeeper.server.NIOServerCnxnFactor>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,348] INFO Configuring NIO connection handler with 10s sessionle>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,355] INFO binding to port 0.0.0.0/0.0.0.0:2181 (org.apache.zook>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,391] INFO zookeeper.snapshotSizeFactor = 0.33 (org.apache.zooke>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,397] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,401] INFO Snapshotting: 0x0 to /tmp/zookeeper/version-2/snapsho>
Aug 29 08:48:44 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:44,431] INFO Using checkIntervalMs=60000 maxPerMinute=10000 (org.a>
Aug 29 08:48:53 centos8 zookeeper-server-start.sh[26722]: [2020-08-29 08:48:53,030] INFO Creating new log file: log.1 (org.apache.zookeeper.se>

? kafka.service - Apache Kafka Server
   Loaded: loaded (/etc/systemd/system/kafka.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 08:48:50 EDT; 22s ago
     Docs: http://kafka.apache.org/documentation.html
 Main PID: 27100 (java)
    Tasks: 66 (limit: 12523)
   Memory: 306.4M
   CGroup: /system.slice/kafka.service
           ??27100 /usr/lib/jvm/jre-11-openjdk/bin/java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancy>

Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,733] INFO [Transaction Marker Channel Manager 0]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,747] INFO [ExpirationReaper-0-AlterAcls]: Starting (kafka.server.De>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,846] INFO [/config/changes-event-process-thread]: Starting (kafka.c>
Aug 29 08:48:56 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:56,877] INFO [SocketServer brokerId=0] Starting socket server acceptor>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,236] INFO [SocketServer brokerId=0] Started data-plane acceptor and>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,237] INFO [SocketServer brokerId=0] Started socket server acceptors>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka version: 2.6.0 (org.apache.kafka.common.utils.AppIn>
Aug 29 08:48:57 centos8 kafka-server-start.sh[27100]: [2020-08-29 08:48:57,246] INFO Kafka commitId: 62abe01bee039651 (org.apache.kafka.common>

Nainštalujte a nakonfigurujte CMAK

Ďalej budete musieť nainštalovať CMAK na správu klastra Apache Kafka. Môžete si ho stiahnuť z úložiska Git pomocou nasledujúceho príkazu:

cd /root
git clone https://github.com/yahoo/CMAK.git

Po stiahnutí budete musieť upraviť súbor application.conf a definovať hostiteľov zookeepera.

nano ~/CMAK/conf/application.conf

Zmeňte nasledujúce riadky:

cmak.zkhosts="localhost:2181"

Po dokončení uložte a zatvorte súbor. Potom vytvorte súbor zip na nasadenie aplikácie.

cd ~/CMAK/
./sbt clean dist

Mali by ste vidieť nasledujúci výstup:

model contains 640 documentable templates
[info] Main Scala API documentation successful.
[info] LESS compiling on 1 source(s)
[success] All package validations passed
[info] Your package is ready in /root/CMAK/target/universal/cmak-3.0.0.5.zip
[success] Total time: 150 s (02:30), completed 29-Aug-2020, 8:55:40 AM

Potom rozbaľte súbor zip, ktorý ste vytvorili v predchádzajúcom kroku, pomocou nasledujúceho príkazu:

cd ~/CMAK/target/universal
unzip cmak-3.0.0.5.zip

Po dokončení môžete prejsť na ďalší krok.

Spustite služby CMAK

Teraz zmeňte adresár na ~/CMAK/target/universal/cmak-3.0.0.5 a spustite službu CMAK pomocou nasledujúceho príkazu:

cd ~/CMAK/target/universal/cmak-3.0.0.5
bin/cmak

V tomto bode sa spustí CMAK a počúva na porte 9000.

Nakonfigurujte SELinux a Firewall

V predvolenom nastavení je SELinux povolený v CentOS 8. Takže budete musieť nakonfigurovať SELinux pre CMAK. Môžete ho nakonfigurovať pomocou nasledujúceho príkazu:

chcon -t httpd_sys_rw_content_t ~/CMAK/target/universal/cmak-3.0.0.5 -R
setsebool -P httpd_can_network_connect 1

Ďalej budete musieť povoliť port 9000 cez firewall. Môžete to urobiť pomocou nasledujúceho príkazu:

firewall-cmd --permanent --zone public --add-port 9000/tcp
firewall-cmd --reload

Po dokončení môžete prejsť na ďalší krok.

Prístup k webovému používateľskému rozhraniu CMAK

Teraz otvorte webový prehliadač a prejdite na CMAK pomocou adresy URL http://your-server-ip:9000. Mali by ste vidieť nasledujúcu stránku:

Na obrazovke vyššie by ste mali vidieť, že nie je k dispozícii žiadny klaster. Takže najprv budete musieť vytvoriť nový klaster.

Kliknite na Cluster => Add Cluster. Mali by ste vidieť nasledujúcu obrazovku:

Zadajte názov klastra, hostiteľa zookeepera, ďalšie požadované informácie a kliknite na tlačidlo Uložiť. Mali by ste vidieť nasledujúcu obrazovku:

Po dokončení môžete prejsť na ďalší krok.

Pridajte svoju prvú tému na Kafku

Ďalej budete musieť vytvoriť tému na Kafka, aby ste otestovali funkčnosť. Ak to chcete urobiť, otvorte iný terminál, zmeňte adresár na kafka-server a vytvorte novú tému zadaním názvu témy a faktora replikácie spustením nasledujúceho príkazu:

cd /usr/local/kafka-server
bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic MyNewTopic

Teraz prejdite na panel CMAK a kliknite na Tému. Na nasledujúcej obrazovke by ste mali vidieť tému, ktorú ste predtým vytvorili:

Kliknite na číslo témy. Na nasledujúcej obrazovke by ste mali vidieť svoju novovytvorenú tému:

Teraz kliknite na názov svojej témy. Na nasledujúcej obrazovke by ste mali vidieť všetky informácie o vašej téme:

Záver

Gratulujem! úspešne ste nainštalovali Apache Kafka s CMAK na server CentOS 8. Teraz môžete začať skúmať CMAK pre viac funkcií. Ak máte nejaké otázky, neváhajte sa ma opýtať.