系统环境
apt-get update
apt-get install -y default-jdk
下载软件
take /work/soft
wget http://xxxxx/kafka_2.12-2.2.0.tgz \
&& tar -xvf kafka_2.12-2.2.0.tgz \
&& ln -s kafka_2.12-2.2.0 kafka
Zookeeper
Zookeeper 不需要单独安装, 直接用 kafka 自带的 Zookeeper
初始化
下面 3 条命令在 3 台服务器上分别执行:
mkdir -p /work/soft/zookeeper/version-2 && echo 1 > /work/soft/zookeeper/myid
mkdir -p /work/soft/zookeeper/version-2 && echo 2 > /work/soft/zookeeper/myid
mkdir -p /work/soft/zookeeper/version-2 && echo 3 > /work/soft/zookeeper/myid
配置文件
vi /work/soft/kafka/config/zookeeper.properties
使用以下配置做覆盖, 修改 IP 地址部分即可
### The number of milliseconds of each tick
tickTime=2000
### the port at which the clients will connect
clientPort=2181
### The number of ticks that the initial
### synchronization phase can take
initLimit=10
### The number of ticks that can pass between
### sending a request and getting an acknowledgement
syncLimit=5
### the directory where the snapshot is stored.
dataDir=/work/soft/zookeeper
server.1=10.1.215.56:2888:3888
server.2=10.1.215.58:2888:3888
server.3=10.1.215.57:2888:3888
supervisor 配置
vim /etc/supervisor/conf.d/zookeeper.conf
[program:zookeeper]
directory=/work/soft/kafka
command=/work/soft/kafka/bin/zookeeper-server-start.sh /work/soft/kafka/config/zookeeper.properties
autostart=true
autorestart=true
startsecs=3
startretries=20
Kafka
配置文件
vim /work/soft/kafka/config/server.properties
修改部分:
broker.id=0
, id 每台机器唯一 0, 1, 2-
listeners=PLAINTEXT://192.168.0.90:9092
, 替换ip地址为本地ip(内网) -
message 保存时间, 保存时间过长可能导致硬盘被打
- normel kafka
log.retention.hours=6
- share kafka
log.retention.hours=60
, 保存48+12 = 60小时
- normel kafka
- log.dirs=/work/soft/kafka/kafka-logs
- zookeeper连接信息
zookeeper.connect=10.30.0.237:2181,10.30.0.235:2181,10.30.0.236:2181
替换机器列表ip地址(内网)
添加部分:
# increate message size limit
message.max.bytes=20000000
replica.fetch.max.bytes=30000000
# replication factor
default.replication.factor=3
supervisor 配置
vim /etc/supervisor/conf.d/kafka.conf
[program:kafka]
directory=/work/soft/kafka
command=/work/soft/kafka/bin/kafka-server-start.sh /work/soft/kafka/config/server.properties
autostart=true
autorestart=true
startsecs=3
startretries=20
检验是否部署成功
创建topic
cd /work/soft/kafka/bin
./kafka-topics.sh --create --zookeeper ip1:2181,ip2:2181,ip3:2181 --replication-factor 1 --partitions 1 --topic test //创建一个名字为test的topic
./kafka-topics.sh --list --zookeeper ip1:2181,ip2:2181,ip3:2181 //列出所有已经创建好的topic
生产者发送消息到kafka
./kafka-console-producer.sh --broker-list ip1:9092,ip2:9092,ip3:9092 --topic test
消费者消费消息
./kafka-console-consumer.sh --bootstrap-server ip1:9092,ip2:9092,ip3:9092 --topic test --from-beginning
注释:关于--broker-list 和 --bootstrap-server 这两个参数,旧版本的kafka是使用的--broker-list , 新版本的kafka是使用的--bootstrap-server
可以使用 ./kafka-console-consumer.sh --help 或者 ./kafka-console-producer.sh --help 查看参数
生产者:\
docker run --interactive --rm \
confluentinc/cp-kafkacat \
kafkacat -b kafka_IP:9092 \
-t test \
-K: \
-P
消费者:
docker run --tty --interactive --rm \
confluentinc/cp-kafkacat \
kafkacat -b kafka_IP:9092 -C -t test -T