So installieren Sie Apache Kafka unter Ubuntu 14.04

Einführung

Apache Kafka ist ein beliebter verteilter Nachrichtenbroker, der dafür konzipiert ist, große Mengen von Echtzeitdaten effizient zu verarbeiten. Ein Kafka-Cluster ist nicht nur hoch skalierbar und fehlertolerant, sondern hat auch einen viel höheren Durchsatz im Vergleich zu anderen Nachrichtenbrokern wie ActiveMQ und RabbitMQ. Obwohl es im Allgemeinen als Pub- / Sub-Messaging-System verwendet wird, wird es von vielen Organisationen auch für die Protokollaggregation verwendet, da es dauerhaften Speicher für veröffentlichte Nachrichten bietet.

In diesem Tutorial erfahren Sie, wie Sie Apache Kafka 0.8.2.1 unter Ubuntu 14.04 installieren und verwenden.

Voraussetzungen

Um mitzukommen, benötigen Sie:

[[Schritt 1 - Erstellen eines Benutzers für Kafka] == Schritt 1 - Erstellen eines Benutzers für Kafka

Da Kafka Anforderungen über ein Netzwerk verarbeiten kann, sollten Sie einen dedizierten Benutzer dafür erstellen. Dies minimiert die Beschädigung Ihres Ubuntu-Rechners, falls der Kafka-Server vorhanden sein sollte.

[.note] #Note: Nach dem Einrichten von Apache Kafka wird empfohlen, einen anderen Benutzer ohne Rootberechtigung zu erstellen, um andere Aufgaben auf diesem Server auszuführen.
#

Erstellen Sie als root einen Benutzer mit dem Namenkafka mit dem Befehluseradd:

useradd kafka -m

Legen Sie das Passwort mitpasswd fest:

passwd kafka

Fügen Sie es der Gruppesudohinzu, damit es über die erforderlichen Berechtigungen verfügt, um die Abhängigkeiten von Kafka zu installieren. Dies kann mit dem Befehladduser erfolgen:

adduser kafka sudo

Ihr Kafka-Benutzer ist jetzt bereit. Melden Sie sich mitsu an:

su - kafka

[[Schritt-2 -—- Java installieren]] == Schritt 2 - Java installieren

Aktualisieren Sie vor der Installation zusätzlicher Pakete die Liste der verfügbaren Pakete, damit Sie die neuesten im Repository verfügbaren Versionen installieren:

sudo apt-get update

Da Apache Kafka eine Java-Laufzeitumgebung benötigt, verwenden Sieapt-get, um das Paketdefault-jre zu installieren:

sudo apt-get install default-jre

[[Schritt-3 -—- Install-Zookeeper]] == Schritt 3 - Installieren Sie ZooKeeper

Apache ZooKeeper ist ein Open-Source-Dienst, der zum Koordinieren und Synchronisieren von Konfigurationsinformationen von Knoten dient, die zu einem verteilten System gehören. Ein Kafka-Cluster hängt von ZooKeeper ab, um unter anderem Vorgänge wie das Erkennen ausgefallener Knoten und die Wahl von Führungskräften durchzuführen.

Da das ZooKeeper-Paket in den Standard-Repositorys von Ubuntu verfügbar ist, installieren Sie es mitapt-get.

sudo apt-get install zookeeperd

Nach Abschluss der Installation wird ZooKeeper automatisch als Daemon gestartet. Standardmäßig überwacht es Port2181.

Um sicherzustellen, dass es funktioniert, stellen Sie eine Verbindung über Telnet her:

telnet localhost 2181

Geben Sie an der Telnet-Eingabeaufforderungruok ein und drücken SieENTER.

Wenn alles in Ordnung ist, sagt ZooKeeperimok und beendet die Telnet-Sitzung.

[[Schritt-4 -—- Kafka-Binärdateien herunterladen und extrahieren]] == Schritt 4 - Kafka-Binärdateien herunterladen und extrahieren

Nach der Installation von Java und ZooKeeper ist es an der Zeit, Kafka herunterzuladen und zu extrahieren.

Erstellen Sie zunächst ein Verzeichnis mit dem NamenDownloads, in dem alle Ihre Downloads gespeichert werden.

mkdir -p ~/Downloads

Verwenden Siewget, um die Kafka-Binärdateien herunterzuladen.

wget "http://mirror.cc.columbia.edu/pub/software/apache/kafka/0.8.2.1/kafka_2.11-0.8.2.1.tgz" -O ~/Downloads/kafka.tgz

Erstellen Sie ein Verzeichnis mit dem Namenkafka und wechseln Sie in dieses Verzeichnis. Dies ist das Basisverzeichnis der Kafka-Installation.

mkdir -p ~/kafka && cd ~/kafka

Extrahieren Sie das heruntergeladene Archiv mit dem Befehltar.

tar -xvzf ~/Downloads/kafka.tgz --strip 1

[[Schritt-5 - Konfigurieren des Kafka-Servers]] == Schritt 5 - Konfigurieren des Kafka-Servers

Der nächste Schritt ist die Konfiguration des Kafka-Servers.

Öffnen Sieserver.properties mitvi:

vi ~/kafka/config/server.properties

Standardmäßig können Sie in Kafka keine Themen löschen. Um Themen löschen zu können, fügen Sie die folgende Zeile am Ende der Datei hinzu:

~/kafka/config/server.properties

delete.topic.enable = true

Speichern Sie die Datei und beenden Sievi.

[[Schritt 6 - Start des Kafka-Servers]] == Schritt 6 - Starten Sie den Kafka-Server

Führen Sie das Skriptkafka-server-start.shmitnohup aus, um den Kafka-Server (auch als Kafka-Broker bezeichnet) als Hintergrundprozess zu starten, der von Ihrer Shell-Sitzung unabhängig ist.

nohup ~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties > ~/kafka/kafka.log 2>&1 &

Warten Sie einige Sekunden, bis es startet. Sie können sicher sein, dass der Server erfolgreich gestartet wurde, wenn Sie die folgenden Meldungen in~/kafka/kafka.log sehen:

Auszug aus ~ / kafka / kafka.log

...

[2015-07-29 06:02:41,736] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
[2015-07-29 06:02:41,776] INFO [Kafka Server 0], started (kafka.server.KafkaServer)

Sie haben jetzt einen Kafka-Server, der Port9092 überwacht.

[[Schritt-7 - Test der Installation]] == Schritt 7 - Testen Sie die Installation

Lassen Sie uns jetzt eine“Hello World”-Nachricht veröffentlichen und verwenden, um sicherzustellen, dass sich der Kafka-Server ordnungsgemäß verhält.

Um Nachrichten zu veröffentlichen, sollten Sie einen Kafka-Produzenten erstellen. Mit dem Skriptkafka-console-producer.shkönnen Sie ganz einfach eine über die Befehlszeile erstellen. Es erwartet den Hostnamen und den Port des Kafka-Servers sowie einen Themennamen als Argumente.

Veröffentlichen Sie die Zeichenfolge“Hello, World” in einem Thema namensTutorialTopic, indem Sie Folgendes eingeben:

echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic TutorialTopic > /dev/null

Da das Thema nicht existiert, wird es von Kafka automatisch erstellt.

Um Nachrichten zu konsumieren, können Sie einen Kafka-Konsumenten mit dem Skriptkafka-console-consumer.sherstellen. Es erwartet den Hostnamen und den Port des ZooKeeper-Servers sowie einen Themennamen als Argumente.

Der folgende Befehl verwendet Nachrichten aus dem Thema, in dem wir veröffentlicht haben. Beachten Sie die Verwendung des Flags--from-beginning, das vorhanden ist, da eine Nachricht verwendet werden soll, die vor dem Start des Verbrauchers veröffentlicht wurde.

~/kafka/bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic TutorialTopic --from-beginning

Wenn keine Konfigurationsprobleme vorliegen, sollten jetztHello, World in der Ausgabe angezeigt werden.

Das Skript wird weiterhin ausgeführt und wartet darauf, dass weitere Nachrichten im Thema veröffentlicht werden. Öffnen Sie einfach ein neues Terminal und starten Sie einen Produzenten, um weitere Nachrichten zu veröffentlichen. Sie sollten sie alle sofort in der Ausgabe des Verbrauchers sehen können.

Wenn Sie mit dem Testen fertig sind, drücken Sie STRG + C, um das Consumer-Skript zu beenden.

[[Schritt-8 -—- install-kafkat-optional]] == Schritt 8 - KafkaT installieren (optional)

KafkaT ist ein praktisches kleines Tool von Airbnb, mit dem Sie leichter Details zu Ihrem Kafka-Cluster anzeigen und einige administrative Aufgaben über die Befehlszeile ausführen können. Da es sich um ein Ruby-Juwel handelt, benötigen Sie Ruby, um es zu verwenden. Sie benötigen außerdem das Paketbuild-essential, um die anderen Edelsteine ​​erstellen zu können, von denen es abhängt. Installieren Sie sie mitapt-get:

sudo apt-get install ruby ruby-dev build-essential

Sie können KafkaT jetzt mit dem Befehlgem installieren:

sudo gem install kafkat --source https://rubygems.org --no-ri --no-rdoc

Verwenden Sievi, um eine neue Datei mit dem Namen.kafkatcfg zu erstellen.

vi ~/.kafkatcfg

Dies ist eine Konfigurationsdatei, mit der KafkaT die Installations- und Protokollverzeichnisse Ihres Kafka-Servers ermittelt. Es sollte auch KafkaT auf Ihre ZooKeeper-Instanz verweisen. Fügen Sie dementsprechend die folgenden Zeilen hinzu:

~/.kafkatcfg

{
  "kafka_path": "~/kafka",
  "log_path": "/tmp/kafka-logs",
  "zk_path": "localhost:2181"
}

Sie können KafkaT jetzt verwenden. So können Sie zunächst Details zu allen Kafka-Partitionen anzeigen:

kafkat partitions

Sie sollten die folgende Ausgabe sehen:

Ausgabe von kafkat-Partitionen

Topic           Partition   Leader      Replicas        ISRs
TutorialTopic   0             0           [0]           [0]

Weitere Informationen zu KafkaT finden Sie unterGitHub repository.

[[Schritt 9 - Einrichten eines Multi-Node-Clusters - optional]] == Schritt 9 - Einrichten eines Multi-Node-Clusters (optional)

Wenn Sie einen Multi-Broker-Cluster mit mehr Ubuntu 14.04-Computern erstellen möchten, sollten Sie Schritt 1, Schritt 3, Schritt 4 und Schritt 5 auf jedem neuen Computer wiederholen. Darüber hinaus sollten Sie die folgenden Änderungen in derserver.properties-Datei in jeder von ihnen vornehmen:

  • Der Wert der Eigenschaftbroker.idollte so geändert werden, dass er im gesamten Cluster eindeutig ist

  • Der Wert der Eigenschaftzookeeper.connect sollte so geändert werden, dass alle Knoten auf dieselbe ZooKeeper-Instanz verweisen

Wenn Sie mehrere ZooKeeper-Instanzen für Ihren Cluster haben möchten, sollte der Wert der Eigenschaftzookeeper.connectauf jedem Knoten eine identische, durch Kommas getrennte Zeichenfolge sein, in der die IP-Adressen und Portnummern aller ZooKeeper-Instanzen aufgeführt sind.

[[Schritt-10 -—- den-Kafka-Benutzer einschränken]] == Schritt 10 - Den Kafka-Benutzer einschränken

Nachdem alle Installationen abgeschlossen sind, können Sie die Administratorrechte des Benutzerskafkaentfernen. Melden Sie sich vorher ab und wieder als jeder andere Benutzer ohne Rootberechtigung an. Wenn Sie immer noch dieselbe Shell-Sitzung ausführen, mit der Sie dieses Lernprogramm gestartet haben, geben Sie einfachexit ein.

Um die Administratorrechte des Benutzerskafkazu entfernen, entfernen Sie ihn aus der Gruppesudo.

sudo deluser kafka sudo

Um die Sicherheit Ihres Kafka-Servers weiter zu verbessern, sperren Sie das Kennwort des Benutzerskafkamit dem Befehlpasswd. Dies stellt sicher, dass sich niemand direkt einloggen kann.

sudo passwd kafka -l

Zu diesem Zeitpunkt kann sich nur root oder ein sudo-Benutzer alskafka anmelden, indem Sie den folgenden Befehl eingeben:

sudo su - kafka

Wenn Sie es in Zukunft entsperren möchten, verwenden Siepasswd mit der Option-u:

sudo passwd kafka -u

Fazit

Sie haben jetzt einen sicheren Apache Kafka auf Ihrem Ubuntu-Server. Sie können es problemlos in Ihren Projekten verwenden, indem Sie Kafka-Produzenten und -Konsumenten mitKafka clientserstellen, die für die meisten Programmiersprachen verfügbar sind. Um mehr über Kafka zu erfahren, gehen Sie diedocumentation durch.