kafka集群安装记录

一、安装多节点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

显而易见,该 topic 下有3个分区,每个分区有3个副本,每个分区的 leader 分别是 1、2、3 ,表明 Kafka 将该 topic 的这3个分区均匀地在3台broker 上进行了分配。
 

1.3 删除test-topic

bin/kafka-topics.sh --zookeeper localhost:2181,localhost:2182,localhost:2183 -delete --topic test-topic

说明:上面的输出仅仅表示该 topic 被成功地标记为“待删除”,至于 topic 是否会被真正删除取决于 broker 端参数 delete.topic.enable 该参数。该参数在当前 Kafka 1.0.0 版本中被默认设置为 true ,即 表明 Kafka 默认允许删除 topic。事实上,该参数在旧版本中默认值 一直是false ,故若用户显 式设置该参数为 false ,或使用了 1.0 .0 之前版本的默认值,那么即使运行了上面的命令, Kafka 也不会删除该 topic,我们本次使用的kafka版本是1.1.0,所以默认是为true,通过list命令再次查看kafka的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

该脚本的输出结果表明在这台测试机上运行一个 Kafka producer 的平均吞吐量是 5MB/s ,即占用 40Mb/s 左右的带宽,平均每秒能发送 27078 条消息,平均延时是 4.17 秒,最 大延时是 5.79 秒,平均有 50% 的消息发送需要花费 4.19 秒, 95% 的消息发送需要花费 5.59 秒, 99% 的消息发送需要花费 5.73秒,而 99.9% 的消息发送需要花费5.78 秒。本例测试出来的 producer 占用的带宽是 40Mb/s (8 × 5.0.0 MB/s ),和千兆位网卡相比,这点带宽远远没有达 到网卡的上限,因此这也说明 producer 还有很大的优化空间。
 
在kafka-producer-perf 脚本实际使用过程中,最好让该脚本长时间稳定的运行一段时间,这样测试出来的结果才能准确。毕竟脚本运行之初会执行很多初始化工作,运行之处的吞吐量不能真实反映系统的实际情况。
 
 

2.4 消费者吞吐量测试

我们测试消费50万条消息的consumer吞吐量

./kafka-consumer-perf-test.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --messages 500000 --topic test-topic

结果表明,在该环境中 consumer 在1秒多的时间内总共消费了 95MB 的消息,因此吞吐量大约是 86MB/s ,即 86*8=688Mb/s 。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值