前言

一台应用的第三方服务器的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、性能测试结果

性能测试结果等后续整理补充…