官网: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. Vue项目引用百度地图并实现搜索定位等功能

    Tip:本篇文章为案例分析,技术点较多,所以篇幅较长,认真阅览的你一定会学到很多知识. 前言:百度地图开放平台 给开发者们提供了丰富的地图功能与服务,使我们的项目中可以轻松地实现地图定位.地址搜索.路 ...

  2. 提高cin cout的速度

     ios::sync_with_stdio(false) :用来关闭iostream与stdio的同步,从而提高 cin cout 的效率,但是就不能再用 scanf printf 了,因为不关闭之前 ...

  3. C语言假设今天是星期日,编写一个程序,求2019天后是星期几。

    #include<stdio.h> void main() { int n = 2019, d;//定义变量和常量 d = n % 7;//计算余数 switch (d)//选择星期 { ...

  4. Django的staticfiles库

    staticfiles 库是 Django 提供的一个用于管理静态文件的库,它提供了一些工具和函数来帮助开发者在 Django 应用程序中管理和提供静态文件服务. 在 Django 应用程序中,静态文 ...

  5. 【UniApp】-uni-app-CompositionAPI应用生命周期和页面生命周期

    前言 好,经过上个章节的介绍完毕之后,了解了一下 uni-app-OptionAPI应用生命周期和页面生命周期 那么了解完了uni-app-OptionAPI应用生命周期和页面生命周期之后,这篇文章来 ...

  6. python、numpy计算不同文档下的词的TF-IDF值以及进行文档相似度匹配(实战)

    TF-IDF 计算公式(一个词的 tf-idf 值在不同文档,它的值也不同): 1.根据已有的原始数据,只展示了前5片文档,content是文档内容,s_words是通过jieba分词将文档划分成了若 ...

  7. HOLMES通过关联可疑信息流进行实时 APT 检测

    HOLMES 通过关联可疑信息流进行实时 APT 检测 基本信息 题目:HOLMES: Real-time APT Detection through Correlation of Suspiciou ...

  8. 关于WPF下用户登录后再启动主窗体的实现方法

    /// <summary>App.xaml 的交互逻辑</summary> public partial class App : Application { private b ...

  9. NC65主键含义

    最简单的办法,调用用友的类 import nc.jdbc.framework.generator.SequenceGenerator; IdGenerator idGenerator = new Se ...

  10. Springboot3核心特性

    一.简介 1. 前置知识 Java17 Spring.SpringMVC.MyBatis Maven.IDEA 2. 环境要求 环境&工具 版本(or later) SpringBoot 3. ...