kafka集群部署

Posted 菩提树下的杨过

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kafka集群部署相关的知识,希望对你有一定的参考价值。

前提:
kafka集群依赖于zk集群,没有zk集群环境的请先参考 http://www.cnblogs.com/yjmyzz/p/4587663.html .

(注:kafka完整的下载包里,也自带了zk,修改 kafka/config/zookeeper.properties ,并设置好myid文件,kafka/bin/zookeeper-server-start.sh ../config/zookeeper.properties 也可以启动zk集群)

 

假设搭建3个节点的kafka集群,下面是步骤:

 一、下载

http://kafka.apache.org/downloads ,如果只是安装,直接down kafka_2.12-0.11.0.0.tgz 即可。

二、解压

假设$KAFKA_HOME为解压后的根目录,将tag包解压到该目录下(3台机器上都解压)

三、修改$KAFKA_HOME/config/service.properties

内容参考下面:

 1 broker.id=1 #类似zk的myid一样,每个节点上的id都要唯一
 2 host.name=192.168.29.60 #每个节点对应的机器IP
 3 num.network.threads=3
 4 num.io.threads=8
 5 socket.send.buffer.bytes=102400
 6 socket.receive.buffer.bytes=102400
 7 socket.request.max.bytes=104857600
 8 log.dirs=/data/application/kafka/data #日志保存目录
 9 num.partitions=1
10 num.recovery.threads.per.data.dir=1
11 offsets.topic.replication.factor=1
12 transaction.state.log.replication.factor=1
13 transaction.state.log.min.isr=1
14 log.retention.hours=168
15 message.max.byte=5242880
16 default.replication.factor=2
17 replica.fetch.max.bytes=5242880
18 log.segment.bytes=1073741824
19 log.retention.check.interval.ms=300000
20 zookeeper.connect=192.168.29.11:2181,192.168.29.12:2181,192.168.29.13:2181 #zk集群的地址
21 zookeeper.connection.timeout.ms=6000
22 group.initial.rebalance.delay.ms=0

注:每台机器上都要修改这个文件,而且broker.id,host.name这二个很关键,弄错了将启动失败。

默认情况下,日志没有打开自动清理策略,运行时间久了,会把磁盘占满,注意14行,可以改成

log.cleanup.policy=delete
log.retention.hours=6

这样日志,只会保留最近6小时。日志路径如果需要修改,可以修改 bin/kafka-run-class.sh (参考下面)

if [ "x$LOG_DIR" = "x" ]; then
  LOG_DIR="/var/log/kafka/"
fi

  

四、启动

$KAFKA_HOME/bin/kafka-server-start.sh -daemon ../config/server.properties

(3台节点都要启动)

注:初次启动,可不加用-daemon参数,方便直接在控制台查看输出,启动成功后,可ctrl+C结束掉,再加-daemon后台启动。

如果希望调整一些jvm启动参数,比如:占用内存啥的,可以直接修改kafka-server-start.sh(参考下面)

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
fi

   

五、验证

5.1 创建topic

$KAFKA_HOME/bin/kafka-topics.sh --create --zookeeper 192.168.29.11:2181 --replication-factor 2 --partitions 1 --topic mytopic

5.2 测试消息发布

$KAFKA_HOME/bin/kafka-console-producer.sh --broker-list 192.168.29.60:9092 --topic mytopic

这个命令会进入一个>提示符的终端,直接输入消息内容,回车就发出去了。

5.3 测试消息接收
保持5.2的窗口不要关,再加一个终端窗口

$KAFKA_HOME/bin/kafka-console-consumer.sh --zookeeper 192.168.29.11:2181 --topic mytopic --from-beginning

在刚才5.2的窗口里,输入些内容,顺利的话,消息接收窗口里,就能收到消息。

 

参考文章:

http://kafka.apache.org/documentation/

以上是关于kafka集群部署的主要内容,如果未能解决你的问题,请参考以下文章

Kafka(四)集群之kafka

Kafka快速入门——Kafka集群部署

Kafka快速入门——Kafka集群部署

kafka集群的部署及kafka监控工具

k8s部署Kafka集群

解开Kafka神秘的面纱:kafka单机部署和集群部署