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:
-
Ubuntu 14.04 Droplet
-
Mindestens 4 GBswap space
[[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 Gruppesudo
hinzu, 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.sh
mitnohup
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.sh
kö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.sh
erstellen. 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 Eigenschaft
broker.id
ollte so geändert werden, dass er im gesamten Cluster eindeutig ist -
Der Wert der Eigenschaft
zookeeper.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.connect
auf 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 Benutzerskafka
entfernen. 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 Benutzerskafka
zu 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 Benutzerskafka
mit 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.