docker中安装kafka
docker中安装kafka:
1.下载镜像
由于kafka是基于zookeeper的分布式管理开发的,所以需要下载zookeeper,kafka自带的有zookeeper,但是不好用,有可能会出问题,所以还是推荐自己配置zookeeper,能够自己来管理。
1. docker pull zookeeper
2. docker pull wurstmeister/kafka
2.启动容器
1.docker run -d --name zookeeper -p 2181:2181 -t zookeeper
指定zookeeper的默认端口2181
2. docker run -d --name kafka \ -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=172.16.100.40:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.100.40:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
2. docker run -d --name kafka \ -p 9092:9092 \ -e KAFKA_BROKER_ID=0 \ -e KAFKA_ZOOKEEPER_CONNECT=172.31.74.7:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.100.40:9092 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka
KAFKA_BROKER_ID=0 kafka在集群中的唯一标识 KAFKA_ZOOKEEPER_CONNECT=172.16.100.41:2181 监听zookeeper的地址 KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.100.41:9092 kafka服务器的地址 KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 指定端口
3.查看日志看是否运行成功,进入容器
opt/kafka_2.11-1.1.1/
创建主题
./bin/kafka-topics.sh --create --zookeeper 172.16.100.40:2181 --replication-factor 1 --partitions 1 --topic mykafka
生产者发送消息
./bin/kafka-console-producer.sh --broker-list 172.16.100.40:9092 --topic mykafka
消费者接收消息
./bin/kafka-console-consumer.sh --bootstrap-server 172.16.100.40:9092 --topic mykafka --from-beginning
4.建立kafka集群
使用docker在一台服务器上模拟集群;
通过命令修改broker_id和端口号就能创建新的kafka服务
docker run -d --name kafka1 \ -p 9093:9093 \ -e KAFKA_BROKER_ID=1 \ -e KAFKA_ZOOKEEPER_CONNECT=172.31.74.7:2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.100.40:9093 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -t wurstmeister/kafka
docker run -d --name kafka2 \ -p 9094:9094 \ -e KAFKA_BROKER_ID=2 \ -e KAFKA_ZOOKEEPER_CONNECT= :2181 \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.100.40:9094 \ -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9094 -t wurstmeister/kafka
创建Replication为2,Partition为2的topic
bin/kafka-topics.sh --create --zookeeper 172.16.100.40:2181 --replication-factor 3 --partitions 6 --topic partopic
选一台服务器作为发布者发布消息
./bin/kafka-console-producer.sh --broker-list 172.16.100.40:9093 --topic partopic
在另一台服务器接收消息
./bin/kafka-console-consumer.sh --bootstrap-server 172.16.100.40:9092 --topic partopic --from-beginning
查看topic状态
bin/kafka-topics.sh --describe --zookeeper 172.16.100.40:2181 --topic partopic
topic:主题名称
partition:分区
leader:领导机器
replicas:数据备份的机器
isr:存活的机器
停止一台服务以后的情况:
分区1和分区2的leader都被分配到broker2服务上了。