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 atwhichthe clients will connect

clientPort=2181# the maximum number of client connections.

# increase thisif you need to handle moreclients

#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 retainindataDir

#autopurge.snapRetainCount=3# Purge task intervalinhours

# 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存储路径的配置。其它没什么了。

单机 搭建kafka集群 本地_单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)...相关推荐

  1. 单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)

    1.JDK安装 在我的部署单节点kafka的博客里有相关的方法.(https://www.cnblogs.com/ToBeExpert/p/9789486.html )zookeeper和kafka的 ...

  2. 单机 搭建kafka集群 本地_单机快速搭建多节点kafka集群

    有时候为了更好地了解kafka集群的运行机制,需要自己搭建kafka集群.本文的目的就是让大家在单机上快速搭建kafka集群(仅作为单机测试使用). 环境及工具版本 mac OS 10.15.5 ka ...

  3. CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建

    CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建 实验内容: 1. 初始环境的优化 2. DNS服务器的搭建和postfix域名解析 3. Postfix服务器安装 ...

  4. 需要单机还是集群部署_单机、集群和分布式(微服务结构)的区别

    一.单机 单机就是所有的业务全部写在一个项目中,部署服务到一台服务器上,所有的请求业务都由这台服务器处理.显然,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求.自然而然地想到一个程序不行就 ...

  5. 需要单机还是集群部署_单机、分布式、集群的区别与联系

    一.单机结构 一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供.这就是单机结构.单机结构的缺点是显而易见的,单机的处理能力 ...

  6. 导致集群重启_解析 Elasticsearch 棘手问题,集群的 RED 与 YELLOW

    01 前言 大家先看两个故障,带着问题去思考: [故障诊断 - 案例 A]首先大致看一下分片未分配原因: 结果显示分片大都是因为 node_left 导致未分配,然后通过 explain API 查看 ...

  7. java 集群会话管理_架构设计之Spring-Session分布式集群会话管理

    前言 通常在web开发中,会话管理是很重要的一部分,用于存储与用户相关的一些数据.对于JAVA开发者来说,项目中的session一般由Tomcat或者jetty容器来管理. 特点介绍 尽管使用特定的容 ...

  8. c++连接云服务器_如何简单搭建Minecraft服务器

    前置需求: 1.能够24小时不间断运行的计算机 2.公网IP地址 或: 一台云服务器 由于服务器硬件需要自行维护,公网IP申请也有一定难度,会带来许多不必要的麻烦,因此如果只是跟朋友一起玩,服务器人数 ...

  9. 单机 搭建kafka集群 本地_Kafka单机环境搭建简记

    最近在搞kettle整合kafka producer插件,于是自己搭建了一套单机的kafka环境,以便用于测试.现整理如下的笔记,发上来和大家分享.后续还会有kafka的研究笔记,依然会与大家分享! ...

  10. mysql数据库集群技术_使用MySQL-Cluster搭建MySQL数据库集群

    1.MySQL集群的作用: - 解决访问节点的单点故障 - 数据存储节点的单点故障 - 解决数据存储节点数据备份问题 2.集群: 使用一组服务器提供相同的服务 3.关于MySQL-Cluster: M ...

最新文章

  1. Dubbo 在maven项目中的应用
  2. MaxCompute,基于Serverless的高可用大数据服务
  3. iOS中使用OpenGL 实现增高功能
  4. NTU 课程笔记: PNP
  5. 操作系统开发系列—13.g.操作系统的系统调用 ●
  6. matlab 去除pdf文档水印
  7. python指数运算是不是有问题_为什么在Python 3中复指数运算如此之快?
  8. HDU1229 还是A+B【水题】
  9. 【数据库学习】——从零学习SQL语句(含SQL数据类型、SQL语句实例操作)
  10. Win32 Application和Win32 Console Application
  11. 数学建模写作指导20篇(二)-数学建模论文写作通用模板
  12. windows中批量修改文件后缀名
  13. sqlserver transact-sql UPDATE tran 用事务处理更新语句
  14. No serializer found for class com.yumoxuan.domain.Store and no properties discovered to create BeanS
  15. Jsonviewer2 for Notepad++ 64 bit
  16. Bmob 萌新也能简易上手 之一 注册登录- *2020版 (有demo)
  17. 极客日报:美团拼多多等平台下架“一分钱秒杀”;全球大量网站集体宕机,一度无法访问;Swift内置对并发的支持
  18. 肖秀荣:考研政治选择题最完整答题技巧总结
  19. 使用Microsoft Azure 门户 创建win 2012虚拟机
  20. 农产品溯源追溯系统(定制企业方案)

热门文章

  1. C++11多线程 unique_lock详解
  2. Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
  3. HDU-ACM-2018(母牛的故事)
  4. ROS下同时接收多个话题并实现相机和雷达的数据融合
  5. 创建AD域之后设置DNS服务访问外网
  6. HDU-1863-畅通工程
  7. Applese 涂颜色(python解法)
  8. linux运维视频教程
  9. verilog中signed的使用
  10. PowerDesigner16工具学习笔记-建立CDM