GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren Sie Kafka auf RHEL 8

Apache Kafka ist eine verteilte Streaming-Plattform. Mit seinem reichhaltigen API-Set (Application Programming Interface) können wir fast alles mit Kafka als Datenquelle verbinden, und auf der anderen Seite können wir eine große Anzahl von Verbrauchern einrichten, die den Strom von Datensätzen zur Verarbeitung erhalten. Kafka ist hochgradig skalierbar und speichert die Datenströme zuverlässig und fehlertolerant. Aus Sicht der Konnektivität kann Kafka als Brücke zwischen vielen heterogenen Systemen dienen, die sich wiederum auf ihre Fähigkeiten verlassen können, die bereitgestellten Daten zu übertragen und zu speichern.

In diesem Tutorial installieren wir Apache Kafka auf einem Red Hat Enterprise Linux 8, erstellen die systemd Unit-Dateien für eine einfachere Verwaltung und testen Sie die Funktionalität mit den mitgelieferten Befehlszeilen-Tools.

In diesem Tutorial lernen Sie:

  • So installieren Sie Apache Kafka
  • So erstellen Sie systemd-Dienste für Kafka und Zookeeper
  • So testen Sie Kafka mit Befehlszeilen-Clients

Konsumieren von Nachrichten zum Thema Kafka über die Befehlszeile.

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System Red Hat Enterprise Linux 8
Software Apache Kafka 2.11
Andere Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl.
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

Schritt-für-Schritt-Anleitung zur Installation von Kafka auf Redhat 8

Apache Kafka ist in Java geschrieben, also brauchen wir nur OpenJDK 8 installiert, um mit der Installation fortzufahren. Kafka setzt auf Apache Zookeeper, einen verteilten Koordinierungsdienst, der ebenfalls in Java geschrieben ist und mit dem von uns heruntergeladenen Paket ausgeliefert wird. Während die Installation von HA-Diensten (High Availability) auf einem einzelnen Knoten ihren Zweck zunichte macht, werden wir Zookeeper für Kafka installieren und ausführen.

  1. Um Kafka vom nächstgelegenen Mirror herunterzuladen, müssen wir die offizielle Download-Site konsultieren. Wir können die URL von .tar.gz kopieren Datei von dort. Wir verwenden wget , und die eingefügte URL, um das Paket auf den Zielcomputer herunterzuladen:
    # wget https://www-eu.apache.org/dist/kafka/2.1.0/kafka_2.11-2.1.0.tgz -O /opt/kafka_2.11-2.1.0.tgz
  2. Wir geben den /opt ein Verzeichnis und extrahieren Sie das Archiv:
    # cd /opt
    # tar -xvf kafka_2.11-2.1.0.tgz

    Und erstellen Sie einen Symlink namens /opt/kafka das zeigt auf den jetzt erstellten /opt/kafka_2_11-2.1.0 Verzeichnis, um unser Leben einfacher zu machen.

    ln -s /opt/kafka_2.11-2.1.0 /opt/kafka
  3. Wir erstellen einen nicht privilegierten Benutzer, der beide zookeeper ausführt und kafka service.
    # useradd kafka
  4. Und legen Sie den neuen Benutzer rekursiv als Besitzer des gesamten Verzeichnisses fest, das wir extrahiert haben:
    # chown -R kafka:kafka /opt/kafka*
  5. Wir erstellen die Unit-Datei /etc/systemd/system/zookeeper.service mit folgendem Inhalt:
    [Unit]
    Description=zookeeper
    After=syslog.target network.target
    
    [Service]
    Type=simple
    
    User=kafka
    Group=kafka
    
    ExecStart=/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
    ExecStop=/opt/kafka/bin/zookeeper-server-stop.sh
    
    [Install]
    WantedBy=multi-user.target

    Beachten Sie, dass wir die Versionsnummer aufgrund des von uns erstellten Symlinks nicht dreimal schreiben müssen. Gleiches gilt für die nächste Unit-Datei für Kafka, /etc/systemd/system/kafka.service , das die folgenden Konfigurationszeilen enthält:

    [Unit]
    Description=Apache Kafka
    Requires=zookeeper.service
    After=zookeeper.service
    
    [Service]
    Type=simple
    
    User=kafka
    Group=kafka
    
    ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
    ExecStop=/opt/kafka/bin/kafka-server-stop.sh
    
    [Install]
    WantedBy=multi-user.target
  6. Wir müssen systemd neu laden Lesen Sie dazu die neuen Unit-Dateien:
    # systemctl daemon-reload
  7. Jetzt können wir unsere neuen Dienste starten (in dieser Reihenfolge):
    # systemctl start zookeeper
    # systemctl start kafka

    Wenn alles gut geht, systemd sollte den laufenden Zustand über den Status beider Dienste melden, ähnlich den folgenden Ausgaben:

    # systemctl status zookeeper.service
      zookeeper.service - zookeeper
       Loaded: loaded (/etc/systemd/system/zookeeper.service; disabled; vendor preset: disabled)
       Active: active (running) since Thu 2019-01-10 20:44:37 CET; 6s ago
     Main PID: 11628 (java)
        Tasks: 23 (limit: 12544)
       Memory: 57.0M
       CGroup: /system.slice/zookeeper.service
                11628 java -Xmx512M -Xms512M -server [...]
    
    # systemctl status kafka.service
      kafka.service - Apache Kafka
       Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled)
       Active: active (running) since Thu 2019-01-10 20:45:11 CET; 11s ago
     Main PID: 11949 (java)
        Tasks: 64 (limit: 12544)
       Memory: 322.2M
       CGroup: /system.slice/kafka.service
                11949 java -Xmx1G -Xms1G -server [...]
  8. Optional können wir den automatischen Start beim Booten für beide Dienste aktivieren:
    # systemctl enable zookeeper.service
    # systemctl enable kafka.service
  9. Um die Funktionalität zu testen, verbinden wir uns mit einem Producer- und einem Consumer-Client mit Kafka. Die vom Produzenten bereitgestellten Nachrichten sollten auf der Konsole des Konsumenten erscheinen. Aber vorher brauchen wir ein Medium, auf dem diese beiden Nachrichten austauschen. Wir erstellen einen neuen Datenkanal namens topic in Kafkas Begriffen, wo der Anbieter veröffentlicht und wo der Verbraucher abonniert. Wir nennen das Thema
    FirstKafkaTopic . Wir verwenden den kafka Benutzer zum Erstellen des Themas:

    $ /opt/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic FirstKafkaTopic
  10. Wir starten einen Consumer-Client über die Befehlszeile, der das (zu diesem Zeitpunkt leere) Thema abonniert, das im vorherigen Schritt erstellt wurde:
    $ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning

    Wir lassen die Konsole und den darin laufenden Client offen. In dieser Konsole erhalten wir die Nachricht, die wir mit dem Producer-Client veröffentlichen.

  11. Auf einem anderen Terminal starten wir einen Producer-Client und veröffentlichen einige Nachrichten zu dem von uns erstellten Thema. Wir können Kafka nach verfügbaren Themen abfragen:
    $ /opt/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
    FirstKafkaTopic

    Und stellen Sie eine Verbindung zu dem her, das der Verbraucher abonniert hat, und senden Sie dann eine Nachricht:

    $ /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic FirstKafkaTopic
    > new message published by producer from console #2

    Am Verbraucherterminal sollte in Kürze die Meldung erscheinen:

    $ /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic FirstKafkaTopic --from-beginning
     new message published by producer from console #2

    Wenn die Meldung erscheint, ist unser Test erfolgreich und unsere Kafka-Installation funktioniert wie vorgesehen. Viele Clients könnten einen oder mehrere Themendatensätze auf die gleiche Weise bereitstellen und nutzen, sogar mit einer Einrichtung mit einem einzelnen Knoten, die wir in diesem Tutorial erstellt haben.


Linux
  1. So installieren Sie phpMyAdmin auf RHEL 8 / CentOS 8

  2. So installieren Sie P7Zip auf RHEL 8 / CentOS 8

  3. So installieren Sie ntfs-3g auf RHEL 8 / CentOS 8

  4. So installieren Sie PHP-mbstring auf RHEL 8 / CentOS 8

  5. wie man gcc 4.9.2 auf RHEL 7.4 installiert

So installieren Sie ActiveMQ auf RHEL 8

So installieren Sie Apache Bench auf RHEL 8

So installieren Sie Cassandra auf RHEL 8

So installieren Sie Composer auf RHEL 8

So installieren Sie gdb in RHEL 8

So installieren Sie Apache Kafka in CentOS/RHEL 7