文章转自: https://www.jianshu.com/p/dc4770fc34b6

在单台主机上搭建kafka + zookeeper 集群。

zookeeper 集群搭建

kafka是通过zookeeper来管理集群。
kafka 软件包内虽然包括了一个简版的 zookeeper,但是感觉功能有限。在生产环境下,建议还是直接下载官方zookeeper软件。

  • 最新版的zookeeper软件下载链接
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
  • 解压,并把解压后的文件移动到/var/zookeeper下,重命名为zookeeper00
tar -xzf zookeeper-3.4.8.tar.gz
mv zookeeper-3.4.8 /var/zookeeper/
cd /var/zookeeper/
mv zookeeper-3.4.8 zookeeper00
  • 进入/var/zookeeper/zookeeper00/conf目录下,将zoo_sample.cfg修改为zoo.cfg(因为zookeeper启动时默认读的配置文件就叫zoo.cfg)
cd /var/zookeeper/zookeeper00/conf
mv zoo_sample.cfg zoo.cfg
  • zookeeper配置文件修改
tickTime=2000 #心跳时间,单位:毫秒
initLimit=10 #Follower在启动时需要在10个心跳时间内从Leader同步数据
syncLimit=5 #超过5个心跳时间收不到Follower的响应,就认为此Follower已经下线
dataDir=/zyxx_data/zookeeper/data00 #zookeeper存储数据的目录
clientPort=2181 #zookeeper服务端口
server.0=192.168.6.56:20881:30881
server.1=192.168.6.56:20882:30882
server.2=192.168.6.56:20883:30883
  • server.0、server.1、server.2 是指整个zookeeper集群内的节点列表。server的配置规则为:server.N=YYY:A:B
  • N表示服务器编号
  • YYY表示服务器的IP地址
  • A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。
  • B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)
  • 一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能是A端口和B端口不一样。
  • zookeeper多节点配置

通过以上配置,一个zookeeper节点就做好了,下面配置多个节点,我们把zookeeper根目录zookeeper00拷贝多份并重命名

cp -a zookeeper00/ zookeeper01
cp -a zookeeper00/ zookeeper02

针对zookeeper01/conf/zoo.cfg和zookeeper02/conf/zoo.cfg,同样需要修改上面几个地方。修改后参数具体如下(由于是在同一台机器上模拟集群,所以dataDir、clientPort不能一样)
** zookeeper01/conf/zoo.cfg **

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zyxx_data/zookeeper/data01
clientPort=2182
server.0=192.168.6.56:20881:30881
server.1=192.168.6.56:20882:30882
server.2=192.168.6.56:20883:30883

** zookeeper02/conf/zoo.cfg **

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zyxx_data/zookeeper/data02
clientPort=2183
server.0=192.168.6.56:20881:30881
server.1=192.168.6.56:20882:30882
server.2=192.168.6.56:20883:30883
  • zookeeper数据目录创建

zookeeper三个节点对应的数据目录分别为

/zyxx_data/zookeeper/data00
/zyxx_data/zookeeper/data01
/zyxx_data/zookeeper/data02

创建好对应的目录后,要分别在这三个目录下创建一个名为myid的文件,文件内容只有一个数字,代表zookeeper节点的唯一id,即要确保此id在集群内唯一,且要跟配置文件中的server.0、server.1、server.2 对应上。

kafka broker集群搭建

  • kafka 下载、解压
wget http://apache.opencas.org/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz
tar -xzf kafka_2.11-0.9.0.0.tgz
  • kafka broker配置文件修改

修改kafka根目录下的config/server.properties

broker.id=0 #整个集群内唯一id号,整数,一般从0开始
listeners=PLAINTEXT://192.168.6.56:9092 #协议、当前broker机器ip、端口,此值可以配置多个,应该跟SSL等有关系,更多用法尚未弄懂,这里修改为ip和端口。
port=9092 #broker端口
host.name=192.168.6.56 #broker 机器ip
log.dirs=/zyxx_data/kafka-logs/kafka00 #kafka存储数据的目录
zookeeper.connect=192.168.6.56:2181,192.168.6.56:2182,192.168.6.56:2183 #zookeeper 集群列表
  • kafka broker多节点配置

kafka多节点配置,可以像zookeeper一样把软件目录copy多份,修改各自的配置文件。这里介绍另外一种方式:同一个软件目录程序,但使用不同的配置文件启动

使用不同的配置文件启动多个broker节点,这种方式只适合一台机器下的伪集群搭建,在多台机器的真正集群就没有意义了

  • 把kafka根目录下的config/server.properties copy两份,名称分别修改为:server-1.properties 、server-2.properties。各自修改他们的配置如下:

config/server-1.properties

broker.id=1
listeners=PLAINTEXT://192.168.6.56:9093
port=9093
host.name=192.168.6.56
log.dirs=/zyxx_data/kafka-logs/kafka01
zookeeper.connect=192.168.6.56:2181,192.168.6.56:2182,192.168.6.56:2183

config/server-2.properties

broker.id=2
listeners=PLAINTEXT://192.168.6.56:9094
port=9094
host.name=192.168.6.56
log.dirs=/zyxx_data/kafka-logs/kafka02
zookeeper.connect=192.168.6.56:2181,192.168.6.56:2182,192.168.6.56:2183

集群启动

  • zookeeper集群启动

进入到/var/zookeeper/目录,执行

zookeeper00/bin/zkServer.sh start
zookeeper01/bin/zkServer.sh start
zookeeper02/bin/zkServer.sh start

我们可以通过以下命令查看zookeeper是否已启动

ps -ef | grep zoo.cfg
查看zookeeper进程信息
  • kafka 集群启动

进入到kafka目录,执行

bin/kafka-server-start.sh -daemon config/server.properties
bin/kafka-server-start.sh -daemon config/server-1.properties
bin/kafka-server-start.sh -daemon config/server-2.properties

"-daemon" 参数代表以守护进程的方式启动kafka server。
官网及网上大多给的启动命令是没有"-daemon"参数,如:“bin/kafka-server-start.sh config/server.properties &”,但是这种方式启动后,如果用户退出的ssh连接,进程就有可能结束,具体不清楚为什么。

我们可以通过以下命令查看kafka server是否已启动

ps -ef | grep config/server
查看kafka server进程信息

测试

为了简单起见,这里通过命令行的方式启动生产者和消费者进行测试。

  • 创建主题

进入到kafka目录,创建“test5”topic主题:分区为3、备份为3的

bin/kafka-topics.sh --create --zookeeper 192.168.6.56:2181,192.168.6.56:2182,192.168.6.56:2183 --replication-factor 3 --partitions 3 --topic test5

--zookeeper : zookeeper集群列表,用英文逗号分隔。可以不用指定zookeeper整个集群内的节点列表,只指定某个或某几个zookeeper节点列表也是你可以的
replication-factor复制数目,提供failover机制;1代表只在一个broker上有数据记录,一般值都大于1,代表一份数据会自动同步到其他的多个broker,防止某个broker宕机后数据丢失。
partitions一个topic可以被切分成多个partitions,一个消费者可以消费多个partitions,但一个partitions只能被一个消费者消费,所以增加partitions可以增加消费者的吞吐量。kafka只保证一个partitions内的消息是有序的,多个一个partitions之间的数据是无序的。

查看"test5"主题详情

bin/kafka-topics.sh --describe --zookeeper  192.168.6.56:2181 --topic test5
test5 topic详情
  • 启动生产者、消费者

启动生产者

bin/kafka-console-producer.sh --broker-list 192.168.6.56:9092 --topic test5

--broker-list : 值可以为broker集群中的一个或多个节点

启动消费者(在新的ssh连接窗口)

bin/kafka-console-consumer.sh --zookeeper 192.168.6.56:2181 --topic test5 --from-beginning

--zookeeper : 值可以为zookeeper集群中的一个或多个节点

我们可以发现,在生产者下输入一个消息,回车后可以在消费者下输出,说明我们集群搭建的没问题

生产者和消费者
  • 模拟kafka broker集群某个节点宕机

我们直接通过kill 进程来模拟

再观察 生产者和消费者

某个broker节点宕机后的生产者消费者

我们可以发现,消费者出现了警告信息,但是依旧可以消费数据。

  • 模拟zookeeper集群某个节点宕机

我们直接通过kill 进程来模拟

再观察 生产者和消费者

某个zookeeper节点宕机后的生产者和消费

我们可以发现,消费者依旧可以消费数据。
这就说明我们整个集群环境的搭建已经成功。

注意一点,你启动消费者时在命令中只指定了一个zookeeper节点,且模拟zookeeper某个节点宕机时,你kill掉的正好又是这个节点。这种情况下你的消费者会不停的报警告信息,但是不影响消费信息。

单台主机 kafka + zookeeper 集群搭建相关推荐

  1. Kafka+zookeeper集群搭建

    Kafka[第一篇]Kafka集群搭建 Kafka初识 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews) ...

  2. Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建

    Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...

  3. DevOpsSOP 基于阿里云VPC搭建Storm+Kafka+Zookeeper集群

    集群搭建之 zookeeper + kafka 环境要求 pre-install Centos下安装Java开发环境 JDK1.8 Cenos下安装Supervisor守护 zookeeper clu ...

  4. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

  5. 2021年大数据ZooKeeper(二):ZooKeeper集群搭建

    目录 ZooKeeper集群搭建 第一步:下载zookeeeper的压缩包,下载网址如下 第二步:解压 第三步:修改配置文件 第四步:添加myid配置 ​​​​​​​第五步:安装包分发并修改myid的 ...

  6. zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)

    ZooKeeper集群介绍 最典型集群模式: Master/Slave 模式(主备模式).在这种模式中,通常 Master服务器作为主服务器提供写服务,其他的 Slave 服务器从服务器通过异步复制的 ...

  7. Windows10 Kafka Docker 集群搭建

    Windows10 Kafka Docker 集群搭建 简介     使用 Windows Docker Desktop 搭建 Kafka 集群 运行 Zookeeper     这里使用但 zk,使 ...

  8. 保姆级zookeeper集群搭建(leader+follower模式)

    Zookeeper集群搭建指的是ZooKeeper分布式模式安装.通常由2n+1台server组成.这是因为为了保证Leader选举(基于Paxos算法的实现)能过得到多数的支持,所以ZooKeepe ...

  9. 分布式协调服务Zookeeper集群搭建

    分布式协调服务Zookeeper集群搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装jdk环境 1>.操作环境 [root@node101.yinzhengjie ...

最新文章

  1. resultset rs =pst.executequery();发生异常_07795.14.4HMaster无法成为Active异常分析
  2. 性能测试——房屋租赁系统(Badboy、JMeter)
  3. ImportError: libSM.so.6: cannot open shared object file: No such file or dir
  4. [原创]关于在VS解决方案下使用文件夹管理多个项目层次关系的说明
  5. 网页上的摄影展:等高响应布局实现
  6. 诺贝尔奖发了120年,钱怎么越花越多?
  7. python类似turtle的库_Python库——turtle
  8. Git服务器的搭建和使用
  9. VC最常见的20种VC++编译错误信息
  10. Ubuntu 下为 Idea 创建启动图标.
  11. 谈一谈 IPA 上传到 App Store Connect 的几种方法
  12. c语言字符雨动画代码,c语言实现数字雨
  13. kindle看pdf乱码_kindle阅读pdf中文乱码解决
  14. nvme-cli tool 刷FW(固件)
  15. 需求分析——系统建模方法
  16. Apache Project LIst 所有项目介绍
  17. Redis的Mster/Slaver
  18. B2B企业做好SEM竞价推广的要点介绍
  19. Java基础篇--集合(map)
  20. java蓝桥杯练习 学做菜

热门文章

  1. 阿里达摩院青橙奖再颁发!10名大陆青年科学家各获100万,最小获奖者28岁
  2. 战网AI危机!AlphaStar匿名潜入星际2天梯PK,进化版让人类玩家瑟瑟发抖
  3. 连接时会提示oracle initialization or shutdown in progress
  4. 设计原则——依赖倒置
  5. JavaScript正则表达式笔记
  6. 在 Asp.NET MVC 中使用 SignalR 实现推送功能
  7. 127 - Accordian Patience
  8. oracle em 按钮乱码解决办法
  9. LTE: 下行HARQ进程数目的来源。
  10. MySQL — 索引的慢查询优化与 B+ 树