第一步你需要装个docker
安装docker可参考该链接:
第二步 搭建zookeeper环境:
拉取zookeeper镜像
docker pull zookeeper:<version> 这里是版本号 如果不加就是拉取最新的版本
启动zookeeper容器
docker run -d --name zookeeper -p 2181:2181 -t zookeeper
拉取kafka镜像:
docker pull wurstmeister/kafka:<version> 这里是版本号 如果不加就是拉取最新的版本
或者
docker pull bitnami/kafka
启动kafka容器:
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=172.17.0.2:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka
注意:这里的KAFKA_ZOOKEEPER_CONNECT不一定是172.17.0.2:2181这个值。这个KAFKA_ZOOKEEPER_CONNECT如果设置不对,则会报下面的这个错:
Opening socket connection to server 0.0.0.0/0.0.0.0:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
[2022-09-18 04:45:47,331] INFO Socket error occurred: 0.0.0.0/0.0.0.0:2181: Connection refused (org.apache.zookeeper.ClientCnxn)
...#最终是kafka启动不起来
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:271)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:125)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:1948)
at kafka.server.KafkaServer.createZkClient$1(KafkaServer.scala:431)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:456)
at kafka.server.KafkaServer.startup(KafkaServer.scala:191)
at kafka.Kafka$.main(Kafka.scala:109)
at kafka.Kafka.main(Kafka.scala)
[2022-09-18 04:46:05,421] INFO shutting down (kafka.server.KafkaServer)
最好的方式是通过:
docker inspect zookeeper --format="{{ .NetworkSettings.IPAddress }}"
或者
docker inspect --format="{{ .NetworkSettings.IPAddress }}" <zookeeper容器ID>
例如,我用的命令是:
C:\Users\stoic>docker inspect zookeeper --format='{{ .NetworkSettings.IPAddress }}'
Template parsing error: template: :1: unclosed action
C:\Users\stoic>docker inspect zookeeper --format="{{ .NetworkSettings.IPAddress }}"
172.17.0.2
第三步 验证kafka环境:
1.新建一个topic:
./kafka-topics.sh --zookeeper 172.17.0.2:2181 --create --topic mytestTopic1 --replication-factor 1 --partitions 3
新建一个副本数为1,分区为3的 mytestTopic1 主题。
2.启动一个生产者向这个主题发送消息:(开启一个新的terminal)
首先进入目录:
cd opt/kafka_<version号>/bin#
然后在目录下:启动一个生产者
./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic mytestTopic1
3.启动一个消费者向这个主题获取消息:(再开启一个新的terminal)
首先进入目录:
cd opt/kafka_<version号>/bin#
然后在该目录下:启动一个消费者
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytestTopic1
注意:这里的--bootstrap-server的值要和启动kafka容器时:KAFKA_ADVERTISED_LISTENERS的值保持一致,并且能够ping通,否则会报:
Connection to node -1 (/192.168.1.1:9092) could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
第四步 搭建kafka管理平台
docker pull sheepkiller/kafka-manager
docker run -it -d --rm -p 9000:9000 -e ZK_HOSTS=" 172.17.0.2:2181" sheepkiller/kafka-manager
创建成后,在浏览器中访问http://192.168.31.200:9000












网友评论