kafka-docker部署

部署zk

docker pull zookeeper

docker run -d --name zookeeper02 -p 2181:2181 -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro zookeeper 

部署kafka

docker pull wurstmeister/kafka

docker run -d --name kafka02 -p 9092:9092 -p 9999:9999 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.18.223:2181 -e KAFKA_ADVERTISED_HOST_NAME=192.168.18.223 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.18.223:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e JMX_PORT=9999 -e KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.18.223 -Dcom.sun.management.jmxremote.rmi.port=9999" -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro wurstmeister/kafka:0.11.0.0

 

参数说明:
-e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=172.16.0.13:2181/kafka 配置zookeeper管理kafka的路径172.16.0.13:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.16.0.13:9092  把kafka的地址端口注册给zookeeper,如果是远程访问要改成外网IP,类如Java程序访问出现无法连接。

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口

-e KAFKA_HEAP_OPTS="-Xmx512M -Xms256M" 控制启动内存

-e JMX_PORT=9997 jvm监控端口 -v /etc/localtime:/etc/localtime:ro 容器时间同步虚拟机的时间

-v /etc/timezone:/etc/timezone:ro 时区同步

 

测试kafka

/opt/kafka/bin:

生产者

bash-4.3# ./kafka-topics.sh --create --zookeeper 192.168.10.11:2181 --replication-factor 1 --partitions 8 --topic test
Created topic "test".
bash-4.3# ./kafka-console-producer.sh --broker-list localhost:9092 --topic test

 

消费者

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

 

然后测试一下生产和消费,正常的话,生产这里发,消费者就会收到。

 

kafka-manager

docker run -d --name kfk-manager --restart always -p 9000:9000 -e ZK_HOSTS=192.168.21.166:2181 -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro kafkamanager/kafka-manager

--restart string                 Restart policy to apply when a container exits (default "no")

  

原来有一个manager,部署在docker,链接一个docker的zk,上面有一个kafka的信息,但我把这个kafka(docker)删掉重新起一个容器时,kafka注册的zk里/brokers/下面的ids,topics的信息都是对的,但manager里的信息是旧的,manager注册的docker-zk也无法exec,重启zk。信息就正常了。

 

posted @ 2020-04-18 12:26  jabbok  阅读(1614)  评论(0编辑  收藏  举报