注:本文均采用腾讯云相关产品测试。
相关名词解释:
云服务器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,保存退出。
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:./kafka-topics.sh --list --zookeeper 10.0.0.7:2181
删除topic:./kafka-topics.sh --zookeeper 10.0.0.7:2181 --delete --topic test
生产消息:./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