Skip to content

Instantly share code, notes, and snippets.

@kmtr
Last active September 7, 2021 23:40
Show Gist options
  • Save kmtr/97e655fdd5160f1d162f815bb9b77c79 to your computer and use it in GitHub Desktop.
Save kmtr/97e655fdd5160f1d162f815bb9b77c79 to your computer and use it in GitHub Desktop.

Kafka 実行環境構築 (not docker, not k8s)

書いた経緯

遊びで使っている、MacBook Air (M1, 2020) メモリ 8GBの環境でKafkaを使ったアプリケーションを作ろうとしていた。 Kafka環境構築のために、当初はk8sを使おうとしていたのだが、メモリ不足で立ち上げることができなかった。 次にdocker composeを利用することも考えたが、興味の対象はKafkaの運用ではなく、Kafkaで実行されるアプリケーションにあったので、とりあえずOSX上で直接Kafkaを動かすことにした。 あくまで開発用のため、レプリケーションの設定も含めて適当である。

この文書で達成されること

  • ローカル環境で開発用のKafkaを起動する
  • コマンドラインによりBrokerを起動する
  • コマンドラインによりConsumerを起動する

ダウンロード

Kafkaは今のところ(version 2.8)、ZooKeeperに依存している。 そのため、KafkaだけではなくZooKeeperもダウンロードする。

ZooKeeper

Apache ZooKeeper 3.7.0 をダウンロード。

http://zookeeper.apache.org/releases.html#download

Kafka

Binary downloadsの kafka_2.13-2.8.0.tgz をダウンロード。

https://kafka.apache.org/downloads

ディレクトリ配置

ダウンロードしたら展開する。 今後、次のようなディレクトリ構成を想定する。

kafka-dev
|- kafka
\- zookeeper

起動

ZooKeeper

設定ファイル作成

次の内容のファイルを kafka-dev/apache-zookeeper-3.7.0-bin/conf/zoo.cfg として作成する。 開発用であるため、dataDirを /tmp の下にしている。 必要に応じてパスを変えるとよい。

tickTime=2000
dataDir=/tmp/zookeeper
admin.serverAddress=127.0.0.1
clientPortAddress=127.0.0.1
clientPort=2181

ZooKeeper起動

次のコマンドで実行する

$ zookeeper/bin/zkServer.sh start-foreground

Kafka起動

$ cp kafka/config/server.properties kafka/config/my_server.properties
$ echo "auto.create.topics.enable=false" >> kafka/config/my_server.properties
$ kafka/bin/kafka-server-start.sh config/my_server.properties

auto.create.topics.enable=false は自動でtopicを生成しないための設定。 起動しない場合、 /tmp/kafka-logs を消して再起動する。一度起動しないことがあったが、ちゃんと調査していないがこれでなおった。

動作確認

topic作成

quickstart-events というtopicを生成する。

$ kafka/bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

Broker

2つのイベントを送信する。

$ kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092
This is my first event
This is my second event

C-c で終了。

Consumer

$ kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092
This is my first event
This is my second event

Brokerで送信したイベントを受信できたら成功。
C-c で終了。

KafkaとZooKeeperの終了

どちらも C-c で終了できる。 開発環境ではあるが、Kafkaから落とした方が親切だろう。

参考文献

https://zookeeper.apache.org/doc/current/zookeeperStarted.html https://kafka.apache.org/quickstart

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment