云上Kafka集群搭建

注:本文均采用腾讯云相关产品测试。

相关名词解释:

云服务器CVM:腾讯云提供的可扩展的计算服务,即云服务器。

消息队列Kafka:Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

1.开始前准备

云服务器*3(需要同一地域同一私有网络同一子网下)。

Java 1.8安装:yum -y install java 1.8(推荐自行下载源码安装)

Kafka安装包下载:https://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.12-0.10.2.2.tgz

2.安装Kafka

在根目录新建kafka目录,并下载kafka至该目录

下载:wget https://archive.apache.org/dist/kafka/0.10.2.2/kafka_2.12-0.10.2.2.tgz

解压:tar -zxvf kafka_2.12-0.10.2.2.tgz

新建zookeeper以及kafka数据存储目录:/kafka/kafka_2.12-0.10.2.2/zookeeper_data、/kafka/kafka_2.12-0.10.2.2/kafka_data

用于在zookeeper.properties以及server.properties文件配置相关数据存储路径

3.配置zookeeper以及kafka

修改kafka安装目录下config目录下zookeeper.properties以及server.properties

配置文件

zookeeper.properties修改项以及解读:

#zookeeper的数据目录

dataDir=/kafka/kafka_2.12-0.10.2.1/zookeeper_data

#zookeeper客户端连接端口

clientPort=2181maxClientCnxns=100

#CS通信心跳数

#Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

#tickTime以毫秒为单位。

#tickTime:该参数用来定义心跳的间隔时间,zookeeper的客户端和服务端之间也有和web开发里类似的session的概念,而zookeeper里最小的session过期时间就是tickTime的两倍。

tickTime=2000

#LF初始通信时限,集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)

initLimit=10

#LF同步通信时限, 集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)syncLimit=5

#server.1、server.2、server.3 为集群信息

server.1=10.0.0.7:2888:3888

server.2=10.0.0.15:2888:3888

server.3=10.0.0.14:2888:3888

#10.0.0.7、10.0.0.15、10.0.0.14分别为三台云服务器私有网络ip

#2888端口是zookeeper服务之间通信的端口

#3888端口是zookeeper与其他应用程序通信的端口

注:需要三台服务器配置文件修改一致即可。

进入zookeeper数据目录,新建myid文件,并在三台云服务器myid文件中分别写入1、2、3,保存退出。

服务器1-myid
服务器2-myid
服务器3-myid

server.properties修改项以及解读:

#broker标识,同集群内不可重复

broker.id=0

#是否允许删除topic,默认为false

delete.topic.enable=true

num.network.threads=3

num.io.threads=8

socket.send.buffer.bytes=102400

socket.receive.buffer.bytes=102400

socket.request.max.bytes=104857600

#kafka存储数据路径,配置为之前新建的目录即可(非必须)

log.dirs=/kafka/kafka_2.12-0.10.2.1/kafka_data

#partition分区数配置

num.partitions=10

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

#消息保留时间,168小时=7天

log.retention.hours=168

log.segment.bytes=1073741824

log.retention.check.interval.ms=300000

#zookeeper集群地址

zookeeper.connect=10.0.0.7:2181,10.0.0.15:2181,10.0.0.14:2181

#zookeeper连接超时时间

zookeeper.connection.timeout.ms=6000

注:三台云服务器的broker.id值不能一样,且类型必须为整形。

4.测试启动zookeeper以及kafka

启动zookeeper:./zookeeper-server-start.sh /kafka/kafka_2.12-0.10.2.1/config/zookeeper.properties(三台云服务器kafka安装目录bin目录下执行)

启动kafka:./kafka-server-start.sh -daemon /kafka/kafka_2.12-0.10.2.1/config/server.properties(三台云服务器kafka安装目录bin目录下执行)

查看进程是否正常启动。

5.kafka相关功能测试:

创建topic:./kafka-topics.sh --create --zookeeper 10.0.0.7:2181 --replication-factor 2 --partitions 2 --topic kafka

创建topic

查询topic:./kafka-topics.sh --list --zookeeper 10.0.0.7:2181

查询topic

删除topic:./kafka-topics.sh --zookeeper 10.0.0.7:2181 --delete --topic test

删除topic

生产消息:./kafka-console-producer.sh --broker-list 10.0.0.7:9092 --topic first

生产消息

消费消息:./kafka-console-consumer.sh --zookeeper 10.0.0.7:2181 --topic first --from-beginning

消费消息

参考文档:https://blog.csdn.net/xuesp/article/details/88094326。

你可能感兴趣的:(云上Kafka集群搭建)