单机简单搭建一个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=
# The number of ticks that the initial
# synchronization phase can take
initLimit=
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/zookeeper/zookeeper-/zkData
dataLogDir=/usr/zookeeper/zookeeper-/zkLogs
# the port at which the clients will connect
clientPort= # the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=
#
# 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=
# Purge task interval in hours
# Set to "" to disable auto purge feature
#autopurge.purgeInterval= server.=172.20.25.100::
zoo.cfg
配置项含义:
tickTime:
这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳。
initLimit:
这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 *= 秒
syncLimit:
这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*=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.=ipA:port1:port2
server.=ipB:port1:port2
server.=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存储路径的配置。其它没什么了。
单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)的更多相关文章
- 搭建zookeeper+kafka集群
搭建zookeeper+kafka集群 一.环境及准备 集群环境: 软件版本: 部署前操作: 关闭防火墙,关闭selinux(生产环境按需关闭或打开) 同步服务器时间,选择公网ntpd服务器或 ...
- 手把手教你搭建一个 Elasticsearch 集群
为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎, ...
- [k8s]简单启动一个k8s集群
简单启动一个k8s集群 kube-master mkdir -p /root/logs/api-audit /root/logs/controller /root/logs/scheduler kub ...
- 手把手教你搭建一个Elasticsearch集群
一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个 ...
- Docker搭建Zookeeper&Kafka集群
最近在学习Kafka,准备测试集群状态的时候感觉无论是开三台虚拟机或者在一台虚拟机开辟三个不同的端口号都太麻烦了(嗯..主要是懒). 环境准备 一台可以上网且有CentOS7虚拟机的电脑 为什么使用虚 ...
- window环境搭建zookeeper,kafka集群
为了演示集群的效果,这里准备一台虚拟机(window 7),在虚拟机中搭建了单IP多节点的zookeeper集群(多IP节点的也是同理的),并且在本机(win 7)和虚拟机中都安装了kafka. 前期 ...
- MongoDB在单机上搭建分片副本集群(windows),版本二
配置可以参考前面一篇 https://www.cnblogs.com/a-horse-mosaic/p/9284010.html 副本集是一组服务器,其中有一个主服务器(primary),用于处理客户 ...
- MongoDB在单机上搭建分片副本集群(windows)
------------------------------1.安装MongoDB...... ------------------------------2.准备好文件夹 --config:配置文件 ...
- Kafka相关内容总结(Kafka集群搭建手记)
简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是 ...
随机推荐
- echarts相关属性设置(2)--折线图和柱状图的结合使用
type:bar和line的组合 option = { { tooltip: { trigger: 'axis', axisPointer: { // type: 'shadow' }, // lab ...
- clearfix的运行机制和进化
话说为什么要把这个记下来,因为昨天去面试,问了clearfix的原理,当时脑子不清晰,回答得真是想要咬舌自尽.遂,决定,要搞清楚来龙去脉~~~(资料来自网上博主们,)http://www.aseoe. ...
- [在读] javascript权威指南第六版
耽搁了有大半年没看,记得当时看到5分之2了吧.权威指南是不管读几遍都能觉得有新收获的书^^
- [译]Understanding ECMAScript 6 内容目录
说明 浏览器与Node.js兼容 这本书是写给谁的 概述 帮助与支持 基本知识 更好的Unicode支持 其他字符串变化 其他正则表达式变化 Object.is() 块绑定 解构赋值 数字 总结 函数 ...
- 牛客网Java刷题知识点之什么是cookie、什么是session、cookie和session有什么区别
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21170&query=&asc= ...
- 系统讲解一下,Dao,Entity,Servlet,Action各自有什么东西-Java/Web开发
dao 主要是一些接口,里面定义了一些用于增删改查的方法名 daoImpl 就是对dao的具体实现 Service 同上,也是一些接口,主要是用来调用dao层的一些方法,所以这里定义的方法一般都定义好 ...
- 一步步实现自己的ORM(五)
上一张优化了ORM的INSERT.UPDATE.DELETE,但将数据库里的值填充到实体类这块还没优化.另外有博友在网上咨询说你这个都是查询所有字段的,而他的需求是按需查询字段,不是一次性取出来所有字 ...
- 分布式系统ID生成办法
前言 一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给 ...
- input禁止显示用户输入历史记录
input标签中加上属性autocomplete="off"
- nagios的安装配置
主要参考博客:http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html 实验环境:centos6.4 最小化安装系统 **** ...