单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)
1.JDK安装
在我的部署单节点kafka的博客里有相关的方法。(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的压缩包下载地址也在单节点部署的这篇博客里。
1.zookeeper集群的搭建
将zookeeper.tar.gz解压为三个目录,例如:
以上图中的目录结构为例,进入./zookeeper-1/conf。找到zoo.cfg文件,如果没有就复制一份zoo_sample.cfg并将其改名为zoo.cfg,zoo.cfg是zookeeper的配置文件。如下:
在部署zookeeper集群之前,一定要记得将已经运行的zookeeper节点停止。现在修改zoo.cfg的配置。
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # 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/zookeeper/zookeeper-1/zkData dataLogDir=/usr/zookeeper/zookeeper-1/zkLogs # the port at which the clients will connect clientPort=2181# the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1server.0=172.20.25.100:2890:3890
zoo.cfg
配置项含义:
tickTime: 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。 initLimit: 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒 syncLimit: 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒 dataDir: 快照日志的存储路径 dataLogDir: 事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多 clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。如果是单机部署zookeeper集群(伪集群),每一个zookeeper节点的zoo.cfg中的clientPort都要互不相同。server.id=ip:port1:port2: server.id中的id是一个数字,同一个集群中的id不能重复,它代表这这个节点在集群中的身份,具体的使用方法是,要在dataDir配置所指定的目录下(这个目录必须要存在)创建一个名为myid的文件,假设集群的id为{id1,id2,id3},那么我们可以使用命令:echo "id1">myid,将id1分配给当前的结点,注意这里的{id1,id2,id3}必须是server.id中出现过的id,每个节点被分配的id不能重复。ip指的是集群所在服务器的ip地址,假如是在A、B、C三台物理机上部署集群,其ip分别为ipA、ipB、ipC,那么部署方法是: server.1=ipA:port1:port2 server.2=ipB:port1:port2 server.3=ipC:port1:port2 在ip的后面紧跟着两个端口,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888。单机部署的时候,集群节点列表中的port1、port2互不相同。(你可以把上面的server.1、server.2、server.3视为一个节点列表)
接下来,进入每个节点的bin目录,例如./zookeeper-1/bin/。然后使用命令:
sh zkServer.sh start
zookeeper的运行日志保存在bin目录下的zookeeper.out中。如果运行失败,可以查看此文件,找到出错的问题再想办法解决。
zookeeper集群搭建时不能马上使用sh zkServer.sh status来查看节点的命令,因为zookeeper节点之间还有一系列的工作需要做。你需要在三个结点都启动之后再等一会儿才能使用该命令来检查各个zookeeper节点是否成功启动。
如上图,Mode:follower表示这是一个从结点,这代表该节点已经启动成功。
Zookeeper集群搭建完毕之后,可以通过客户端脚本连接到zookeeper集群上面,对客户端来说,zookeeper集群是一个整体,连接到zookeeper集群实际上感觉在独享整个集群的服务。
在节点1进行测试:执行命令sh zkCli.sh -server IP:port IP和port是你要连接的目标节点的IP地址和clientport。
如上图表示已经成功连接到zookeeper集群了,要退出客户端只需要输入quit,回车即可。
3.kafka集群搭建
下载项目的压缩包,在服务器上创建三个文件夹(单机),每个目录里包含的内容都是一样的,只有配置上会有所不同,如下:
上面一共有3个目录,依次进入,修改config子目录下broker的配置文件:server.properties。修改完成后,依次进入三个目录的子目录bin目录执行命令:
sh ./bin/kafka-server-start.sh -daemon ./config/server.properties #具体的命令执行要看你当时所处的位置
然后使用jps命令可以查看你的kafka集群是否启动成功。
搭建kafka集群的操作主要是配置的问题,一个是zookeeper的相关配置,另一个是logs存储路径的配置。其它没什么了。
转载于:https://www.cnblogs.com/ToBeExpert/p/10469253.html
单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)相关推荐
- 搭建zookeeper+kafka集群
搭建zookeeper+kafka集群 一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...
- 如何为一个kafka集群选择topics/partitions的数量
2019独角兽企业重金招聘Python工程师标准>>> How to choose the number oftopics/partitions in a Kafka cluster ...
- 手把手搭建一个redis集群
文章目录 前言 安装的含义 安装redis redis编译安装 redis集群 redis集群的使用 C++工程连接使用redis-cluster hiredis-cluster 总结 前言 所谓&q ...
- Docker 进阶(九)案例:Docker Swarm 搭建 zookeeper + kafka 集群
案例:搭建 zookeeper + kafka 集群 ps:Docker Swarm 基本不用了奥,现在都用 K8S version: '3.8'services:zoo1:image: zookee ...
- 【Kafka】如何判断一个kafka集群是否稳定
1.美图 2.背景 在流作业的生产环境中,作为应用最广泛的消息中间件,kafka集群的稳定性对业务的平稳起到重要作用.然而如何判断一个kafka集群的稳定性是一个运维人员的重要技能. 笔者结合经验总结 ...
- CDH大数据平台搭建之KAFKA集群搭建
CDH大数据平台搭建之KAFKA集群搭建 一.安装规划 二.下载KAFKA 三.安装及配置 1.先安装zookeeper 2.解压 3.新建文件夹 4.修改config目录server.propert ...
- 十分钟搭建一个EFK集群
快速部署搭建ELK ELK 介绍 环境信息 架构 二进制部署 一,系统初始化. 二,elasticsearch安装(所有节点) 三,filebeat安装使用 四,nginx安装 五,kibana 安装 ...
- Ceph分布式存储实战:从0搭建一个存储集群,并把块设备镜像映射到CentOS 7系统上的步骤
本文配套视频和笔记: Ceph分布式存储实战(Ceph快速上手) B站视频在线观看链接:[千锋教育]Ceph分布式存储技术教程(进阶到实战) 百度网盘链接:2020全新_Ceph分布式存储技术-进阶到 ...
- MongoDB在单机上搭建分片副本集群(windows)
------------------------------ 1.安装MongoDB ... ... ------------------------------ 2.准备好文件夹 --config: ...
最新文章
- 查看CentOS的网络带宽出口
- c++17(18)-static_cast
- 蓝桥杯 基础练习 十六进制转八进制
- PostgreSQL SSL启用与CA证书生成、配置
- Hanlp自然语言处理工具的使用演练
- 服务器无限火力时间,LOL十周年宣布无限火力开启时间 无限火力开启及持续时间详情...
- java抠图边框颜色处理_java 实现抠图(项目应用场景:抠图章)
- 超级详细的CentOS8.2搭建个人网站(WordPress)
- css:浏览器中文字显示模糊的原因及处理方案
- 活体检测综述 Deep Learning for Face Anti-Spoofing: A Survey 阅读记录
- Mackevision 发布 2016 年回顾与展望
- MFC的进度栏的编程
- 生物信息学笔记01-- 绪论
- 基于一维卷积神经网络的滚动轴承故障识别
- 【高级Java开发】类QQ聊天工具的设计与实现(代码已上传)
- mysql 聚簇索引与非聚簇索引
- 67.220.90.12/bbs/index.php,对乌云漏洞库payload的整理以及Burp辅助插件
- csv文件操作、excel读写操作
- 【JoJo的摄影笔记】相机选购指南(伪)
- python 回文联问题
热门文章
- n个数分为m堆有多少种分法(青岛理工邀请赛)动态规划
- java二维数组合并_java怎么合并二维数组
- Java不兼容类型问题解决方案
- 请在贵网站的根目录下部署一个文件_使用 github pages, 快速部署你的静态网页
- ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...
- 深度学习(7)TensorFlow基础操作三: 索引与切片
- linux 上传网页,Windows和Linux主机FTP上传网页注意事项
- foreach是同步还是异步JAVA,Java中foreach与正常for循环效率对比
- 数学--数论--莫比乌斯函数
- 图论--最短路--Floyd(含路径输出)