前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka-0.10.0.0 集群高可靠实验

Kafka-0.10.0.0 集群高可靠实验

作者头像
birdskyws
发布2018-09-12 15:03:20
7380
发布2018-09-12 15:03:20
举报

记录实验过程之前,先谈一谈学习Kafka过程的心得。 大数据包含一个生态,需众多组件配合使用。逐个学习各个组件非常费力,想摸索出一种快速入门的方法,可能是每个学习大数据的同学都想要的。 我的方法是,每个组件遵循以下步骤: (1)介绍文档,Getting Start,Introduction等,通常1个小时内可以搞定。 (2)安装配置,下载Tar包,配置Config。半小时。 (3)用官方Api,实现几个Demo。1个小时。 这样,入门过程差不多花上半天时间。但是学习kafka时,把精力放在了zookeeper的机制原理上,大大延长了整个实验的时间。

感谢kelgon发布的实验教程,我的实验过程也是按照这位牛人的文章做的,在此感谢。

kafka系统示意图

一、zookeeper安装

实验环境:三台计算机(用本机docker安装镜像,OS:ubuntu 16.04)
  • hbase:172.18.0.71
  • datanode2:172.18.0.12
  • datanode3:172.18.0.13 解压zookeeper 3.4.9 到/opt/zookeeper文件夹中
  1. 配置zoo.cfg,每台zookeeper采用同样的配置文件
代码语言:javascript
复制
dataDir=/opt/zookeeper/zootmp 
##存放zookeeper 全部数据
clientPort=2181 #zookeeper 默认端口
server.0=172.18.0.71:4001:4002 #配置zookeeper 集群
server.1=172.18.0.12:4001:4002
server.2=172.18.0.13:4001:4002
##4001是node通信使用的端口,4002是node选举使用的端口

2.在dataDir中,创建myid文件,写入此台机器的变化,对应server.X。

代码语言:javascript
复制
##myid
0

3.启动命令。

代码语言:javascript
复制
bin/zkServer.sh start
zookeeper状态和高可靠
代码语言:javascript
复制
bin/zkServer.sh status

命令输出

ZooKeeper JMX enabled by default Using config: /opt/zookeeper/bin/../conf/zoo.cfg Mode: follower/leader

证明zookeeper依靠zoo.cfg配置文件中集群配置,实现了主从模式。 关闭leader节点

代码语言:javascript
复制
bin/zkServer.sh stop

查看其它节点状态,一个follow节点会变成leader节点。

至此,完成zookeeper的安装、集群配置以及集群可靠性验证。

二、Kafka安装

解压kafka-0.10.0.0到/opt/kafka路径中,3个主机组成Kafka集群。
  • hbase:172.18.0.71
  • datanode2:172.18.0.12
  • datanode3:172.18.0.13

1.修改配置文件config/server.properties

代码语言:javascript
复制
broker.id=0 ##每一个kafka 设置单独id
advertised.listeners=PLAINTEXT://hbase:9092 
##hbase填写域名或ip地址,kafka监听该端口。
log.dirs=/opt/kafka/kafkatmp 
##kafka保存数据的位置
zookeeper.connect=hbase:2181,datanode2:2181,datanode3:2181
##zookeeper地址,集群用逗号分隔
num.partitions=1 ##默认情况topic的partion个数

2.启动kafka

代码语言:javascript
复制
bin/kafka-server-start.sh -daemon config/server.properties 
创建topic,设置10个partition
  1. kafka自带系统工具创建topic
代码语言:javascript
复制
bin/kafka-topics.sh --create \
--zookeeper 172.18.0.12:2181\
--replication-factor 2 \ ##2个副本
--partitions 10 \ ##10个partition
--topic exam2 ##

2.查看topic信息

Topic:exam2 PartitionCount:10 ReplicationFactor:2 Configs: Topic: exam2 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 0,1 Topic: exam2 Partition: 1 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: exam2 Partition: 2 Leader: 2 Replicas: 2,0 Isr: 0,2 Topic: exam2 Partition: 3 Leader: 0 Replicas: 0,2 Isr: 0,2 Topic: exam2 Partition: 4 Leader: 1 Replicas: 1,0 Isr: 0,1 Topic: exam2 Partition: 5 Leader: 2 Replicas: 2,1 Isr: 1,2 Topic: exam2 Partition: 6 Leader: 0 Replicas: 0,1 Isr: 0,1 Topic: exam2 Partition: 7 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: exam2 Partition: 8 Leader: 2 Replicas: 2,0 Isr: 0,2 Topic: exam2 Partition: 9 Leader: 0 Replicas: 0,2 Isr: 0,2

10个partition分布到3个broker上,每个partition拥有2个副本。

三、Kafka可靠性验证

1.关闭broker0

代码语言:javascript
复制
bin/kafka-server-stop.sh

2.查看topic信息

Topic:exam2 PartitionCount:10 ReplicationFactor:2 Configs: Topic: exam2 Partition: 0 Leader: 1 Replicas: 0,1 Isr: 1 Topic: exam2 Partition: 1 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 2 Leader: 2 Replicas: 2,0 Isr: 2 Topic: exam2 Partition: 3 Leader: 2 Replicas: 0,2 Isr: 2 Topic: exam2 Partition: 4 Leader: 1 Replicas: 1,0 Isr: 1 Topic: exam2 Partition: 5 Leader: 2 Replicas: 2,1 Isr: 1,2 Topic: exam2 Partition: 6 Leader: 1 Replicas: 0,1 Isr: 1 Topic: exam2 Partition: 7 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 8 Leader: 2 Replicas: 2,0 Isr: 2 Topic: exam2 Partition: 9 Leader: 2 Replicas: 0,2 Isr: 2

由于关闭了broker0,所以partition-0的leader由broker0变为broker1,lsr同步节点也去掉了broker0。 partion3 6 9发生同样的变化。

  1. 重启broker0,查看topic信息

Topic:exam2 PartitionCount:10 ReplicationFactor:2 Configs: Topic: exam2 Partition: 0 Leader: 1 Replicas: 0,1 Isr: 1,0 Topic: exam2 Partition: 1 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 2 Leader: 2 Replicas: 2,0 Isr: 2,0 Topic: exam2 Partition: 3 Leader: 2 Replicas: 0,2 Isr: 2,0 Topic: exam2 Partition: 4 Leader: 1 Replicas: 1,0 Isr: 1,0 Topic: exam2 Partition: 5 Leader: 2 Replicas: 2,1 Isr: 1,2 Topic: exam2 Partition: 6 Leader: 1 Replicas: 0,1 Isr: 1,0 Topic: exam2 Partition: 7 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 8 Leader: 2 Replicas: 2,0 Isr: 2,0 Topic: exam2 Partition: 9 Leader: 2 Replicas: 0,2 Isr: 2,0

此时,lsr节点已经恢复broker0的同步规则。

4.触发负载均衡 partition的读写都是leader broker负责。当重启broker后,虽然加入了数据同步节点,但partition的leader没有发生转换,可以通过命令触发负载均衡。

代码语言:javascript
复制
bin/kafka-preferred-replica-election.sh --zookeeper hbase:2181

Topic:exam2 PartitionCount:10 ReplicationFactor:2 Configs: Topic: exam2 Partition: 0 Leader: 0 Replicas: 0,1 Isr: 1,0 Topic: exam2 Partition: 1 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 2 Leader: 2 Replicas: 2,0 Isr: 2,0 Topic: exam2 Partition: 3 Leader: 0 Replicas: 0,2 Isr: 2,0 Topic: exam2 Partition: 4 Leader: 1 Replicas: 1,0 Isr: 1,0 Topic: exam2 Partition: 5 Leader: 2 Replicas: 2,1 Isr: 1,2 Topic: exam2 Partition: 6 Leader: 0 Replicas: 0,1 Isr: 1,0 Topic: exam2 Partition: 7 Leader: 1 Replicas: 1,2 Isr: 2,1 Topic: exam2 Partition: 8 Leader: 2 Replicas: 2,0 Isr: 2,0 Topic: exam2 Partition: 9 Leader: 0 Replicas: 0,2 Isr: 2,0

结果上看,partition 0 3 6 9的leader换成了broker0,实现了重新选举。

四、总结

本文通过搭建Kafka集群,验证了kafka系统中topic broker leader Replicas等概念。

通过手动关闭进程的方式,实现了kafka高可用性、负载均衡。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.08.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、zookeeper安装
    • 实验环境:三台计算机(用本机docker安装镜像,OS:ubuntu 16.04)
      • zookeeper状态和高可靠
      • 二、Kafka安装
        • 解压kafka-0.10.0.0到/opt/kafka路径中,3个主机组成Kafka集群。
          • 创建topic,设置10个partition
          • 三、Kafka可靠性验证
          • 四、总结
          相关产品与服务
          大数据
          全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档