Skip to content

Instantly share code, notes, and snippets.

@kovalchukrs
Last active November 3, 2025 20:45
Show Gist options
  • Select an option

  • Save kovalchukrs/b088722bcb6cdcb2ec200a8029b91ba4 to your computer and use it in GitHub Desktop.

Select an option

Save kovalchukrs/b088722bcb6cdcb2ec200a8029b91ba4 to your computer and use it in GitHub Desktop.
Deploy Kafka with Kraft | Systemd unit

Deploy Kafka with Kraft | Systemd unit

Create user kafka

adduser kafka
adduser kafka sudo
su - kafka

Description

|-| | Kafka path | /opt/kafka | Main config | /opt/kafka/config/kraft/server.properties | Data Store | /main/kafka-data | Logs | /main/kafka-data/kraft-combined-logs | advertised.listeners | PLAINTEXT://<IPADDR>:9092

Download kafka archive

apt update && apt install -y default-jre
wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz
mkdir /opt/kafka; tar -xf kafka_2.13-3.5.1.tgz -C /opt/kafka --strip-components 1

Generate a Cluster UUID

export KAFKA_CLUSTER_ID="$(/opt/kafka/bin/kafka-storage.sh random-uuid)"
echo $KAFKA_CLUSTER_ID

Modify Kraft config (optional)

  • controller.quorum.voters=1@<IPADDR>:9093
  • advertised.listeners=PLAINTEXT://<IPADDR>:9092
  • log.dirs=/main/kafka-data/kraft-combined-logs
vi /opt/kafka/config/kraft/server.properties

Format Log Directories

/opt/kafka/bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c /opt/kafka/config/kraft/server.properties

kafka-server.service

cat <<EOF > /etc/systemd/system/kafka-server.service

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
After=network.target remote-fs.target
Requires=network.target remote-fs.target


[Service]
Type=simple
User=kafka
Group=sudo
Environment=JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=kafka-server.service

EOF

Systemctl

systemctl daemon-reload
systemctl enable kafka-server.service
systemctl start kafka-server.service
systemctl status kafka-server.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment