一、安装多节点zookeeper集群
zookeeper下载地址:https://www-us.apache.org/dist/zookeeper/stable/
首先说一下zookeeper集群只要满足“半数以上服务器存活”,就能正常提供服务,所以集群的台数最好是奇数,即2N+1台服务器,这样整个zookeeper集群最多可能容忍N台服务器宕机而依然能提供服务。如果用偶数个服务器通常会浪费一台服务器的资源。
本例将安装一个有3个节点的zookeeper集群,分别是zk1、zk2、zk3
tar -xvf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10/conf/
//创建zk1 zk2 zk3的配置文件
echo 'zoo1.cfg zoo2.cfg zoo3.cfg' | xargs -n 1 cp zoo_sample.cfg
1、修改zoo1.cfg配置文件,如下,同样修改zoo2.cfg zoo3.cfg,端口分别设置为2182、2183
2、创建myid
cd /tmp/zookeeper
mkdir zk1 zk2 zk3
cd zk1
vim myid
输入1
esc :wq
cd ../zk2
vim myid
输入2
esc :wq
cd ../zk3
vim myid
输入3
esc :wq
3、启动zookeeper
cd zookeeper/bin
./zkServer.sh start ../conf/zoo1.cfg
./zkServer.sh start ../conf/zoo2.cfg
./zkServer.sh start ../conf/zoo3.cfg
查看一下状态,可见zk3被选举为leader
好了现在zookeeper集群已经搭建成功了,下面开始搭建kafka集群
二、安装多节点kafka集群
1、kafka安装文件下载https://kafka.apache.org/downloads
我安装的是kafka_2.11-1.1.0.tgz
本例将使用一台机器安装一个有3个节点的kafka集群,分别是server1、server2、server3
tar -xvf kafka_2.11-1.1.0.tgz
cd kafka_2.11-1.1.0.tgz/config
cp server.properties server2.properties
cp server.properties server3.properties
mv server.properties server1.properties
2、修改server1、server2、server3的上述配置文件
###server1
#kafka的brokerid,必须唯一
broker.id=1
listeners=PLAINTEXT://:9092
log.dirs=/opt/kafka_2.11-1.1.0/kafka-logs/kafka1
#zookeeper集群节点
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
###server2
broker.id=2
listeners=PLAINTEXT://:9093
log.dirs=/opt/kafka_2.11-1.1.0/kafka-logs/kafka2
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
###server3
broker.id=3
listeners=PLAINTEXT://:9094
log.dirs=/opt/kafka_2.11-1.1.0/kafka-logs/kafka3
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
3、启动集群
/opt/kafka_2.11-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.0/config/server1.properties
/opt/kafka_2.11-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.0/config/server2.properties
/opt/kafka_2.11-1.1.0/bin/kafka-server-start.sh -daemon /opt/kafka_2.11-1.1.0/config/server3.properties
查看/log/kafkaServer.out启动情况
三、验证部署
将从以下几个方面验证kafka集群部署的正确性
- 测试 topic 创建与删除。
- 测试消息的生产与发送
- 生产者吞吐量测试。
- 消费者吞吐量测试。
1、测试topic的创建与删除
1.1创建test-topic
bin/kafka-topics.sh --zookeeper localhost:2181,localhost:2182,localhost:2183 --create --topic test-topic --partitions 3 --replication-factor 3
1.2 查看test-topic的详细情况
#查看有哪些topic
bin/kafka-topics.sh --zookeeper localhost:2181,localhost:2182,localhost:2183 -list
#查看test-topic的详细分区情况
bin/kafka-topics.sh --zookeeper localhost:2181,localhost:2182,localhost:2183 -describe --topic test-topic
1.3 删除test-topic
bin/kafka-topics.sh --zookeeper localhost:2181,localhost:2182,localhost:2183 -delete --topic test-topic
2、测试消息的生产与发送
2.1 创建producer
./kafka-console-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic test-topic
2.2 创建consumer
./kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic test-topic --from-beginning
说明:新版的参数指定的是 bootstrap-server ,而旧版指定的是 zookeeper 这两个 consumer 分别代表了新版本 consumer 和旧版本 consumer 。如上图所示,旧版本 consumer 也能正确地读取之前生产的两条消息。
2.3 生产者吞吐量测试
我们测试发送50万条消息的producer的吞吐量
./kafka-producer-perf-test.sh --topic test-topic --num-records 500000 --record-size 200 --throughput -1 --producer-props bootstrap.servers=localhost:9092,localhost:9093,localhost:9094 acks=-1
2.4 消费者吞吐量测试
我们测试消费50万条消息的consumer吞吐量
./kafka-consumer-perf-test.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --messages 500000 --topic test-topic