首页 > 其他分享 >分布式调度zookeeper、单机版、伪分布式、完全分布式

分布式调度zookeeper、单机版、伪分布式、完全分布式

时间:2022-12-23 13:03:04浏览次数:52  
标签:单机版 zk zookeeper 目录 式调度 path 节点 分布式

分布式调度——zookeeper

一、 为什么需要zookeeper

l 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)

l 大部分应用需要开发私有的协调程序,缺乏一个通用的机制

l 协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据

 

 

l 协调服务

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_02

 

 

二、 zookeeper简介

1. zookeeper是什么

l zookeeper是Google的Chubby一个开源的实现,是开源的分布式协调服务

l 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等

l zookeeper是一个高性能的分布式数据一致性解决方案,它将那些复杂的,容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并提供一系列简单易用的接口给用户使用

l 它的架构如下图:

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_03

 

 

2. zookeeper能帮我们做什么

l 分布式系统协调:多个节点一起完成一个动作

n 集群管理

n 选主

n 分布式

l 负载均衡,一般不用它

3. zookeeper的数据模型

l 层次化的目录结构,命名符合常规文件系统规范

l 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识

l znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本

l 节点不支持部分读写,而是一次性完整读写

4. zookeeper的下载地址

l 网址:http://mirrors.cnnic.cn/apache/zookeeper/

三、 zookeeper基本概念

1. 集群角色

 

 2. zookeeper节点类型

l persistent:persistent节点不和特定的session绑定,不会随着创建该节点的session的结束而消失,而是一直存在,除非该节点被显式删除

l ephemeral:ephemeral节点是临时性的,如果创建该节点的session结束了,该节点就会被自动删除,ephemeral节点不能拥有子节点,虽然ephemeral节点与创建它的session绑定,但只要该该节点没有被删除,其他session就可以读写该节点中关联的数据,使用-e参数指定创建ephemeral节点

l sequence:严格的说,sequence并非节点类型中的一种,sequence节点既可以是ephemeral的,也可以是persistent的,创建sequence节点时,ZooKeeper server会在指定的节点名称后加上一个数字序列,该数字序列是递增的,因此可以多次创建相同的sequence节点,而得到不同的节点,使用-s参数指定创建sequence节点

3. 版本

l Version:当前Znode的版本

l Cversion:当前Znode的子节点的版本

l Aversion:当前Znode的ACL(访问控制)版本

4. watcher

l 作用于Znode节点

l watcher设置后,一旦触发一次就会失效,如果需要一直监听,就需要再次注册

l 多种事件通知:数据更新,子节点状态等

l watcher会监控目录节点的数据变化以及子目录的变化,一旦发送改变,则通知所有设置在这个目录节点的watcher,从而做出相应的反应

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_04

 

 

5. zookeeper节点和配置常识

l zookeeper 提供了创建/修改/删除节点的功能,如果父节点没有创建,子节点会创建失败。如果父节点还有子节点,父节点不可以被删除

l zookeeper 和客户端之间以 socket 形式进行双向通讯,客户端可以主动调用服务器,服务器也可以主动向客户端推送事件

l zookeeper 的事件有传递机制,子节点的增删改触发的事件会向上层依次传播,所有的父节点都可以收到子节点的数据变更事件,所以层次太深/子节点太多会给服务器的事件系统带来压力,节点分配要做好周密的规划

l zookeeper 的读性能随着节点数量的提升能不断增加,但是写性能会随着节点数量的增加而降低,所以节点的数量不宜太多,一般配置成 3 个或者 5 个就可以了

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_05

 

 

 

四、 zookeeper的安装

1. 单机版

首先,验证本机是否有JDK环境,没有的先去第一天文档照做

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_06

 

 

1台机器,1个zk

 

先把包传上去

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_07

 

 

 

解压

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_08

 

 

如下目录,建个data目录,用于存放日志数据

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_09

 

 

将配置文件复制

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_10

 

 

修改数据目录为自己建的目录

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_11

 

 

启动和查看状态

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_12

 

 

关闭zk

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_13

 

 

2. 伪分布式

1台机器,3个zk

先看一下,有没有zookeeper在运行

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_14

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_15

 

 

将单机的,复制3份

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_16

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_17

 

 

 

3个zk分别写一个id

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_18

 

 

分别修改3个配置文件

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_19

 

 

3个机器的端口和路径修改,端口要不同,3台分别2181 2182 2183

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_20

 

 

3台尾部加上如下,注意修改IP

server.1=192.168.113.128:2881:3881

server.2=192.168.113.128:2882:3882

server.3=192.168.113.128:2883:3883

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_21

 

 

3台配置完成,去启动

第一台启动,此时报错是正常的

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_22

 

 

第二台启动之后,角色选举正常

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_23

 

 

第三台是跟随者

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_24

 

 

第一台也是跟随者

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_25

 

 

看完效果,3台都关闭,以免妨碍后面的实验

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_26

 

 

3. 完全分布式

3台机器,3个zk

首先,需要一些准备工作

(1) 关闭防火墙

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_27

 

 

(2) 关闭selinux

(3) 3台都起个主机名,我这里3台机器,分别叫 node01  node02  node03

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_28

 

 

(4) 配置映射,互相认识一下,加入以下内容,修改为自己IP

192.168.190.130 node01

192.168.190.131 node02

192.168.190.132 node03

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_29

 

 

(5) 3台都修改完,重启一下

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_30

 

 

(6) 还可以配置个SSH免密登录

第一台机器,生成密钥,一路回车

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_31

 

 

在第一台机器,将密钥,传送给3台机器

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_32

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_33

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_34

 

 

 

 

1号机去三号机

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_35

 

 

3号机回到1号机

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_36

 

 

开始做完全分布式:

把前面伪分别可以删了,再复制3份单机的

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_37

 

 

给3台分别写入id

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_38

 

 

3台修改路径,这里不用修改clientPort了

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_39

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_40

 

 

 

文件最后加入如下内容

server.1=node01:2888:3888

server.2=node02:2888:3888

server.3=node03:2888:3888

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_41

 

 

第一台机器,将配好的另外2个zk,传给另外2台机器

scp -r /usr/local/zookeeper02/ root@node02:/usr/local/zookeeper02

scp -r /usr/local/zookeeper03/ root@node03:/usr/local/zookeeper03

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_42

 

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_43

 

 

 

3台分别启动和查看状态,1主2从

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_44

 

 

五、 zookeeper详解

1. 解压后目录结构

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_45

 

 

2. 配置文件

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_46

 

 

进入脚本

./zkCli.sh

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_47

 

 

3. 运行脚本

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_48

 

 

直接运行zkCli.sh是连接自己的客户端,也可以连接其他机器客户端

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_49

 

 

4. 命令行操作

l help

l ls path [watch]

l create [-s] [-e] path data acl

l get path [watch]

l set path data [version]

l delete path [version]

l stat path [watch]

l setAcl path

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_50

 

 

可以创建目录,写内容

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_51

 

 

获取zk

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_数据_52

 

 

可以监听此目录

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_子节点_53

 

 

监听到目录的变化

 

分布式调度zookeeper、单机版、伪分布式、完全分布式_zookeeper_54

 



标签:单机版,zk,zookeeper,目录,式调度,path,节点,分布式
From: https://blog.51cto.com/u_15920572/5965373

相关文章