Installation eines Apache Kafka-Clusters auf Debian 12
08:48, 30.07.2026
Kurzanleitung: Einrichtung von Apache Kafka unter Debian 12
Apache Kafka ist eine leistungsstarke, verteilte Event-Streaming-Plattform, die für die Verteilung von Nachrichten mit hohem Durchsatz und geringer Latenz entwickelt wurde.
Die Einrichtung von Kafka unter Debian 12 erfordert eine sorgfältige Konfiguration, um ein zuverlässiges und skalierbares Daten-Streaming zu ermöglichen.
Diese Anleitung bietet eine Schritt-für-Schritt-Anleitung zur Installation und Konfiguration eines Apache-Kafka-Clusters unter Debian 12 und hebt dabei wesentliche Schritte und Konfigurationen hervor.
Grundprinzipien und Elemente der Kafka-Architektur
Die Architektur von Kafka basiert auf mehreren Kernkomponenten:
- Broker: Kafka läuft als Cluster, der aus einem oder mehreren Servern besteht, den sogenannten Brokern, die die Speicherung und Verteilung von Nachrichten verwalten.
- Topics: Benannte Kategorien, an die Datensätze gesendet und aus denen Datensätze gelesen werden.
- Producer: Anwendungen, die Datensätze an Kafka-Topics senden.
- Consumer: Anwendungen, die Datensätze aus Topics lesen.
- Partitionen: Kafka-Themen, die zur besseren Verteilung auf mehrere Broker in Abschnitte unterteilt sind.
- Replikation: Jede Partition wird repliziert, wobei eine für Lese- und Schreibanfragen zuständig ist, während andere die Daten replizieren.
- Streams: Eine Bibliothek zur Stream-Verarbeitung für Echtzeit-Streaming-Anwendungen und Microservices.
- ZooKeeper (optional): Wurde früher für die Metadatenverwaltung verwendet, wird nun durch den Kafka-Raft-Modus (KRaft) ersetzt, um eine bessere Selbstverwaltung zu ermöglichen.
Installation von Apache Kafka unter Debian 12
Installation von Java 8+ unter Debian 12
Apache Kafka benötigt Java 8 oder höher, um ausgeführt zu werden. Befolgen Sie diese Schritte, um Java zu installieren:
- Aktualisieren Sie den Paketindex:
sudo apt update - Installieren Sie das OpenJDK-Paket:
sudo apt install -y openjdk-11-jdk - Überprüfen Sie die Java-Installation:
java -version
Laden Sie die neueste Kafka-Version herunter
- Gehen Sie zu die Download-Seite von Apache Kafka und laden Sie die neueste Version herunter.
- Laden Sie Kafka mit wget oder curl herunter:
wget https://downloads.apache.org/kafka/3.x.x/kafka_2.13-3.x.x.tgz
Entpacken Sie das Kafka-Binärarchiv
Entpacken Sie das heruntergeladene Archiv:
tar -xzf kafka_2.13-3.x.x.tgz
Verschieben Sie den entpackten Ordner nach /opt:
sudo mv kafka_2.13-3.x.x /opt/kafka
Starten von Kafka im KRaft-Modus (KRaft)
Im KRaft-Modus entfällt die Notwendigkeit von ZooKeeper, was die Verwaltung des Kafka-Clusters vereinfacht. Die KRaft-Konfigurationsdateien finden Sie unter /opt/kafka/config/kraft/.
Konfigurieren Sie KRaft für einen Kafka-Cluster
- Erstellen Sie eine neue Konfigurationsdatei oder bearbeiten Sie die vorhandene „server.properties“:
sudo nano /opt/kafka/config/kraft/server.properties - Fügen Sie die folgenden Eigenschaften hinzu oder ändern Sie sie:
process.roles=broker,controller node.id=1 controller.quorum.voters=1@<broker-ip>:9093 listeners=PLAINTEXT://<broker-ip>:9092,CONTROLLER://<broker-ip>:9093 log.dirs=/var/lib/kafka/data
Protokollverzeichnis ändern
Stellen Sie sicher, dass die Kafka-Protokolle in einem Verzeichnis mit ausreichendem Speicherplatz gespeichert werden; standardmäßig werden die Protokolle im Verzeichnis „/tmp/kraft-combined-logs“ gespeichert.
Um sicherzustellen, dass die Protokolle in einem Verzeichnis mit ausreichend Speicherplatz gespeichert werden, aktualisieren Sie bei Bedarf log.dirs in server.properties:
log.dirs=/new/path/to/kafka-logs
Erstellen Sie eine Kafka-Cluster-ID
Eine Cluster-ID dient zur Identifizierung eines Clusters im KRaft-Modus.
- Erstellen Sie die Cluster-ID:
/opt/kafka/bin/kafka-storage.sh random-uuid - Speichern Sie die generierte ID und formatieren Sie das Protokollverzeichnis:
/opt/kafka/bin/kafka-storage.sh format -t <cluster-id> -c /opt/kafka/config/kraft/server.properties
Kafka-Protokollverzeichnis in das KRaft-Format konvertieren
Mit der im vorherigen Schritt generierten Cluster-ID können wir die Protokollverzeichnisse formatieren. Dies geschieht für jeden Kafka-Broker, damit dieser über ein Verzeichnis zum Speichern seiner Protokolle verfügt (sofern der Cluster aus mehreren Knoten besteht).
- Formatieren Sie das Log-Verzeichnis mithilfe der Cluster-ID und des folgenden Befehls:
/opt/kafka/bin/kafka-storage.sh format -t <uuid> -c /opt/kafka/config/kraft/server.properties - Ersetzen Sie die UUID durch URaeRekUQAyy8wLMNX2Q-w, sodass der Befehl wie folgt aussieht:
/opt/kafka/bin/kafka-storage.sh format -t URaeRekUQAyy8wLMNX2Q-w \ -c /opt/kafka/config/kraft/server.properties Alternativ können Sie den folgenden Befehl verwenden:
/opt/kafka/bin/kafka-storage.sh format \ -t /opt/kafka/bin/kafka-storage.sh random-uuid \ -c /opt/kafka/config/kraft/server.properties
Kafka-Heap-Größe anpassen
Um eine stabile Leistung von Kafka zu gewährleisten, können Sie die Heap-Größe entsprechend anpassen; die Heap-Größe entspricht im Wesentlichen dem Arbeitsspeicher, der der Java Virtual Machine (JVM) zur Verfügung steht, auf der Kafka ausgeführt wird. Sie müssen sicherstellen, dass die Heap-Größe für das Datenaufkommen ausreicht, das Ihr Server verarbeiten muss.
Eine der Einstellungen, die Speicherplatz beansprucht und Einfluss darauf hat, wie lange Kafka die Daten speichert, ist log.retention.hours, die standardmäßig auf 7 Tage festgelegt ist. Andere Parameter wie log.retention.minutes, log.retention.ms, oder log.retention.bytes können ebenfalls verwendet werden; diese Parameter können in der Datei /opt/kafka/config/kraft/server.properties angepasst werden.
Um Daten beispielsweise 8 Stunden lang aufzubewahren, verwenden Sie die folgende Zeile:
log.retention.hours=8
Speichern Sie anschließend die Datei und schließen Sie sie.
Starten des Kafka-Brokers
Kafka-Broker im Vordergrund starten
Führen Sie den Kafka-Broker manuell aus:
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
Kafka-Broker als systemd-Dienst ausführen
- Erstellen Sie eine kafka.service-Datei erstellen:
sudo nano /etc/systemd/system/kafka.service
- Fügen Sie die folgende Konfiguration hinzu:
[Unit] Description=Apache Kafka Service After=network.target
[Service] Type=simple ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties Restart=on-failure User=kafka
[Install] WantedBy=multi-user.target
- Laden Sie systemd neu und starten Sie Kafka:
sudo systemctl daemon-reload sudo systemctl start kafka sudo systemctl enable kafka
Themen erstellen, Nachrichten senden und empfangen in Kafka
Bei richtiger Konfiguration können Ihre Produzenten Nachrichten an Kafka-Themen veröffentlichen und Konsumenten verschiedene Themen abonnieren und Datensätze daraus lesen.
Ein Thema manuell erstellen
Um ein Testthema auf dem Kafka-Server/Broker zu erstellen, verwenden Sie:
/opt/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server <broker-ip>:9092 --partitions 1 --replication-factor 1
Verfügbare Kafka-Themen anzeigen
Um verfügbare Kafka-Themen anzuzeigen, verwenden Sie:
/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server <broker-ip>:9092
Schreiben (Produzieren) und Lesen (Consume) von Nachrichten in Kafka-Themen
- Um eine Nachricht zu produzieren, verwenden Sie den folgenden Befehl:
/opt/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \ --topic kafka-topic-test
Nach der Ausführung erhalten Sie folgende Eingabeaufforderung: >
- Geben Sie Ihre Nachricht ein und drücken Sie die Eingabetaste:
>Hallo Kafka, dies ist meine Nachricht
- Um die Nachricht zu konsumieren, verwenden Sie:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic kafka-topic-test
Kafka-Themen entfernen
Um ein Thema zu löschen, verwenden Sie:
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic <Name-des-Themas>
Um alle Themen zu löschen, verwenden Sie:
for i in /opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092;do /opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic $i; done
Einrichten eines Kafka-Clusters mit drei Knoten
Konfigurieren Sie mehrere Broker, indem Sie für jeden Knoten separate server.properties-Dateien mit eindeutigen node.id-, listeners- und log.-Einstellungen erstellen. Passen Sie `controller.quorum.voters` so an, dass alle Knoten einbezogen werden.
Verwaltung von Kafka-Clustern über die Benutzeroberfläche
Tools wie Kafka Manager, Conduktor und Lenses.io bieten grafische Oberflächen zur Überwachung und Verwaltung von Kafka-Clustern. Nach unserer Erfahrung erleichtern diese Tools die Administration.
Die Einrichtung von Apache Kafka unter Debian 12 mit KRaft ermöglicht robustes, dezentrales Message-Streaming und skalierbare Datenpipelines – unverzichtbar für moderne, datengesteuerte Anwendungen.