前言
一台应用的第三方服务器的kafka只有3个分区,测试一直存在积压的消息,搭建了一套最简单集群测试下,记录中间的参数。
1、准备工作
1.1 环境准备
环境 |
版本 |
说明 |
centos |
7.0 |
操作系统服务器,3台 |
JDK |
1.8.261 |
安装好jdk并设置好环境变量 |
zookeeper |
3.4.9 |
zk官方安装包 |
kafka |
2.2.0_2.12 |
kafka官方安装包 |
1.2 服务器
IP |
端口 |
说明 |
192.168.211.125 |
zk:2181 zk heartbeat:2888、3888 kafka:9092 |
zk默认端口 zk心跳默认端口 kafka默认监听端口 |
192.168.211.126 |
zk:2181 zk heartbeat:2888、3888 kafka:9092 |
zk默认端口 zk心跳默认端口 kafka默认监听端口 |
192.168.211.127 |
zk:2181 zk heartbeat:2888、3888 kafka:9092 |
zk默认端口 zk心跳默认端口 kafka默认监听端口 |
1.3 目录规划
中间件 |
安装目录 |
数据目录 |
日志目录 |
说明 |
jdk |
/home/jdk_version |
- |
- |
Oracle jdk是直接tgz解压的,只需要安装目录 openjdk不需要这个目录规划 |
zk |
/home/zookeeper_version |
/opt/data/zookeeper |
/opt/data/zookeeper/zkdata /opt/data/zookeeper/zklogs |
zkdata是zk的数据目录,zklogs是日志目录 |
kafka |
/home/kafaka_version |
/opt/data/kafka |
/opt/data/kafka/kafka_logs |
kafka_logs是日志目录 |
2、下载zk
官网:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/
下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
3、下载kafka
官网:http://kafka.apache.org/
下载地址:https://archive.apache.org/dist/kafka/2.2.0/kafka_2.12-2.2.0.tgz
4、安装jdk
这些作为java开发来说,很简单,只是简单记录下步骤,不做过多解释
4.1 安装openjdk
1
|
yum install java-1.8.0-openjdk
|
4.2 安装Oracle jdk
Oracle jdk下载地址: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
4.3 配置环境变量
新增JAVA_HOME、JRE_HOME并设置到PATH
1
2
3
|
vi ~/.bash_profile
JAVA_HOME=/home/jdk1.8.0_281
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
|
4.4 测试环境变量
1
2
3
4
5
|
java -version
java version "1.8.0_281"
Java(TM) SE Runtime Environment (build 1.8.0_281-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode)
|
5、安装zk集群
1
|
tar -zvxf zookeeper-3.4.9.tar.gz
|
5.1 配置参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
cd /home/zookeeper-3.4.9/conf
cp zoo_sample.cfg zoo.cfg
# 新增数据目录、日志目录、集群地址
vim zoo.cfg
dataDir=/opt/data/zookeeper/zkdata
dataLogDir=/opt/data/zookeeper/zklogs
server.1=192.168.211.125:2888:3888
server.2=192.168.211.126:2888:3888
server.3=192.168.211.127:2888:3888
# 创建好规划的目录
mkdir -p /opt/data/zookeeper/zkdata
mkdir -p /opt/data/zookeeper/zklogs
# 创建集群id文件
touch /opt/data/zookeeper/zkdata/myid
echo 1 > /opt/data/zookeeper/zkdata/myid #192.168.211.125
echo 2 > /opt/data/zookeeper/zkdata/myid #192.168.211.126
echo 3 > /opt/data/zookeeper/zkdata/myid #192.168.211.127
|
注:没单独说明的3台都重复一样的安装步骤,只myid注意id值3台不一样
5.2 启动zk集群
1
2
|
cd /home/zookeeper-3.4.9/bin
./zkServer.sh start
|
5.4 测试zk集群状态
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
cd /home/zookeeper-3.4.9/bin
./zkServer.sh status
# 192.168.211.125
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
# 192.168.211.126
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: follower
# 192.168.211.127
ZooKeeper JMX enabled by default
Using config: /home/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: leader
|
注:zk集群可以通过状态判断,必须有一个leader,其他事follewer,如果出现其他状态表示配置有错误需要排查,一般集群没组成是单机模式standalone
mode |
说明 |
leader |
主节点 |
follower |
从节点 |
standalone |
单机 |
6、安装kafka集群
1
|
tar -zvxf kafka_2.12-2.2.0.tgz
|
6.1 配置参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
cd /home/kafka_2.12-2.2.0/config
vim server.properties
broker.id=0 #192.168.211.125
broker.id=1 #192.168.211.126
broker.id=2 #192.168.211.127
#192.168.211.125
listeners=PLAINTEXT://192.168.211.125:9092
advertised.listeners=PLAINTEXT://192.168.211.125:9092
#192.168.211.126
listeners=PLAINTEXT://192.168.211.126:9092
advertised.listeners=PLAINTEXT://192.168.211.126:9092
#192.168.211.127
listeners=PLAINTEXT://192.168.211.127:9092
advertised.listeners=PLAINTEXT://192.168.211.127:9092
log.dirs=/opt/data/kafka/kafka_logs
num.partitions=9
zookeeper.connect=192.168.211.125:2181,192.168.211.126:2181,192.168.211.127:2181
# 创建好规划的目录
mkdir -p /opt/data/kafka/kafka_logs
|
注:没单独说明的3台都重复一样的安装步骤,只注意broker.id需要不一样、listeners和advertised.listeners本机的监听ip不一样
6.2 启动kafka集群
1
2
|
cd /home/kafka_2.12-2.2.0/bin
nohup ./kafka-server-start.sh /home/kafka_2.12-2.2.0/config/server.properties &
|
7、检测kafka工作情况
前面的集群都搭建好了,开始进行kafka的工作校验了
7.1 创建topic
1
|
./kafka-topics.sh --zookeeper 192.168.211.125:2181,192.168.211.126:2181,192.168.211.127:2181 --create --replication-factor 1 --partitions 1 --topic test
|
7.2 查询创建的topic
1
2
3
4
|
./kafka-topics.sh --zookeeper 192.168.211.125:2181,192.168.211.126:2181,192.168.211.127:2181 --list
__consumer_offsets
test
|
7.3 测试生产端
1
|
./kafka-console-producer.sh --broker-list 192.168.211.127:9092 --topic test
|
7.4 测试消费端
1
2
3
|
./kafka-console-consumer.sh --bootstrap-server 192.168.211.126:9092 --topic test --from-beginning
./kafka-console-consumer.sh --bootstrap-server 192.168.211.125:9092 --topic test --from-beginning
|
7.5 发送测试数据
1
2
3
4
5
6
7
8
9
10
11
|
./kafka-console-producer.sh --broker-list 192.168.211.127:9092 --topic test
>1
>2
>3
>4
>5
>6
>7
>8
>9
>10
|
同步的2个从节点数据会同步接收,参考下图
127-producer:
125-consumer:
126-consumer:
7.6 监控topic
1
|
./kafka-topics.sh --zookeeper 192.168.211.125:2181,192.168.211.126:2181,192.168.211.127:2181 --describe --topic test
|
8、性能测试结果
性能测试结果等后续整理补充…