文章目录

  • 概述
  • 部署信息
  • 配置信息
  • 验证


概述

对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可。

单个节点的安装: Kafka-初体验Kafka(02)-Centos7下搭建单节点kafka_2.11‐1.1.0

这里我们来搭建个3个节点的kafka集群来体验下吧


部署信息

192.168.18.130 —> kafka 、 zookeeper(单节点的zk)
192.168.18.131 —> kafka
192.168.18.132 —> kafka

单节点的 zk , 部署上 130上,事实上生产环境的话,zk也是要搭建集群的,这里演示用的话,用单个节点的zk先。

3个节点的kafka注册到 单节点的zk上。


配置信息

kafka的配置文件主要是配置文件 server.properties

130

[root@artisan config]# grep -Ev '^$|^[#;]' server.properties
broker.id=0
listeners=PLAINTEXT://192.168.18.130:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@artisan config]# 


131

[root@artisan config]#  grep -Ev '^$|^[#;]' server.properties
broker.id=1
listeners=PLAINTEXT://192.168.18.131:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.de


132

[root@artisan config]#  grep -Ev '^$|^[#;]' server.properties
broker.id=2
listeners=PLAINTEXT://192.168.18.132:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=192.168.18.130:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@artisan config]# 

还有一篇博主写的 zk也是高可用的,可以参考下,写的很不错 ZooKeeper+Kafka 高可用集群搭建


验证

启动zookeeper 和 3个 kafka 后,我们创建一个新的topic,副本数设置为3,分区数设置为2

[root@artisan bin]# ./kafka-topics.sh --create --zookeeper 192.168.18.130:2181 --replication-factor 3 --partitions 2 --topic artisan-replicated-topic
Created topic "artisan-replicated-topic".
[root@artisan bin]# 

查看topic的情况

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2    ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0Topic: artisan-replicated-topic   Partition: 1    Leader: 2   Replicas: 2,0,1 Isr: 2,0,1
[root@artisan bin]# 

我们来解释下上面的输出内容

第一行是所有分区的概要信息,之后的每一行表示每一个partition的信息。

所有分区的概要信息:

Topic:artisan-replicated-topic   PartitionCount:2    ReplicationFactor:3 Configs

每一个partition的信息:

Topic: artisan-replicated-topic  Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 1,2,0
Topic: artisan-replicated-topic Partition: 1    Leader: 2   Replicas: 2,0,1 Isr: 2,0,1
  • leader节点负责给定partition的所有读写请求。
  • replicas 表示某个partition在哪几个broker上存在备份。不管这个几点是不是”leader“,甚至这个节点挂了,也会列出
  • isr 是replicas的一个子集,它只列出当前还存活着的,并且已同步备份了该partition的节点。

我们可以运行相同的命令查看之前创建的名称为”artisan“的topic

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan
Topic:artisan   PartitionCount:1    ReplicationFactor:1 Configs:Topic: artisan  Partition: 0    Leader: 0   Replicas: 0 Isr: 0
[root@artisan bin]# 

之前设置了topic的partition数量为1,备份因子为1,因此显示就如上所示了。当然我们也可以通过如下命令增加topic的分区数量(目前kafka不支持减少分区):

[root@artisan bin]# ./kafka-topics.sh --alter --partitions 3 --zookeeper 192.168.18.130:2181 --topic artisan
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

重新查看

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan
Topic:artisan   PartitionCount:3    ReplicationFactor:1 Configs:Topic: artisan  Partition: 0    Leader: 0   Replicas: 0 Isr: 0Topic: artisan    Partition: 1    Leader: 1   Replicas: 1 Isr: 1Topic: artisan    Partition: 2    Leader: 2   Replicas: 2 Isr: 2
[root@artisan bin]# 

现在我们向新建的 artisan-replicated-topic 中发送一些message,kafka集群可以加上所有kafka节点:

[root@artisan bin]# ./kafka-console-producer.sh --broker-list 192.168.18.130:9092,192.168.18.131:9092,192.168.18.132:9092 --topic  artisan-replicated-topic
>artisan message test 1
>artisan message test 2
>artisan message test 3
>

现在131broker 开始消费:

[root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic
artisan message test 1
artisan message test 3
artisan message test 2

现在我们来测试我们 容错性 ,因为broker1目前是artisan-replicated-topic的分区0的 leader,所以我们要将其kill , kill 掉 131 节点的 kafka

再执行

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2    ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0    Leader: 2   Replicas: 1,2,0 Isr: 0,2Topic: artisan-replicated-topic Partition: 1    Leader: 2   Replicas: 2,0,1 Isr: 2,0
[root@artisan bin]# 

我们可以看到,分区0的leader节点已经变成了broker 2。要注意的是,在Isr中,已经没有了1号节点。leader的选举也是从ISR(in-sync replica)中进行的。

131 重新起来以后,还是可以消费消息

[root@artisan bin]# ./kafka-server-start.sh -daemon ../config/server.properties
[root@artisan bin]# jps
24436 Kafka
24455 Jps
[root@artisan bin]# ./kafka-console-consumer.sh --bootstrap-server 192.168.18.131:9092 --from-beginning --topic artisan-replicated-topic
artisan message test 1
artisan message test 3
artisan message test 2

再看下

[root@artisan bin]# ./kafka-topics.sh --describe --zookeeper 192.168.18.130:2181 --topic artisan-replicated-topic
Topic:artisan-replicated-topic  PartitionCount:2    ReplicationFactor:3 Configs:Topic: artisan-replicated-topic Partition: 0    Leader: 1   Replicas: 1,2,0 Isr: 0,2,1Topic: artisan-replicated-topic   Partition: 1    Leader: 2   Replicas: 2,0,1 Isr: 2,0,1
[root@artisan bin]#
[root@artisan bin]# 

Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群相关推荐

  1. linux下搭建zookeeper集群

    linux下搭建zookeeper集群 1.准备 1.下载zookeeper压缩包 (注:下载3.4.14版本,3.5以上运行时会少jar包) 2.系统:centOS7 安装好java环境 3.将压缩 ...

  2. Windows下搭建Tomcat集群的配置详解

    < Windows下搭建Tomcat集群基础入门详解 > 前言 在搭建 < Apache + Tomcat 实现Web服务器集群 > 前我们还需要实现 Tomcat集群实现Se ...

  3. 阿里云环境下搭建HadoopHA集群

    阿里云环境下搭建HadoopHA集群 1. HadoopHA介绍 1.1 hadoop高可用集群的简介 ​ hadoop是一个海量数据存储和计算的平台,能够存储PB级以上的数据,并且利用MapRedu ...

  4. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

  5. ubuntu下搭建redis集群

    前言 ubuntu下搭建redis集群步骤 步骤 准备工作 redis的集群管理工具依赖于ruby,先安装 sudo apt-get install ruby 上传redis和ruby的接口配置文件 ...

  6. windows下搭建mysql集群_Windows下搭建MySQL集群

    本文将讨论在Windows下搭建MySQL集群的步骤和搭建过程中应当注意的问题. 由于机器数量和性能有限,搭建环境为一台宿主机(IP:10.200.178.191),一台虚拟机(IP:10.200.1 ...

  7. CentOS7.5搭建k8s集群

    环境准备 相应软件版本: linux:CentOS7.6 docker:18.06.3 kubeadmn:1.17.4 kubelet:1.17.4 kubectl:1.17.4 网络配置 网络地址: ...

  8. 基于Centos7系统搭建Redis集群之主从复制(新手教程)

    最近没多少事,就想着搭建个redis集群玩玩,毕竟听起来也是很高大上的东西,但是经过自己的断断续续的搭建,也感觉不是那么难,肯定也只是刚刚入门,搭建的东西也比较简单,并没有触及到里面更深入的内容: 因 ...

  9. Windows下搭建Redis集群

    一.首先下载好Redis的Windows版本,注意:Redis只有3.0之后的版本才有集群 1.下载好后直接解压,可看到这些目录   2.在解压的目录启动redis-server.exe启动redis ...

最新文章

  1. 06. 用css实现三角形
  2. 去姥姥家需要做的事情
  3. Android Studio-目录结构
  4. 线性一致性理解Linearizability
  5. 【MaxCompute学习】隐式转化的问题
  6. Magento报错“No Input File Specified”的解决方法
  7. QT每日一练day1:第一个程序
  8. Objective-C选择器 Selector
  9. 供应链金融与区块链01——论文阅读
  10. 基于SSM实现台球厅计时收费系统
  11. 关于seo优化实用篇
  12. PS CS6教程(photoshop视频教程) 免费下载
  13. 增资扩股和股权转让有什么区别?
  14. 可靠性测试主要注意点
  15. 深入浅出的解释什么是tensor
  16. Excel中利用宏批量生成md5加密
  17. C++ Primer Plus (第六版)编程练习记录(chapter4)
  18. huntian oy (数论卷积杜教筛)
  19. 名校博士生临近毕业突然离世,去世前一直在熬夜完善毕业论文
  20. 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤

热门文章

  1. a标签居中 img vue_Vue中img的src属性绑定与static文件夹实例
  2. 开源 python_8款Python GUI开源框架,谁才是你的最爱?
  3. 向前欧拉公式 matlab_你可能不知道的MATLAB操作#第三话
  4. 信息熵和交叉熵的细节理解
  5. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择
  6. express ajax分页实例,element+express+mongoose实现分页查询
  7. java list有序还是无序_牛批!2w字的Java集合框架面试题精华集(2020最新版),赶紧收藏。...
  8. 深度学习100例-卷积神经网络(CNN)花朵识别 | 第4天
  9. 为什么要写《机器学习实践应用》这本书
  10. 【git学习五】git基础之git分支