官网:https://zookeeper.apache.org/

本文zk版本:3.7.0

一、简介

ZooKeeper 是一个高可用的分布式数据管理与系统协调软件,它可以为分布式应用提供状态同步、配置管理、名称服务、群组服务、分布式锁及队列、以及 Leader 选举等服务。

特性:

  • 顺序一致性:从同一个客户端发起的事务请求,最终将会严格按照其发起顺序被应用到zookeeper中
  • 原子性:       所有事物请求的处理结果在整个集群中所有机器上的应用情况是一致的
  • 单一视图:   无论客户端连接的是哪个zookeeper服务器,其看到的服务端数据模型都是一致的
  • 可靠性:       一旦服务端成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务端状态变更将会一直保留下来,除非有另一个事务又对其进行了改变
  • 实时性:      保证在一定的时间内各个客户端看到的系统信息是一致的

zookeeper server 角色:

  • Leader:leader负责进行投票的发起和决议,更新系统状态
  • Follower:Follower用于接受客户请求并向客户端返回结果,在选主过程中参与投票
  • Observer:Observer可以接受客户端连接,将写请求转发给leader节点。但Observer不参加投票过程,只同步leader的状态。Observer的目的是为了扩展系统,提高读取速度。

ZooKeeper的数据模型是一个ZNode节点树,是一个类型与标准文件系统的层次结构;节点类型有

  • 临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点
  • 临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会有序列号,分布式锁中会用到该类型节点
  • 持久节点(PERSISTENT):创建后永久存在,除非主动删除
  • 持久顺序节点(PERSISTENT_SEQUENTIAL):该节点创建后持久存在,相对于持久节点它会在节点名称后面自动增加一个10位数字的序列号

二、安装部署

2.1 安装java环境

参考:https://www.cnblogs.com/Xinenhui/p/16254076.html

2.2 下载安装

各服务器关闭防火墙和selinux

包地址:https://zookeeper.apache.org/releases.html

useradd -s /bin/false -M -r zookeeper
mkdir /data/zookeeper/data{,log} -p
tar -xvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/

mv /usr/local/apache-zookeeper-3.7.0-bin/ /usr/local/zookeeper
cp /usr/local/zookeeper/zoo_sample.cfg /usr/local/zookeeper/zoo.cfg

2.3 配置文件(单机部署不需要写入server,2.4步骤也省略)

[root@zk ~]# grep -v "#\|^$" /usr/local/zookeeper/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/datalog
clientPort=2181
server.1=192.168.198.xxx:2888:3888
server.2=192.168.198.xxx:2888:3888
server.3=192.168.198.xxx:2888:3888

配置介绍:

  • tickTime:Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,单位毫秒
  • initLimit: Zookeeper 接受客户端(ZK集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数,当超过这个时间还没有收到客户端的返回信息,那么表明这个客户端连接失败
  • syncLimit:标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度
  • dataDir:快照日志的存储路径
  • dataLogDir:事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录 这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
  • clientPort:客户端连接 Zookeeper 服务器的端口
  • server.x:标识zk集群的服务器,这个标识要写到数据目录下面myid文件里,每个id对应且唯一
  • 2888:leader和follower之间的通信端口
  • 3888:leader选举的端口

2.4 创建myid文件,每个节点的myid需要对应且唯一

echo 1 > /data/zookeeper/data/myid

2.5 启动服务

#启动
/usr/local/zookeeper/bin/zkServer.sh start
#关闭
/usr/local/zookeeper/bin/zkServer.sh stop
#查看状态
/usr/local/zookeeper/bin/zkServer.sh status

三、注意事项

  • myid文件和server.myid 在快照目录下存放的标识本台服务器的文件,它是整个zk集群用来发现彼此的一个重要标识

  • zoo.cfg 文件是zookeeper配置文件,在conf目录里
  • log4j.properties文件是zk的日志输出文件,在conf目录里(用java写的程序基本上日志都用log4j来进行管理)

  • zkServer.sh 主管理程序文件,是主要配置zookeeper集群启动时配置环境变量的文件

  • zookeeper不会主动的清除旧的快照和日志文件,这个是操作者的责任,清理方法:
  1. 脚本+计划任务清理
  2. 使用bin/zkCleanup.sh这个脚本清理,具体使用方法找官方文档
  3. 从3.4.0开始 zookeeper提供了自动清理snapshot和事务日志的功能 通过在zoo.cfg中配置两个参数实现:
autopurge.purgeInterval  清理频率,单位是小时,默认是0,表示不开启自动清理功能
autopurge.snapRetainCount 需要保留的文件数目,默认是保留3个

ZK--简介,部署的更多相关文章

  1. zk单点部署

    一.环境准备 当前环境:centos7.3一台软件版本:zookeeper-3.5.2部署目录:/usr/local/zookeeper启动端口:2181配置文件:/usr/local/zookeep ...

  2. 01 . Go框架之Beego简介部署及程序流程分析

    Beego简介 beego是一个使用Go语言来开发WEB引用的GoWeb框架,该框架起始于2012年,由一位中国的程序员编写并进行公开,其目的就是为大家提供一个高效率的web应用开发框架.该框架采用模 ...

  3. 01 . OpenResty简介部署,优缺点,压测,适用场景及用Lua实现服务灰度发布

    简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 ...

  4. Jumpserver简介,部署使用

    Jumpserver简介 Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为亏联网企业提供了认证,授权,审计,自动化运维等功能,基于ssh协议来管理,客户端无需 ...

  5. day131:2RenMJ:2RenMJ游戏简介&部署MJ项目到本地

    目录 1.游戏简介 1.如何做出一款麻将游戏? 2.麻将运行界面 3.麻将项目所用技术快速概览 4.web开发 / 游戏开发 / APP开发 比较 5.firefly游戏框架介绍 2.部署麻将项目到本 ...

  6. 001-zookeeper 简介-paxos算法,zk简介,特点

    一.概述 大数据体系概述 1.1.什么是zookeeper 是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于他实现同步服务,配 ...

  7. tomcat -> 简介&部署

    Tomcat 简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开 ...

  8. Servlet规范简介——web框架是如何注入到Servlet中的

    Servlet规范简介--web框架是如何注入到Servlet中的 引言 Web框架一般是通过一个Servlet提供统一的请求入口,将指定的资源映射到这个servlet,在这个servlet中进行框架 ...

  9. 部署与管理ZooKeeper(转)

    本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...

  10. ZooKeeper的安装与部署

    本文讲述如何安装和部署ZooKeeper. 一.系统要求 ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境. 表1:ZooKeep ...

随机推荐

  1. 如何通过 wireshark 捕获 C# 上传的图片

    一:背景 1. 讲故事 这些天计划好好研究下tcp/ip,以及socket套接字,毕竟工控中设计到各种交互协议,如果只是模模糊糊的了解,对分析此类dump还是非常不利的,而研究协议最好的入手点就是用抓 ...

  2. 再学Blazor——组件建造者

    使用 RenderTreeBuilder 创建组件是 Blazor 的一种高级方案.前几篇文中有这样创建组件的示例 builder.Component<MyComponent>().Bui ...

  3. 小满OKKICRM与金蝶云星空对接集成客户资料

    小满OKKICRM与金蝶云星空对接集成客户列表查询(更新列表)&客户新增(小满客户对接金蝶客户-P) 数据源平台:小满OKKICRM 小满科技成立于2013年,是阿里巴巴集团战略投资的高新技术 ...

  4. Istio 网格的出口定义者:深入了解 Egress Gateway

    本文分享自华为云社区<Istio Egress 出口网关使用>,作者:k8s技术圈. 前面我们了解了位于服务网格内部的应用应如何访问网格外部的 HTTP 和 HTTPS 服务,知道如何通过 ...

  5. 后端程序员必会的前端知识-05:React

    五. React 1. React 基础 react 是前端三大框架之一 没有 vue 的基础更好,因为两者思想不太一样,不能用 vue 的习惯学习 react 需要有 js 基础,视频 19-58 ...

  6. Apache POI 操作Excel简单入门使用

    Apache POI简介 开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel ...

  7. vscode下载

    vscode下载 想下载官网可以直接去官网下载(速度超慢~) 百度网盘链接: 链接:https://pan.baidu.com/s/14DfWI5b2HA_J_kHBcu8JQw?pwd=yyds 提 ...

  8. CentOS基线检测脚本

    本脚本适用于CentOS 7.5-7.9版本,其他版本不详 1.检查系统信息 查看代码 echo " " echo "########################## ...

  9. Windows 7更新失败的解决方法

    你好,1.在开始菜单中点击运行,→输入"services.msc"→找到"windows update"右击选择"停止":2.进入C:\wi ...

  10. Havoc插件编写

    ‍ 配置文件的webhook支持discord,所以尝试使用钉钉和企业微信. WebHook { Discord { Url = "" AvatarUrl = "&quo ...