Kafka on Docker

kafka docker

建立 Zookeeper 容器:

这里用最简单的方式创建一个独立的Zookeeper节点, 如果要考虑zookeeper的高可用, 可以将其做成一个集群, 最好是能有多台机器.

#+BEGIN_SRC shell

$ docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper

#+END_SRC

默认的, 容器内配置文件在, /conf/zoo.cfg, 数据和日志目录默认在/data 和 /datalog, 需要的话可以将上述目录映射到宿主机的可靠文件目录下.

建立 Kafka 集群节点:

使用docker命令可快速在同一台机器搭建多个kafka, 只需要改变brokerId和端口

  • 节点1:

#+BEGIN_SRC shell

$ docker run  -d --name kafka0 -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.103:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.103:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    -t wurstmeister/kafka

#+END_SRC

  • 节点2:

#+BEGIN_SRC shell

$ docker run -d --name kafka1 -p 9093:9093 \
    -e KAFKA_BROKER_ID=1 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.103:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.103:9093 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 \
    -t wurstmeister/kafka

#+END_SRC

  • 节点3:

#+BEGIN_SRC shell

$ docker run -d --name kafka3 -p 9095:9095 \
    -e KAFKA_BROKER_ID=2 \
    -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.103:2181 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.103:9095 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9095 \
    -t wurstmeister/kafka

#+END_SRC

这里面主要设置了 4 个参数

#+BEGIN_SRC pkgconfig

KAFKA_BROKER_ID=0
KAFKA_ZOOKEEPER_CONNECT=192.168.0.103:2181
KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.103:9092
KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092

#+END_SRC

中间两个参数的 192.168.0.102 改为 宿主机器 的IP地址, 如果不这么设置, 可能会导致在别的机器上访问不到 kafka.

Kafka Manager

#+BEGIN_SRC shell

$ docker run -itd --restart=always --name=kafka-manager -p 9000:9000 \
    -e ZK_HOSTS="192.168.0.103:2181" \
    -t sheepkiller/kafka-manager

#+END_SRC