ZK--简介,部署
官网: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不会主动的清除旧的快照和日志文件,这个是操作者的责任,清理方法:
- 脚本+计划任务清理
- 使用bin/zkCleanup.sh这个脚本清理,具体使用方法找官方文档
- 从3.4.0开始 zookeeper提供了自动清理snapshot和事务日志的功能 通过在zoo.cfg中配置两个参数实现:
autopurge.purgeInterval 清理频率,单位是小时,默认是0,表示不开启自动清理功能
autopurge.snapRetainCount 需要保留的文件数目,默认是保留3个
ZK--简介,部署的更多相关文章
- zk单点部署
一.环境准备 当前环境:centos7.3一台软件版本:zookeeper-3.5.2部署目录:/usr/local/zookeeper启动端口:2181配置文件:/usr/local/zookeep ...
- 01 . Go框架之Beego简介部署及程序流程分析
Beego简介 beego是一个使用Go语言来开发WEB引用的GoWeb框架,该框架起始于2012年,由一位中国的程序员编写并进行公开,其目的就是为大家提供一个高效率的web应用开发框架.该框架采用模 ...
- 01 . OpenResty简介部署,优缺点,压测,适用场景及用Lua实现服务灰度发布
简介 OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态 ...
- Jumpserver简介,部署使用
Jumpserver简介 Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为亏联网企业提供了认证,授权,审计,自动化运维等功能,基于ssh协议来管理,客户端无需 ...
- day131:2RenMJ:2RenMJ游戏简介&部署MJ项目到本地
目录 1.游戏简介 1.如何做出一款麻将游戏? 2.麻将运行界面 3.麻将项目所用技术快速概览 4.web开发 / 游戏开发 / APP开发 比较 5.firefly游戏框架介绍 2.部署麻将项目到本 ...
- 001-zookeeper 简介-paxos算法,zk简介,特点
一.概述 大数据体系概述 1.1.什么是zookeeper 是Google的Chubby一个开源的实现,是Hadoop的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于他实现同步服务,配 ...
- tomcat -> 简介&部署
Tomcat 简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开 ...
- Servlet规范简介——web框架是如何注入到Servlet中的
Servlet规范简介--web框架是如何注入到Servlet中的 引言 Web框架一般是通过一个Servlet提供统一的请求入口,将指定的资源映射到这个servlet,在这个servlet中进行框架 ...
- 部署与管理ZooKeeper(转)
本文以ZooKeeper3.4.3版本的官方指南为基础:http://zookeeper.apache.org/doc/r3.4.3/zookeeperAdmin.html,补充一些作者运维实践中的要 ...
- ZooKeeper的安装与部署
本文讲述如何安装和部署ZooKeeper. 一.系统要求 ZooKeeper可以运行在多种系统平台上面,表1展示了zk支持的系统平台,以及在该平台上是否支持开发环境或者生产环境. 表1:ZooKeep ...
随机推荐
- Jdk_HashMap 源码 —— hash(Object)
Jdk 源码 HashMap 的源码是在面试中考的算是比较多的,其中有很多高性能的经典写法,也值得多学习学习. 本文是本人在阅读和学习源码的过程中的笔记(不是教程),如有错误欢迎指正. Jdk Ver ...
- 【Servlet】两种配置
web.xml中Servlet的注解 <servlet> <!-- servlet的内部名称,⾃定义 --> <servlet-name>类名</servle ...
- 【封装】Trie
#include<cstdio> const int N = 1e6 + 5; struct Trie{ int root, id; bool bit[32]; struct Node{ ...
- 0x05.HelloJAVA
基础知识 java的类目和文件名必须相同(区分大小写) java文件,先编译成字节码(.class文件),然后在JAVA的虚拟机JVM上以解释方式执行字节码 java的项目里面包含了源代码.依赖.配置 ...
- linux笔记一(基础命令)
总结: 1.ls – List ls会列举出当前工作目录的内容(文件或文件夹),就跟你在GUI中打开一个文件夹去看里面的内容一样. 2.mkdir – Make Directory mkdir 用 ...
- LeetCode190:颠倒二进制(位运算分治! 时间复杂度O(1))
解题思路:这道题很两种解法,常规的就是O(n),另一种就是巧妙的利用位运算实现分治,时间复杂度O(1),类似于归并排序.不过这个递归不是自顶向下,而是巧用位运算从自底向上实现. 比如01001000通 ...
- 印能捷添加了加密进程导出的pdf文件不加密(rename的类型未添加)
解决方法:用procmon监控下图的所有文件事件,查找rename的类型,然后右键SetRenameInfo点击Include,将查出来的类型添加到加密后缀中,如下图是一个无后缀的类型需要添加\NOE ...
- Docker本地部署Firefox火狐浏览器并远程访问
Docker本地部署Firefox火狐浏览器并远程访问 Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护.它是第一个成功挑战微软Internet Explorer浏览器垄断地 ...
- 产品经理,项目经理,FTO
职责与自驱 产品经理是要保证做正确的事:项目经理则是保证正确地做事:FTO 既要保证做正确的事,也要保证正确地做事,还要保证能拿到结果,且对结果负责. 能做事的专业人才不缺,但是既有专业知识和技能还能 ...
- 【华为云技术分享】LiteOS无法直接烧录或者烧录失败解决方法--ST-Link
前提条件: 程序编译成功,并且电脑上已经安装ST-Link驱动,你使用的仿真器也是ST-Link. 上图黑色的是J-Link,下图紫色的是ST-Link,本教程适用于ST-Link,如果是J-Link ...