Personal learning records
ELK日志分析平台搭建 : (Kafka部署)
ELK日志分析平台搭建 : (Kafka部署)

ELK日志分析平台搭建 : (Kafka部署)

Kafka是一个消息队列,与之前搭建过的rabbitmq相比, rabbitmq功能更强大,但是并发和缓冲能力不如kafka, 它重视数据的完整性,适合在对可靠性和实时性要求高的情况下使用。kafka则是重视数据的吞吐量,在大量日志并发的情况下,略微的数据丢失无伤大雅,所以在elk中的消息队列采用的是kafka。本文记录kafka集群部署的过程,方便日后有需要时再次重现。

kafka集群依赖于zk(zookeeper),网络资料显示尽管 Kafka 2.8.0 版本引入了 KRaft 协议,消除了对外部 Zookeeper 的依赖,但大多数 Kafka 集群仍然在使用传统的 Zookeeper。因此,在部署 Kafka 时,通常需要同时部署和配置 Zookeeper。在官网下的kafka包就包含了zk,故直接安装即可。(kafka,zk是基于java开发的分布式系统,所以部署前还需要配置好jdk及其环境变量)

首先对jdk安装

[root@kafka1 ~]# tar zxvf /usr/local/package/jdk-8u121-linux-x64.tar.gz -C /usr/local/
[root@kafka1 ~]# echo !
JAVA_HOME=/usr/local/jdk1.8.0_121
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
! >>/etc/profile
[root@kafka1 ~]# source /etc/profile

其次安装zk

[root@kafka1 ~]# tar zxvf /usr/local/package/kafka_2.11-2.0.0.tgz -C /usr/local/
echo !
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=10.3.145.41:2888:3888
server.2=10.3.145.42:2888:3888
server.3=10.3.145.43:2888:3888
!> /usr/local/kafka_2.11-2.0.0/config/zookeeper.properties
#最后三行定义ZooKeeper集群中的每个服务器。服务器1的配置包括IP地址和端口号,以及用于leader选举的通信端口(2888)和用于leader选举和心跳的Quorum端口(3888)
mkdir -p /opt/data/zookeeper/{data,logs}
#创建配置文件中指定的zk的日志,数据目录。
echo 1 > /opt/data/zookeeper/data/myid
#根据配置文件,在各个节点上创建myid文件,方便zk把他们对应起来

最后正式安装kafka

一个完整的kafka配置文件如下,需要修改的,就是“broker.id”以及“zookeeper.connect”,前者指定了本机上kafka的id,后者制定了集群地址

kafka_2.11-2.0.0/config/server.properties

broker.id=1 #每个server需要单独配置broker id,如果不配置系统会自动配置。
listeners=PLAINTEXT://10.3.145.41:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=10.3.145.41:2181,10.3.145.42:2181,10.3.145.43:2181 #ZK主机地址,如果zookeeper是集群则以逗号隔开。
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

创建配置文件中指定的log目录

[root@kafka1 ~]# mkdir -p /opt/data/kafka/logs

在配置完第一个节点上的kafka后,把配置完的kafka包直接“scp -r”传到其他俩机器上,再把”broker id“进行一个修改,准备工作就完成了。

三个节点上进入kafka安装目录,执行启动脚本,以启动zk和kafka

[root@kafka1 ~]# cd /usr/local/kafka_2.11-2.0.0/
[root@kafka1 ~]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
[root@kafka1 ~]# cd /usr/local/kafka_2.11-2.0.0/
[root@kafka1 ~]# nohup bin/kafka-server-start.sh config/server.properties &

至此,kafka集群也搭建完成,等待后续工具上线后连通即可知道kafka集群是否运行正常。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注