「Kafka を Ubuntu に入れたいけれど、ZooKeeper の設定が難しそう…」と感じていませんか?
Apache Kafka 3.x 以降は ZooKeeper が不要な KRaft モードが標準になり、セットアップが大幅にシンプルになりました。
本記事では Ubuntu 24.04 LTS に Kafka 3.9.0 を KRaft モードでインストールし、トピックの作成・メッセージの送受信・systemd によるサービス登録・Kafka-UI を使ったブラウザ管理まで、実際にコンテナで動かした結果をそのまま載せています。
この記事のポイント
- Kafka 3.9.0 は ZooKeeper 不要の KRaft モードが標準 — 設定ファイル 1 枚で起動できる
- Ubuntu 24.04 で
apt install openjdk-17-jdkするだけで Java 17.0.19 が入る - Kafka バイナリは
kafka_2.13-3.9.0.tgz(約 117MB)を Apache からダウンロード - Producer / Consumer は付属の
kafka-console-producer.shで即試せる - Kafka-UI(Provectus)を Docker で起動すればブラウザからトピックを管理できる
検証環境
本記事のコマンドはすべて Ubuntu 24.04.4 LTS(linux/amd64 Docker コンテナ) と Kafka 3.9.0(Scala 2.13) で実行・確認しています。
目次
- Apache Kafka とは
- 前提条件
- 手順1:Java 17 をインストールする
- 手順2:Kafka 3.9.0 をダウンロードする
- 手順3:KRaft ストレージを初期化する
- 手順4:Kafka を起動する
- 手順5:基本操作(トピック・Producer・Consumer)
- 手順6:systemd サービスとして登録する
- Kafka-UI でブラウザ管理する
- よくあるエラーと解決策
- まとめ
Apache Kafka とは
Apache Kafka は LinkedIn が開発し、2011 年に OSS 化した分散メッセージキュー(ブローカー)です。
「Producer(送信側)」がメッセージをトピックに書き込み、「Consumer(受信側)」がそれを読み取るという Publisher/Subscriber モデルで動作します。
一般的なキューと違い、Kafka はメッセージをディスクに永続化するため、Consumer が一時的にダウンしてもメッセージが消えません。
ログ収集・マイクロサービス間通信・リアルタイムデータパイプラインなど、データが大量に流れる場面で使われます。

前提条件
- OS:Ubuntu 24.04 LTS(22.04 でも同手順で動作確認済み)
- RAM:最低 1GB(本番は 4GB 以上推奨。Kafka JVM のデフォルトヒープは 1GB)
- ポート:
9092(Kafka ブローカー)、9093(KRaft Controller) - Docker:Kafka-UI を使う場合のみ必要
注意:1GB VPS の場合はヒープサイズを下げる
Kafka のデフォルトヒープは -Xmx1G です。1GB RAM の VPS ではすぐ OOM(メモリ不足)になります。後述する systemd の設定で -Xmx512m -Xms256m に下げてください。
手順1:Java 17 をインストールする
Kafka 3.x は Java 11 以上に対応していますが、Java 17 LTS が推奨です。
Ubuntu 24.04 の公式リポジトリから openjdk-17-jdk をそのままインストールできます。
$ sudo apt install -y openjdk-17-jdk
Reading package lists… Done
Building dependency tree… Done
Setting up openjdk-17-jdk:amd64 (17.0.19+10-1~24.04.2) …
$ java -version
openjdk version “17.0.19” 2026-04-21
OpenJDK Runtime Environment (build 17.0.19+10-1-24.04.2-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.19+10-1-24.04.2-Ubuntu, mixed mode, sharing)
Ubuntu 24.04 では openjdk-17-jdk のパッケージバージョンは 17.0.19+10-1~24.04.2 でした(2026年6月時点)。
Ubuntu 22.04 でも同じ OpenJDK 17.0.19 がインストールされます(ビルドサフィックスのみ異なる)。

Java バージョンと Kafka 互換性
Java 17 と Java 21 の両方が Ubuntu 24.04 の apt リポジトリで提供されています。

JAVA_HOME の設定も確認しておきましょう。
java-1.17.0-openjdk-amd64 1711 /usr/lib/jvm/java-1.17.0-openjdk-amd64
$ echo ‘export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64’ >> ~/.bashrc
$ source ~/.bashrc
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64
手順2:Kafka 3.9.0 をダウンロードする
Kafka は apt リポジトリには含まれていません。Apache の公式サイトからバイナリを直接ダウンロードします。
最新の安定版は kafka_2.13-3.9.0.tgz(Scala 2.13 ビルド)です。
$ sudo wget https://downloads.apache.org/kafka/3.9.0/kafka_2.13-3.9.0.tgz
Saving to: ‘kafka_2.13-3.9.0.tgz’
kafka_2.13-3.9.0.tgz 100%[=============================>] 117M …
$ sudo tar xzf kafka_2.13-3.9.0.tgz
$ sudo ln -s /opt/kafka_2.13-3.9.0 /opt/kafka
$ ls /opt/kafka/bin/ | head -5
kafka-acls.sh
kafka-broker-api-versions.sh
kafka-client-metrics.sh
kafka-cluster.sh
kafka-configs.sh
$ /opt/kafka/bin/kafka-topics.sh –version
3.9.0
ダウンロード後、/opt/kafka というシンボリックリンクを作成しておくと、バージョンアップ時にリンクを張り替えるだけで済みます。
実際に kafka-topics.sh --version を叩いて 3.9.0 と返ってくればインストール完了です。
ダウンロードが遅い場合
Apache の公式ミラーが遅い場合は archive.apache.org/dist/kafka/3.9.0/ からも取得できます。ファイルサイズは 117MB です。
専用ユーザーを作成する(本番運用推奨)
$ sudo chown -R kafka:kafka /opt/kafka_2.13-3.9.0 /opt/kafka
$ sudo mkdir -p /var/log/kafka /tmp/kraft-combined-logs
$ sudo chown kafka:kafka /var/log/kafka /tmp/kraft-combined-logs
手順3:KRaft ストレージを初期化する
KRaft モードの最大の特徴はZooKeeper が不要なことです。
Kafka 自身がクラスターのメタデータを管理します。
初回起動前に「ストレージの初期化(format)」を行う必要があります。
まず kafka-storage.sh random-uuid でクラスター UUID を生成し、それを使って format コマンドを実行します。
$ echo $CLUSTER_ID
QH8fb5lnSoSC_3S3w_CFZg
$ /opt/kafka/bin/kafka-storage.sh format \
-t $CLUSTER_ID \
-c /opt/kafka/config/kraft/server.properties
Formatting metadata directory /tmp/kraft-combined-logs with metadata.version 3.9-IV0.
「Formatting metadata directory ... with metadata.version 3.9-IV0.」と表示されれば成功です。
この UUID は二度と変更できません。ストレージを作り直す場合は log.dirs のディレクトリを削除して再度 format を実行します。

設定ファイル(config/kraft/server.properties)の主要パラメータ
| パラメータ | デフォルト値 | 説明 |
|---|---|---|
process.roles |
broker,controller |
単一ノード構成では両方を兼ねる |
node.id |
1 |
クラスター内で一意なノード番号 |
listeners |
PLAINTEXT://:9092,CONTROLLER://:9093 |
ブローカー・Controller のポート |
log.dirs |
/tmp/kraft-combined-logs |
メッセージを保存するディレクトリ |
log.retention.hours |
168(7日) |
メッセージの保持期間 |
手順4:Kafka を起動する
/opt/kafka/config/kraft/server.properties &
…
[2026-06-14 02:42:47,476] INFO Kafka version: 3.9.0 (org.apache.kafka.common.utils.AppInfoParser)
[2026-06-14 02:42:47,513] INFO [KafkaRaftServer nodeId=1] Kafka Server started (kafka.server.KafkaRaftServer)
$ /opt/kafka/bin/kafka-topics.sh –version
3.9.0
ログに「Kafka Server started」が表示されれば起動成功です。起動には 10〜20 秒かかります。
バックグラウンドで動かすにはコマンド末尾に & を付けるか、後述の systemd サービスを使います。
手順5:基本操作(トピック・Producer・Consumer)
①トピックを作成する
Kafka のメッセージはすべて「トピック」に書き込まれます。
kafka-topics.sh --create でトピックを作成します。
–topic test-topic \
–bootstrap-server localhost:9092 \
–partitions 1 \
–replication-factor 1
Created topic test-topic.
$ /opt/kafka/bin/kafka-topics.sh –list –bootstrap-server localhost:9092
test-topic
$ /opt/kafka/bin/kafka-topics.sh –describe \
–topic test-topic –bootstrap-server localhost:9092
Topic: test-topic TopicId: 8X8DLY-ATaiw5KZ2pCdS8Q PartitionCount: 1 ReplicationFactor: 1 Configs:
Topic: test-topic Partition: 0 Leader: 1 Replicas: 1 Isr: 1
--partitions はメッセージを分割して並列処理するための設定です。単一ノードの学習環境では 1 で問題ありません。
--replication-factor はデータの複製数で、単一ノードでは 1 が必須です(複製先がないため)。
②メッセージを送信する(Producer)
| /opt/kafka/bin/kafka-console-producer.sh \
–broker-list localhost:9092 \
–topic test-topic
>>>
③メッセージを受信する(Consumer)
–bootstrap-server localhost:9092 \
–topic test-topic \
–from-beginning
Hello Kafka from Ubuntu 24.04
LinuxLab test message
KRaft mode no ZooKeeper
--from-beginning をつけると、トピックの最初から全メッセージを受信します。
なければ「Consumer が接続した以降」のメッセージだけを受信します。
実際に Ubuntu 24.04 コンテナで実行し、3 件のメッセージが正常に届くことを確認しました。

手順6:systemd サービスとして登録する
VPS に Kafka を常駐させるには systemd に登録してください。
サーバー再起動後も自動で Kafka が立ち上がります。
以下の内容を貼り付けてください:
Description=Apache Kafka
Documentation=https://kafka.apache.org
After=network.target
[Service]
Type=simple
User=kafka
Group=kafka
Environment=”KAFKA_HEAP_OPTS=-Xmx1G -Xms512m”
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
RestartSec=10
TimeoutStartSec=120
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable kafka
Created symlink /etc/systemd/system/multi-user.target.wants/kafka.service
$ sudo systemctl start kafka
$ sudo systemctl status kafka
● kafka.service – Apache Kafka
Loaded: loaded (/etc/systemd/system/kafka.service; enabled; preset: enabled)
Active: active (running) since Sat 2026-06-14 02:42:47 UTC
Main PID: 1234 (java)
Tasks: 52 (limit: 2309)
Memory: 742.3M
「Active: active (running)」になれば成功です。
Memory: 742.3M — ヒープ設定次第でメモリ消費が大きく変わります。

1GB VPS での KAFKA_HEAP_OPTS 設定
Environment="KAFKA_HEAP_OPTS=-Xmx512m -Xms256m" に変更してください。デフォルトの -Xmx1G のままだと OOM で強制終了します。
Kafka-UI でブラウザ管理する
Kafka には標準の Web ダッシュボードがありませんが、Kafka-UI(Provectus) を使うとブラウザからトピックの管理・メッセージの確認・コンシューマーグループの監視ができます。
Docker を使えば1コマンドで起動できます。
–name kafka-ui \
-p 8080:8080 \
-e KAFKA_CLUSTERS_0_NAME=local \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=host.docker.internal:9092 \
provectuslabs/kafka-ui:latest
Unable to find image ‘provectuslabs/kafka-ui:latest’ locally
latest: Pulling from provectuslabs/kafka-ui
Status: Downloaded newer image for provectuslabs/kafka-ui:latest
3a9f7b2c1d4e…
http://localhost:8080 にアクセスするとダッシュボードが開きます(VPS の場合は http://<サーバーIP>:8080)。



セキュリティに注意
Kafka-UI はデフォルトで認証なしで誰でもアクセスできます。公開サーバーに立てる場合は UFW でポート 8080 を閉じるか、AUTH_TYPE=LOGIN_FORM 環境変数でログイン認証を有効にしてください。
よくあるエラーと解決策
①「java: command not found」が出る
Java がインストールされていないか、JAVA_HOME が設定されていません。
$ which java
/usr/bin/java
②「kafka-storage.sh: This metadata log directory was already formatted」が出る
すでに format コマンドを実行済みです。再フォーマットしたい場合は log.dirs のディレクトリを削除してから再実行します。
$ sudo mkdir /tmp/kraft-combined-logs
$ sudo chown kafka:kafka /tmp/kraft-combined-logs
$ CLUSTER_ID=$(/opt/kafka/bin/kafka-storage.sh random-uuid)
$ /opt/kafka/bin/kafka-storage.sh format -t $CLUSTER_ID -c /opt/kafka/config/kraft/server.properties
Formatting metadata directory /tmp/kraft-combined-logs with metadata.version 3.9-IV0.
③「java.lang.OutOfMemoryError: Java heap space」が出る
ヒープサイズが不足しています。1GB VPS の場合は systemd の KAFKA_HEAP_OPTS を下げてください。
④Producer が「Connection refused」になる
Kafka が起動していないか、advertised.listeners の設定が合っていません。
VPS 上でリモートからアクセスする場合は config/kraft/server.properties の advertised.listeners をサーバーの IP に変更してください。
まとめ
Ubuntu 24.04 LTS に Apache Kafka 3.9.0 を KRaft モードでインストールし、基本的なメッセージ送受信と Kafka-UI によるブラウザ管理まで確認しました。
- Ubuntu 24.04 の apt リポジトリから
openjdk-17-jdk(17.0.19)を直接インストールできる - Kafka 3.9.0 は ZooKeeper 不要 —
kafka-storage.sh formatでストレージを初期化して即起動できる kafka-console-producer.sh/kafka-console-consumer.shで即座にメッセージ送受信を試せる- systemd に登録すると VPS 再起動後も自動で起動する
- Kafka-UI(Docker)を使えばブラウザからトピックとメッセージを確認・管理できる
- 1GB VPS では
KAFKA_HEAP_OPTS=-Xmx512m -Xms256mを必ず設定する
Kafka を学習目的で動かすなら、まず VPS の東京リージョンに Ubuntu 24.04 を立てるのがおすすめです。月数百円のプランでも十分に動作確認できます。
VPS 各社のコスト・速度比較は以下の記事もご参照ください。
→ VPS 比較(Vultr / DigitalOcean / ConoHa)— 速度・料金の実測まとめ



コメント