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