Kafka 教程(二) 集群搭建和容错性测试
2019独角兽企业重金招聘Python工程师标准>>>
在之前我们已经安装过kafka,我们直接进行单机多broker搭建。kafka安装请参考:kafka 教程(一) 第一个实例
为后续方便我们统一使用hadoop001作为本台机器的主机名,并修改hosts将主机名指向127.0.0.1
hostname hadoop001
echo hadoop001 > /proc/sys/kernel/hostnameecho 127.0.0.1 hadoop001 >> /etc/hosts
一:安装zookeeper
1.下载解压zookeeper,使用cdh5.7.0版本对应的zookeeper-3.4.5
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz
tar -zxvf zookeeper-3.4.5.tar.gz
2.进入zookeeper conf目录复制一份配置文件模板zoo_sample.cfg并命名为zoo.cfg
cd zookeeper-3.4.5/conf
cp zoo_sample.cfg zoo.cfg
3.编辑配置文件
修改zookeeper数据目录为:/usr/server/tmp/zookeeper,由于我们只启动单节点的zookeeper 所以端口不需要修改。
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/server/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
4.启动zookeeper
cd ../bin
./zkServer.sh start
打印如下信息可以看到启动成功
JMX enabled by default
Using config: /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
使用jps或者jps -m查看
jps -m
-------------------------
12867 Jps -m
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
至此zookeeper安装启动成功。
二:kafka集群搭建
1.进入kafka目录的config文件夹,复制并修改配置文件,这里需要修改的位置有三个:
broker.id=1
listeners=PLAINTEXT://:9093
log.dirs=/tmp/kafka-logs-1
broker.id为broker的唯一标识,使用唯一的id,修改端口号和指定不同的日志输出地址
我们创建三个broker,server.porperties文件复制三份,分别命名为:server-1.porperties,server-2.porperties,server-3.porperties
cp server.properties server-1.properties
cp server.properties server-2.properties
cp server.properties server-3.properties
结果如下图所示:
2.依次编辑并修改server-1.porperties,server-2.porperties,server-3.porperties三个文件,id分别设为:1,2,3,端口分别为:9093,9094,9095,日志路径为:/usr/server/tmp/kafka/kafka-logs-1,/usr/server/tmp/kafka/kafka-logs-2,/usr/server/tmp/kafka/kafka-logs-3
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=1############################# Socket Server Settings #############################listeners=PLAINTEXT://:9093# The port the socket server listens on
#port=9092# Hostname the broker will bind to. If not set, the server will bind to all interfaces
#host.name=localhost############################# Log Basics ############################## A comma seperated list of directories under which to store log files
log.dirs=/usr/server/tmp/kafka/kafka-logs-1
后两个文件类似,此处不在复述。
3.分别以三份配置文件启动三个broker,实现单机多broker集群
回到kafka根目录执行如下命令
./bin/kafka-server-start.sh config/server-1.properties &
./bin/kafka-server-start.sh config/server-2.properties &
./bin/kafka-server-start.sh config/server-3.properties &
命令后加 & 表示输出启动日志到控制台以后台方式启动,也可以使用 nohup [cmd] & 完全后台运行,后台运行的方式可以参考:Linux 后台运行程序 nohup和& 的使用
执行后使用 jps -m命令查看:
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m13219 Kafka config/server-1.properties
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
13334 Kafka config/server-3.properties
13401 Jps -m
13277 Kafka config/server-2.properties
可以看到已经启动的三个broker
至此单机多broker集群配置完成,多机多集群可以参考单机多broker类似
三:容错测试
1.先创建一个topic
./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic hello-mrpei
提示:
Created topic "hello-mrpei".
成功的创建了一个 名称为“hello-mrpei”的topic
下面我们查看一下这个topic的相关信息
./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei
可以看到如下信息:
Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
topic名称 分区数为:1 副本数为:3 leader节点为:2 副本为 :2,,1,3 存活的副本:2,1,3
2.创建控制台生成者和消费者 生成和消费消息
启动一个新的终端,创建生产者producer,向hello-mrpei topic写数据
./bin/kafka-console-producer.sh --broker-list hadoop001:9093 --topic hello-mrpei
创建消费者,消费hello-mrpei topic的消息
启动一个新的终端,进入kafka目录,启动控制台消费者
./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic hello-mrpei
--from-beginning表示消费历史消息
发送可接收消息正常
发送:
接收:
3.容错测试
通过强制终止部分broker进程,查看kafka的稳定性。
首先查看当前topic的信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei
Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,1,3
通过jps -m查看当前运行的kafka进程
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m
13649 Kafka config/server-2.properties
13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei
14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
13706 Kafka config/server-3.properties
14026 Jps -m
13484 Kafka config/server-1.properties
使用kill命令结束进程号为13484的broker节点1
kill -9 13484
jps -m查看到broker 1 已经结束
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m
13649 Kafka config/server-2.properties
13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei
14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
14089 Jps -m
13706 Kafka config/server-3.properties
[root@hadoop001 kafka_2.11-0.9.0.0]#
查看topic信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei
Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 2 Replicas: 2,1,3 Isr: 2,3
可以看到 Isr 存活的节点为:2,3
发送消息测试
生产者:
消费者:
可以发现可以正常消费
现在我们再次结束一个broker进程,这次选择结束leader节点,即节点 2
jps -m查看进程
[root@hadoop001 kafka_2.11-0.9.0.0]# jps -m
13649 Kafka config/server-2.properties
13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei
14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
13706 Kafka config/server-3.properties
14124 Jps -m
结束节点 2
kill -9 13649
jps -m------------
13939 ConsoleConsumer --zookeeper localhost:2181 --from-beginning --topic hello-mrpei
14004 ConsoleProducer --broker-list localhost:9093 --topic hello-mrpei
14148 Jps -m
12838 QuorumPeerMain /usr/server/zookeeper-3.4.5/bin/../conf/zoo.cfg
13706 Kafka config/server-3.properties
查看topic信息:
[root@hadoop001 kafka_2.11-0.9.0.0]# ./bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic hello-mrpei
Topic:hello-mrpei PartitionCount:1 ReplicationFactor:3 Configs:Topic: hello-mrpei Partition: 0 Leader: 3 Replicas: 2,1,3 Isr: 3
可以看到 Isr 存活的节点只剩下节点3,此时leader已经变为节点3,此次省去选举过程介绍。
消费测试:
生产者:
消费者:
消费仍然正常。
自此,kafka容错高可用测试结束,经过生产环境的验证kafka确实是高可用的消息中间件,今后的生产环境可以根据需要选用kafka。
转载于:https://my.oschina.net/mrpei123/blog/1929200
Kafka 教程(二) 集群搭建和容错性测试相关推荐
- Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装
Python +大数据-Hadoop生态-Linux(二)-集群搭建和安装 今日课程学习目标 1.掌握Linux用户.权限管理 2.掌握Linux常用系统命令 3.掌握服务器集群环境搭建 4.了解sh ...
- kafka高可用集群搭建
################################################################# 物理环境(两台机子组成的真实集群): Desktop一个zk节点 L ...
- 教程 | Hadoop集群搭建和简单应用
这是小小本周的第一篇,我是小小,开更本周的第一篇,本篇将会介绍Hadoop集群的简单搭建和简单应用. 概念了解 主从结构:在一个集群众,会有部分节点充当主节点的角色,其他服务器都是从节点的角色,当前这 ...
- mysql集群 教程_mysql集群搭建教程-基础篇
计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根据步骤一步步的 ...
- 【Oracle 集群】Linux下Oracle RAC集群搭建之基本测试与使用(九)
Oracle 11G RAC数据库安装(九) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总 ...
- 软件测试集群,集群搭建完成简要测试集群(性能)带宽与IOPS
集群搭建好之后网络,raid卡策略,磁盘都会影响集群的性能.为了避免因上述问题使得集群的性能受到影响,我们依次进行测试,最后得到基本的集群性能. 网络 首先是网络,ceph集群一大堆让人摸不着头脑的问 ...
- kafka简介与集群搭建
Kafka 是一款分布式消息发布和订阅系统,具有高性能.高吞吐量的特点而被 广泛应用与大数据传输场景. 由于 kafka 具有更好的吞吐量.内置分区.冗余及容错性的优点(kafka 每秒可 以处理几十 ...
- 虚拟机克隆教程——用于集群搭建等
克隆虚拟机教程 一.克隆 二.MAC地址 三.hostname 四.修改IP地址 一.克隆 搭建集群需要多台机器,可以用克隆实现快速搭建多台机器 先找到要克隆的机器 右键 -> 管理 -> ...
- hadoop分布式环境搭建二(集群搭建)
安装准备 1.在/opt目录下创建software及modules文件夹,并修改到为mac用户下 sudo mkdir /opt/software [sudo] password for mac: [ ...
最新文章
- System.Timers.Timer的Enable、Start、Stop记录
- 两个整数百分百C语言,2011年9月份计算机二级C语言上机题库(百分百准确),,,[1]
- vue如何发送网络请求,使用axios事半功倍!
- wxWidgets:wxSplashScreen类用法
- VTK:可视化之CameraModel1
- 大话“用户注册激活,忘记密码”发送邮件功能
- python oj 输入_Python写OJ题时输入问题
- 普通码农和技术大牛之间,只差这10本书(1024高能福利)
- 信息学奥赛一本通(1082:求小数的某一位)
- java printf与println_浅析Java中print、printf、println的区别
- linux查内存命令6,CentOS 6.8与CentOS 7.5内存查看命令free的差异对比
- java pollfirst_Java BlockingDeque pollFirst()用法及代码示例
- 对于DOM的attribute和property的一些思考
- 智能一代云平台(三十三):log4j日志研究
- Ubuntu Gitosis安装设置
- 计算机网络对等模式,计算机网络有两种常用的工作模式,它们是对等模式和客户/服务器模式。QQ聊天属于________模式。...
- 创建AD域之后设置DNS服务访问外网
- 超实用的JavaScript技巧及最佳实践(下)
- Hadoop实战之一~Hadoop概述
- 安装ubuntu20.04,从格式化磁盘到搭建全栈开发环境