官网: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. Mybatis和其他主流框架的整合使用

    Mybatis简介 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google ...

  2. python进程状态

    思考 为啥我VS编辑器里一直在import中报错,但是写到笔记本里就可以直接用 之前俄罗斯方块也是同样问题 安装 pip install transitions 代码 from transitions ...

  3. OPC 协议数据采集

    kepserver   OPC Connectivity Suite 让系统和应用程序工程师能够从单一应用程序中管理他们的 OPC 数据访问 (DA) 和 OPC 统一架构 (UA) 服务器.通过减少 ...

  4. 4. Shell 循环语句

    重点: 条件测试. read. Shell 环境配置. case. for. find. xargs. gzip,bzip2,xz. tar. sed. 1)循环 1.1)循环执行介绍 将某代码段重复 ...

  5. JavaWeb项目练习(学生选课管理系统)三【登录功能】

    需求: 首页为用户登录页面,管理员,教师,学生三种角色用户登录后,进入相应的功能页. 在index.jsp文件里跳转到login.jsp页面,为了更好地书写 <%@ page contentTy ...

  6. wps表格怎么打印选中区域的内容?

    打印选中区域的内容,您可以按照以下步骤进行操作: 选择要打印的区域 打开 WPS 表格,在工作表中选择您希望打印的区域.您可以拖动鼠标或使用键盘中的方向键来选择单元格. 设置打印区域 一旦您选中了需要 ...

  7. 简易的git命令行入门教程

    一.Git 全局设置 git config --global user.name "用户名" git config --global user.email "邮件地址@1 ...

  8. Salesforce LWC学习(四十六) 自定义Datatable实现cell onclick功能

    本篇参考:https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable 背景:我们有时会有这种类 ...

  9. [ICPC2014WF]Sensor Network

    题目描述 A wireless sensor network consists of autonomous sensors scattered in an environment where they ...

  10. Redis工具类及Redis序列化

    导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...