kafka docker安装

1、安装kafka(docker)

先决条件:在安装之前请先确保计算机中已经安装了docker和docker-compose。

  1. 下载docker文件

    1
    git clone https://github.com/wurstmeister/kafka-docker
  2. 修改配置文件。将docker-compose.ymldocker-compose-single-broker.yml两个文件中的KAFKA_ADVERTISED_HOST_NAME变量改为机器的内网地址。

  3. 构建docker镜像,并启动

    1
    docker-compose up -d

2、测试安装成果

  1. 查看是否已经docker启动成功。
  2. 进入kafka的shell。
    1
    2
    ./start-kafka-shell.sh <DOCKER_HOST_IP> <ZK_HOST:ZK_PORT>
    #例如:./start-kafka-shell.sh 10.104.168.163 10.104.168.163:2181
  3. 创建新的topic。
    1
    $KAFKA_HOME/bin/kafka-topics.sh --create --topic topic.test --partitions 4 --zookeeper $ZK --replication-factor 1
  4. 查看新创建的topic
    1
    $KAFKA_HOME/bin/kafka-topics.sh --describe --topic topic.test --zookeeper $ZK
  5. 向指定topic发送消息
    1
    $KAFKA_HOME/bin/kafka-console-producer.sh --topic=topic.test --broker-list=`broker-list.sh`
  6. 消费topic中的消息。<kafka_id:kafka_PORT>就是本机地址:kafka的端口。可以从docker ps中看到。
    1
    2
    $KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic.test --bootstrap-server=<kafka_IP:kafka_PORT>
    #例如:$KAFKA_HOME/bin/kafka-console-consumer.sh --topic=topic_test --bootstrap-server=10.104.168.163:32772

kafka发送消息

kafka消费消息

3、自定义配置

  1. 默认仅仅启动1个broker,如果你想一次启动多个broker,可以执行docker-compose scale kafka=n。其中的n表示broker的数量
  2. 如果你想自定义kafka的配置可以直接在docker-compose.yml中添加环境变量。比如:
  • 修改message.max.bytes参数,KAFKA_MESSAGE_MAX_BYTES: 2000000
  • 开启自动创建topic,KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'

4、配置释义

  • KAFKA_ADVERTISED_HOST_NAME:其实对应的是advertised.host.name配置项,表示客户端使用broker时应该用什么地址进行通讯。
  • bootstrap-server:任意一个broker的地址,一旦链接之后,就会获取整个集群的信息。

5、kafka镜像搭建

  1. consumer.properties
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #待复制的kafka
    bootstrap.servers=<kafka_IP:kafka_PORT>
    group.id=consumer-grp-subs-a40z6dkz9q-jtetest

    partition.assignment.strategy=org.apache.kafka.clients.consumer.RoundRobinAssignor

    #如果没有鉴权则不用配置
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=SCRAM-SHA-512
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="account-subs-a40z6dkz9q-jtetest" password="jtetest";
  2. producer.properties
    1
    2
    #复制目标kafka
    bootstrap.servers=<kafka_IP:kafka_PORT>
  3. 启动镜像复制:
    1
    bash kafka-mirror-maker.sh --consumer.config ../config/consumer.properties --producer.config ../config/producer.properties --offset.commit.interval.ms 5000 --num.streams 2 --whitelist "topic-subs-a40z6dkz9q-dcdbt-93lal27n"

原文链接:https://www.jdkdownload.com/kafka_docker.html