安装
本文基于kafka-2.12-2.3.0,准备工作
- download kafka
$wget http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.12-2.3.0.tgz
- jdk1.8.0环境jdk1.8.0安装
$tar -xzf kafka_2.12-2.3.0.tgz
$cd kafka_2.12-2.3.0
Start Server
启动zookeeper
$bin/zookeeper-server-start.sh config/zookeeper.properties
启动kafka
$bin/kafka-server-start.sh config/server.properties
这里我遇到了问题,启动kafka报错,发现是kafka默认分配jvm -Xmx1G -Xms1G
,自己的服务器所剩内存不足导致。
解决:修改./bin/kafka-server-start.sh KAFKA_HEAP_OPTS
修改为-Xmx256M -Xms256M
后成功启动。
Create Topic
$bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
查看所有主题
$bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Send Message
启动Producer
$bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>this is message
>this is another message
Receive message
启动Consumer
$bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
发现打印了producer发送的消息。
至此单个kafka broker 搭建完成,我们也大致了解了启动shell脚本以及配置文件,接下来我们用docker完成kafka single的部署。
docker-compose
github地址
docker-compose.yml
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.31.45
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
介绍一下上述几个参数的含义:
KAFKA_ADVERTISED_HOST_NAME # 用于集群发现
KAFKA_CREATE_TOPICS #主题,test:1:1 主题名:分区数:副本数。多个主题格式如下KAFKA_CREATE_TOPICS: "Topic1:1:3,Topic2:1:1"