暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

kafka入门系列:在docker上安装kafka及使用

杂食笔记 2022-10-07
3673

第一步你需要装个docker

安装docker可参考该链接:

第二步 搭建zookeeper环境:

  1. 拉取zookeeper镜像

    docker pull zookeeper:<version> 这里是版本号 如果不加就是拉取最新的版本
  2. 启动zookeeper容器

    docker run -d --name zookeeper -p 2181:2181 -t zookeeper
  3. 拉取kafka镜像:

    docker pull wurstmeister/kafka:<version> 这里是版本号 如果不加就是拉取最新的版本
  4. 启动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


文章转载自杂食笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论