tjtjtjのメモ

自分のためのメモです

kafka あとくされなく気軽に試したい

vm 作り直すのも面倒。docker でなんとかしたい。http://wurstmeister.github.io/kafka-docker/ でやるのが有名のようだ。が実際やってみるとメンドクサイ。 こっちが楽じゃないか。

hub.docker.com

気軽に試す

kafka と zookeeper 起動

$ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-kafka/master/docker-compose.yml > docker-compose.yml
$ docker-compose up

確認

$ docker-compose ps
              Name                        Command           State                       Ports
-----------------------------------------------------------------------------------------------------------------
bitnami_kafka_1_b4e7444b5ac1       /entrypoint.sh /run.sh   Up      0.0.0.0:9092->9092/tcp
bitnami_zookeeper_1_44054781d94b   /entrypoint.sh /run.sh   Up      0.0.0.0:2181->2181/tcp, 2888/tcp, 3888/tcp,
$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
fa44c4fa3457        bitnami_default     bridge              local
5ee57849102a        bridge              bridge              local
123b1da9fc93        host                host                local
55a73359e1e6        none                null                local

トピック確認。いちいちコメントがうるさいwww

$ docker run -it --rm \
     --network bitnami_default \
     -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
     bitnami/kafka:latest kafka-topics.sh --list  --zookeeper=zookeeper:2181

 11:13:26.34
 11:13:26.34 Welcome to the Bitnami kafka container
 11:13:26.34 Subscribe to project updates by watching https://github.com/bitnami/bitnami-docker-
 11:13:26.34 Submit issues and feature requests at https://github.com/bitnami/bitnami-docker-kaf
 11:13:26.35 Send us your feedback at containers@bitnami.com
 11:13:26.35

トピック作成

$ docker run -it --rm \
     --network bitnami_default \
     -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
     bitnami/kafka:latest \
     kafka-topics.sh --create --topic test --partitions 1 --zookeeper zookeeper:2181 --replication-factor 1

トピック確認

$ docker run -it --rm \
     --network bitnami_default \
     -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
     bitnami/kafka:latest \
     kafka-topics.sh --list  --zookeeper zookeeper:2181

test

コンソールプロデューサー

$ docker run -it --rm \
     --network bitnami_default \
     -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
     bitnami/kafka:latest \
     kafka-console-producer.sh --topic=test --broker-list=kafka:9092
>asdf
>qwer
>zxcv
>tyui
>f
>h
>j
>k
>l
>ggggggg
>^C

コンソールコンシューマー。プロデューサーを起動したままにしておくと、コンシューマにメッセージが渡るのが確認できる。

$ docker run -it --rm \
     --network bitnami_default \
     -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 \
     bitnami/kafka:latest \
     kafka-console-consumer.sh --bootstrap-server=kafka:9092 --topic test --from-beginning

asdf
qwer
zxcv
tyui
f
h
j
k
l
ggggggg
^CProcessed a total of 10 messages

おわり

wurstmeister/kafka-docker はソケットを使ったりして面白い。が ip/port しらべたりする手間があって面倒だ。

bitnami でなくても、kafka zookeeper が入ってる docker-compose.yml はそこら中にあるからテキトーに...信用にできるイメージを使えばいいと思う。 kafka 操作するたびに docker run するのはカッコ悪いかもしれないが、要は kafka-***.sh の行だけ変えればいい。