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。信息就正常了。