技術的概要
Apache Kafkaは、大量のリアルタイムデータを効率的に処理するための分散メッセージブローカーです。Kafkaクラスターはスケーラブルかつフォールトトレラントであり、他のメッセージブローカー(例: ActiveMQやRabbitMQ)よりも高いスループットを持ちます。このチュートリアルでは、Ubuntu 18.04にApache Kafka 2.1.1をインストールする手順を説明します。
準備
- Ubuntu 18.04サーバーとsudo権限を持つ非rootユーザー。
- 少なくとも4GBのRAM。
- OpenJDK 8のインストール。
Kafka専用ユーザの作成
Kafkaがネットワークリクエストを処理できるようにするために、専用ユーザを作成します。
<code><pre> sudo useradd kafka -m sudo passwd kafka sudo adduser kafka sudo su -l kafka </pre></code>
Kafkaバイナリのダウンロードと展開
Kafkaバイナリをダウンロードし、展開します。
<code><pre> mkdir ~/Downloads curl "https://www.apache.org/dist/kafka/2.1.1/kafka_2.11-2.1.1.tgz" -o ~/Downloads/kafka.tgz mkdir ~/kafka && cd ~/kafka tar -xvzf ~/Downloads/kafka.tgz --strip 1 </pre></code>
Kafkaサーバの設定
テーマ削除を許可する設定を行います。
<code><pre> nano ~/kafka/config/server.properties # ファイル末尾に以下を追加: delete.topic.enable = true </pre></code>
Systemdユニットファイルの作成とKafkaサーバの起動
ZookeeperおよびKafkaサービスのSystemdユニットファイルを作成します。
<code><pre> sudo nano /etc/systemd/system/zookeeper.service # 下記内容を入力: [Unit] Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple User=kafka ExecStart=/home/kafka/kafka/bin/zookeeper-server-start.sh /home/kafka/kafka/config/zookeeper.properties ExecStop=/home/kafka/kafka/bin/zookeeper-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target sudo nano /etc/systemd/system/kafka.service # 下記内容を入力: [Unit] Requires=zookeeper.service After=zookeeper.service [Service] Type=simple User=kafka ExecStart=/bin/sh -c '/home/kafka/kafka/bin/kafka-server-start.sh /home/kafka/kafka/config/server.properties > /home/kafka/kafka/kafka.log 2>&1' ExecStop=/home/kafka/kafka/bin/kafka-server-stop.sh Restart=on-abnormal [Install] WantedBy=multi-user.target sudo systemctl start kafka sudo journalctl -u kafka sudo systemctl enable kafka </pre></code>
インストールのテスト
Kafkaサーバの動作確認を行います。
<code><pre> ~/kafka/bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic SampleTopic echo "Hello, World" | ~/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic SampleTopic > /dev/null ~/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic SampleTopic --from-beginning </pre></code>