Ricerca nel sito web

Come installare Apache Kafka con CMAK su CentOS


Apache Kafka è una piattaforma di streaming gratuita e open source utilizzata per analisi di streaming, integrazione dei dati e applicazioni mission-critical. Rispetto ad ActiveMQ e RabbitMQ, Kafka offre un throughput migliore, partizionamento integrato, replica e tolleranza agli errori. Kafka è un agente di messaggistica distribuito in grado di gestire in modo efficace enormi volumi di informazioni in tempo reale.

CMAK noto anche come "Cluster Manager" viene utilizzato per la gestione del cluster Kafka sviluppato da Yahoo. Utilizzando CMAK, puoi gestire più cluster e ispezionare lo stato del cluster, inclusi argomenti, consumatori, offset, broker, distribuzione delle repliche, distribuzione delle partizioni e molto altro.

In questo tutorial mostreremo come installare la piattaforma di streaming Apache Kafka con CMAK sul server CentOS 8.

Prerequisiti

  • Un server che esegue CentOS 8.
  • Sul server viene configurata una password di root.

Iniziare

Innanzitutto, si consiglia di aggiornare i pacchetti di sistema alla versione più recente. Puoi aggiornare tutto con il seguente comando:

dnf update -y

Una volta aggiornati tutti i pacchetti, installa le altre dipendenze richieste con il seguente comando:

dnf install git unzip -y

Una volta terminato, puoi procedere al passaggio successivo.

Installa Java

Kafka è basato su Java, quindi Java deve essere installato sul tuo server. Se non è installato, è possibile installarlo con il seguente comando:

dnf install java-11-openjdk-devel -y

Una volta installato Java, puoi verificare la versione installata di Java utilizzando il seguente comando:

java --version

Dovresti ottenere il seguente output:

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)

Una volta terminato, puoi procedere al passaggio successivo.

Scarica Kafka

Prima di scaricare Kafka, crea una directory in cui archiviare Kafka. Puoi crearlo con il seguente comando:

mkdir /usr/local/kafka-server

Successivamente, modifica la directory in kafka-server e scarica l'ultima versione di Kafka utilizzando il seguente comando:

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

Una volta completato il download, estrai il file scaricato con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Crea un file Systemd per Kafka e Zookeeper

Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Zookeeper e Kafka.

Innanzitutto, crea un file di servizio Zookeeper utilizzando il seguente comando:

nano /etc/systemd/system/zookeeper.service

Aggiungi le seguenti righe:

[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

Salva e chiudi il file quando hai finito.

Successivamente, crea un file di servizio Kafka con il seguente comando:

nano /etc/systemd/system/kafka.service

Aggiungi le seguenti righe:

[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

Salvare e chiudere il file quindi ricaricare il demone systemd con il seguente comando:

systemctl daemon-reload

Successivamente, avvia entrambi i servizi e abilitali all'avvio all'avvio con il seguente comando:

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

Successivamente, verifica lo stato di entrambi i servizi utilizzando il seguente comando:

systemctl status zookeeper kafka

Dovresti vedere il seguente output:

? 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>

Installa e configura CMAK

Successivamente, dovrai installare CMAK per la gestione del cluster Apache Kafka. Puoi scaricarlo dal repository Git con il seguente comando:

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

Una volta scaricato, dovrai modificare il file application.conf e definire gli host zookeeper.

nano ~/CMAK/conf/application.conf

Modificare le seguenti righe:

cmak.zkhosts="localhost:2181"

Salva e chiudi il file quando hai finito. Quindi, crea un file zip per distribuire l'applicazione.

cd ~/CMAK/
./sbt clean dist

Dovresti vedere il seguente output:

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

Successivamente, decomprimi il file zip creato nel passaggio precedente con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Avvia i servizi CMAK

Ora, modifica la directory in ~/CMAK/target/universal/cmak-3.0.0.5 e avvia il servizio CMAK utilizzando il seguente comando:

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

A questo punto, CMAK viene avviato ed è in ascolto sulla porta 9000.

Configura SELinux e Firewall

Per impostazione predefinita, SELinux è abilitato in CentOS 8. Quindi dovrai configurare SELinux per CMAK. Puoi configurarlo con il seguente comando:

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

Successivamente, dovrai consentire la porta 9000 tramite firewalld. Puoi farlo con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Accedi all'interfaccia utente Web CMAK

Ora apri il tuo browser web e accedi a CMAK utilizzando l'URL http://your-server-ip:9000. Dovresti vedere la seguente pagina:

Nella schermata sopra, dovresti vedere che non ci sono cluster disponibili. Quindi dovrai prima creare un nuovo cluster.

Fare clic su Cluster => Aggiungi CLuster. Dovresti vedere la seguente schermata:

Fornisci il nome del cluster, l'host dello zookeeper e altre informazioni richieste e fai clic sul pulsante Salva. Dovresti vedere la seguente schermata:

Una volta terminato, puoi procedere al passaggio successivo.

Aggiungi il tuo primo argomento su Kafka

Successivamente, dovrai creare un argomento su Kafka per testare la funzionalità. Per fare ciò, apri un altro terminale, cambia la directory in kafka-server e crea un nuovo argomento specificando un nome di argomento e un fattore di replica eseguendo il seguente comando:

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

Ora vai alla dashboard CMAK e fai clic su Argomento. Dovresti vedere l'argomento che hai creato in precedenza nella schermata seguente:

Fai clic sul numero dell'Argomento. Dovresti vedere l'argomento appena creato nella schermata seguente:

Ora fai clic sul nome del tuo argomento. Dovresti vedere tutte le informazioni del tuo argomento nella schermata seguente:

Conclusione

Congratulazioni! hai installato con successo Apache Kafka con CMAK sul server CentOS 8. Ora puoi iniziare a esplorare CMAK per ulteriori funzionalità. Sentiti libero di chiedermi se hai qualche domanda.

Articoli correlati: