docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka1.1.2. 启动
启动Zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper1.1.2.1. 启动kafka容器,其中192.168.59.101是宿主机的IP地址
docker run -d --name kafka --publish 9092:9092 --link zookeeper --env KAFKA_ZOOKEEPER_ConNECT=zookeeper:2181 --env KAFKA_ADVERTISED_HOST_NAME=192.168.59.101 --env KAFKA_ADVERTISED_PORT=9092 --volume /etc/localtime:/etc/localtime wurstmeister/kafka:latest1.1.2.2. kafka docker 启动参数说明
-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己-e KAFKA_ZOOKEEPER_ConNECT=192.168.155.56:2181/kafka 配置zookeeper管理kafka的路径192.168.155.56:2181/kafka-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.56:9092 把kafka的地址端口注册给zookeeper-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间 1.1.3. 验证启动
运行 docker ps,找到kafka的 ConTAINER ID,运行 docker exec -it ${ConTAINER ID} /bin/bash,进入kafka容器。进入kafka默认目录 /opt/kafka_2.11-0.10.1.0
2. kafka 常用配置项说明
配置文件位置:${KAFKA_HOME}/config/server.properties
修改内容如下
# 默认配置 advertised.listeners=PLAINTEXT://your.host.name:9092
advertised.listeners=PLAINTEXT://${本机服务器IP}:9092
# broker.id标识本机
broker.id=0
# log.dirs
log.dirs=/data/logs/kafka-logs
# zookeeper.connect指定连接的zookeeper集群地址
- ip为服务器iphostname和端口是用来建议给生产者和消费者使用的,如果没有设置,将会使用listeners的配置,如果listeners也没有配置,将使用java.net.InetAddress.getCanonicalHostName()来获取这个hostname和port,对于ipv4,基本就是localhost了。"PLAINTEXT"表示协议,可选的值有PLAINTEXT和SSL,hostname可以指定IP地址,也可以用"0.0.0.0"表示对所有的网络接口有效,如果hostname为空表示只对默认的网络接口有效。也就是说如果你没有配置advertised.listeners,就使用listeners的配置通告给消息的生产者和消费者,这个过程是在生产者和消费者获取源数据(metadata)。
三台机器:192.168.244.128 192.168.244.130 192.168.244.131
3.1.1. 三台主机上的配置内容# 192.168.244.128 broker.id=1 log.dirs=/data/logs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 # 192.168.244.130 broker.id=2 log.dirs=/data/logs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 # 192.168.244.131 broker.id=3 log.dirs=/data/logs/kafka-logs zookeeper.connect=192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:21813.2. 启动
在三个节点上分别执行nohup ./kafka-server-start.sh -daemon ../config/server.properties &
4. Kafka 基本操作命令# 创建TOPIC ./kafka-topics.sh --create --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --replication-factor 3 --partitions 6 --topic kfk_test #列出创建的topic ./kafka-topics.sh --list --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 # 生成数据,注意这里的端口号是kafka的端口 9092 ./kafka-console-producer.sh -broker-list 192.168.244.128:9092,192.168.244.130:9092,192.168.244.131:9092 --topic kfk_test # 消费生产数据,kafka 0.9版本之前用zookeeper ./kafka-console-consumer.sh --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --from-beginning --topic kfk_test # kafka 0.9版本之后不推荐zookeeper方式,仍然支持,但逐渐会被取消,推荐bootstrap-server方式,注意这里的端口号是kafka的端口 9092 ./kafka-console-consumer.sh --bootstrap-server 192.168.244.128:9092,192.168.244.130:9092,192.168.244.131:9092 --from-beginning --topic kfk_test #查看指定topic信息 ./kafka-topics.sh --describe --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --topic kfk_test #删除kafka中的topic ./kafka-topics.sh --delete --zookeeper 192.168.244.128:2181,192.168.244.130:2181,192.168.244.131:2181 --topic kfk_test # 删除zookeeper中的topic信息 rmr /brokers/topics/kfk_test rmr /config/topics/kfk_test rmr /admin/delete_topics/kfk_test rmr /consumers/kfk_test-group # 删除topic数据相关的目录 rm -rf /var/local/kafka/data/kfk_test*



