Skip to content

Kafka Setup

System preparation

# Install Java JDK
sudo apt install "openjdk-8-jdk"

# Download Kafka (2.6.0)
curl -O "https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz"

# Extract kafka .tgz to home folder
tar -xzvf "kafka_2.13-3.1.0.tgz"

# Test the binary
cd "kafka_2.13-3.1.0/"
./bin/kafka-topics.sh

# Add link
ln -s "kafka_2.13-2.6.0" "~/kafka"

# Add Kafka to path
echo 'export PATH=$PATH:$HOME/kafka/bin' >> "~/.zshrc"

Start Zookeeper

# Setup config file
vim "~/kafka/bin/config/zookeeper.properties" # edit dataDir=~/kafka/data/zookeeper

# Start zookeeper
~/kafka/bin/zookeeper-server-start.sh "~/kafka/config/zookeeper.properties" # Bind to port 2181. A version-2 folder inside of data/zookeeper is created
~/kafka/bin/zookeeper-server-start.sh -daemon "~/kafka/config/zookeeper.properties" # Run as a daemon

Start Kafka

  • You can start multiple brokers, but the broker id and the advertised listeners of each broker must be different!
# Setup config file
vim "~/kafka/bin/config/server.properties" # edit log.dirs=~/kafka/data/kafka

# Start kafka
~/kafka/bin/kafka-server-start.sh "~/kafka/bin/config/server.properties"
~/kafka/bin/kafka-server-start.sh -daemon "~/kafka/bin/config/server.properties" # Run as a daemon

Service scripts

# Stop Kafka & Zookeeper
sudo ~/kafka/bin/kafka-server-stop.sh
sudo ~/kafka/bin/zookeeper-server-stop.sh

zookeeper.service

  • Create /etc/systemd/system/zookeeper.service and copy the content below
sudo vim "/etc/systemd/system/zookeeper.service"
[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/home/hvitoi/kafka/bin/zookeeper-server-start.sh /home/hvitoi/kafka/config/zookeeper.properties
ExecStop=/home/hvitoi/kafka/bin/zookeeper-server-stop.sh

[Install]
WantedBy=multi-user.target

kafka.service

  • Create /etc/systemd/system/kafka.service and copy the content below
sudo vim "/etc/systemd/system/kafka.service"
[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
ExecStart=/home/hvitoi/kafka/bin/kafka-server-start.sh /home/hvitoi/kafka/config/server.properties
ExecStop=/home/hvitoi/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

Enable systemd scripts

sudo systemctl enable "zookeeper.service"
sudo systemctl enable "kafka.service"

Service management via systemd

sudo systemctl status "zookeeper"
sudo systemctl status "kafka"

sudo systemctl start "zookeeper"
sudo systemctl start "kafka" # Starts the zookeeper automatically

sudo systemctl stop "zookeeper"
sudo systemctl stop "kafka"

Logs

sudo journalctl -u "kafka"