(1) 首先下载软件包(采用二进制包,非编译安装):

Kafka:https://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz

(2) 解压Kafka安装包,编辑解压文件中的config/server.properties配置文件,添加或调整以下配置:

#kafka集群里的身份ID,节点间不能重复

broker.id=1

#kafka节点主机名
host.name=192.168.145.109

#允许在kafka上执行删除topic的脚本和命令,而不是仅把topic标记为删除
delete.topic.enable=true

#允许自动创建消息主题topic,默认为允许true

auto.create.topics.enable=true

#服务监听的ip地址和端口

listeners=PLAINTEXT://192.168.145.109:9092

#当前节点广播节点信息用的ip地址和端口

advertised.listeners=PLAINTEXT://192.168.145.109:9092

#服务器可以接收的消息的最大大小

message.max.bytes=10485760

#副本拉取消息的大小,不能 < message.max.bytes 的大小,否则follower副本复制不了信息

replica.fetch.max.bytes=10485760

#服务器网络线程数,用于发送和响应网络上的数据请求

num.network.threads=7

#服务器本地处理数据的线程数,包含磁盘I/O类操作

num.io.threads=12

#socker服务器发送数据缓存

socket.send.buffer.bytes=102400

#socker服务器接收数据缓存

socket.receive.buffer.bytes=102400

#socker服务器能接收请求数据大小的最大值

socket.request.max.bytes=10485760

#日志数据目录

log.dirs=/data/ELK/kafka_data/logs

#消息主题topic的副本集,多个副本集能够提高并行消费能力,但是会占用更多的磁盘空间,建议设置为kafka集群broker数量的整数倍,同时部署多个相同group_id的logstash,加入高可用性,多个logstash还可以提高消费能力

num.partitions=8

#默认的自动创建的消息主题topic时候,每个分区partition的副本数

deafault.replication.factor=3

#默认的消息主题topic每个分区partition的副本数

replication.factor=3

#每个数据目录在kafka启动时日志恢复和停止时日志写入的进程数,当数据存储在Raid阵列的时候建议增大这个值

num.recovery.threads.per.data.dir=1

#需保持同步的最小副本数,该选项确保kafka每个分区的高可用性
min.insync.replicas=2

#结合上一个选项使用,当最小副本数同步都完成之后会发出ack确认信号,则kafka会认为该分区已完成同步并开放可读写操作
acks=all

#内置消息主题offsets的分区数,默认为50,不可变更
offsets.topic.num.partitions=50

#内置消息主题offsets的每个分区partition的副本数,默认为3

offsets.topic.replication.factor=3

#内置消息主题transaction的每个分区partition的副本数

transaction.state.log.replication.factor=3

#需保持同步的最小副本数,该选项确保kafka每个分区的高可用性,该项只对内置消息主题transaction生效

transaction.state.log.min.isr=2

#topic中每10000条消息会触发写入磁盘操作

log.flush.interval.messages=10000

#topic中的消息在刷新到磁盘之前保存在内存中的最大时间,毫秒为单位

log.flush.interval.ms=1000

#日志保存的时间

log.retention.hours=48

#日志分片大小为1G

log.segment.bytes=1073741824

#周期性检查是否有日志符合删除的条件,毫秒为单位

log.retention.check.interval.ms=300000

#所使用的zookeeper的地址

zookeeper.connect=192.168.145.109:2181,192.168.145.110:2181,192.168.145.111:2181

#zookeeper连接超时,毫秒为单位

zookeeper.connection.timeout.ms=6000

#新的消费者加入时候组的rebalance延时时间,增加可以降低资源消耗,默认为3毫秒

group.initial.rebalance.delay.ms=0

(3) 编辑bin/kafka-run-class.sh ,调整以下配置,调整kafka系统日志(gc资源回收信息日志等)输出路径,选择磁盘空间富余的位置:

LOG_DIR="/data/ELK/kafka_data/logs"

(4) 编辑bin/kafka-server-start.sh ,调整以下配置,调整kafka运行内存:

export KAFKA_HEAP_OPTS="-Xms4G -Xmx4G"

(5) 需注意的是config/server.properties配置文件中的broker.id和ip地址需不相同,根据配置文件模板对应修改即可。

(6) 更改文件从属,以便使用elk运行服务的时候不会出现读写权限问题,请自行更改kafka所在目录:

chown -R elk:elk /data/kafka

(7) 设置开机启动,这里采用的是写入/etc/rc.local的方式,Centos7以上版本首先要确认/etc/rc.d/rc.local是否有可执行权限,否则无法进行自启动,接着在文件里添加以下内容,请自行更改kafka所在目录:

su - elk -c "/bin/sh /data/kafka/bin/kafka-server-start.sh -daemon /data/kafka/config/server.properties &"

(8) 在所有服务器节点上执行以上操作,最后启动服务,观察服务启动日志是否有异常