🦘
ローカルでApache Kafkaをたてる
目的
本番では AWS MSKを使って Apache Kafka を利用しているが、
ローカルでの構築のためdocker-composeでたてる。
localstackでも用意できそうなのですが、2022年8月現在有料版しかMSK対応していないようなのでこちらの方法にしています
bitnamiとは
今回はbitnami製のイメージを使います。
ちなみにbitnamiはWordpressやKubernetesなどを簡単に構築できるアプリケーションを提供しておりVMwareが買収しているよう。
コード
docker-compose.yml
version: '3.9'
services:
# Zookeeper
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
container_name: zookeeper
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
tty: true
networks:
- kafka_network
# Kafka Broker
kafka:
image: 'bitnami/kafka:latest'
ports:
- '9093:9093'
- '9094:9094'
container_name: kafka
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,EXTERNAL_DOCKER:PLAINTEXT
- KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9093,EXTERNAL_DOCKER://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://kafka:9092,EXTERNAL://localhost:9093,EXTERNAL_DOCKER://host.docker.internal:9094
- KAFKA_INTER_BROKER_LISTENER_NAME=CLIENT
depends_on:
- zookeeper
tty: true
networks:
- kafka_network
# Kafka UI
kafka-ui:
image: provectuslabs/kafka-ui
container_name: kafka-ui
ports:
- '8080:8080'
restart: always
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
- KAFKA_CLUSTERS_0_ZOOKEEPER=2181
- KAFKA_CLUSTERS_0_READONLY=false
networks:
- kafka_network
networks:
kafka_network:
設定内容
bitnami/zookeeper
設定 | 内容 | 初期値 |
---|---|---|
ALLOW_ANONYMOUS_LOGIN | yas or no 認証が必要か? ローカルでは入らなそう | no |
bitnami/kafka
設定 | 内容 | 初期値 |
---|---|---|
KAFKA_CFG_ZOOKEEPER_CONNECT | zookeeperのHOST:PORT | |
ALLOW_PLAINTEXT_LISTENER | yes or no 認証の有無 | no |
KAFKA_BROKER_ID | ブローカーID | |
KAFKA_CFG_LISTENERS | Kafkaリスナーをコンマ区切りでリストする | |
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP | リスナーごとに指定するセキュリティプロトコルキーペア | |
KAFKA_CFG_ADVERTISED_LISTENERS | リスナーのコンマ区切りリストで、ホストまたは IP およびポートを指定 | |
KAFKA_INTER_BROKER_LISTENER_NAME | ブローカー間通信に使用する対象のリスナー |
起動
docker-compose up
略
kafka-ui | _ _ ___ __ _ _ _ __ __ _
kafka-ui | | | | |_ _| / _|___ _ _ /_\ _ __ __ _ __| |_ ___ | |/ /__ _ / _| |_____
kafka-ui | | |_| || | | _/ _ | '_| / _ \| '_ / _` / _| ' \/ -_) | ' </ _` | _| / / _`|
kafka-ui | \___/|___| |_| \___|_| /_/ \_| .__\__,_\__|_||_\___| |_|\_\__,_|_| |_\_\__,|
kafka-ui | |_|
kafka-ui |
略
kafka UI
localhost:8080
参考
Discussion