Zookeeper分布式集群

一、简介

目前创新互联已为数千家的企业提供了网站建设、域名、网络空间、网站托管、服务器托管、企业网站设计、华亭网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

     Zookeeper是一个高效的分布式协调服务,可以提供配置信息管理、命名、分布式同步、集群管理、数据库切换等服务。它不适合用来存储大量信息,可以用来存储一些配置、发布与订阅等少量信息。Hadoop、Storm、消息中间件、RPC服务框架、分布式数据库同步系统,这些都是Zookeeper的应用场景。

    Zookeeper集群中节点个数一般为奇数个(>=3),若集群中Master挂掉,剩余节点个数在半数以上时,就可以推举新的主节点,继续对外提供服务。

1、典型应⽤用场景

1)分布式通知/协调

⽤用于分布式系统的任务分发与任务执⾏行结果反馈

2) 集群管理

– 可以监控节点的存活状态

3)Master选举

Master/slave结构的系统中,避免单点故障,需要多个master,其中

只有⼀一个active master,ZooKeeper帮助选择active master

4) 分布式锁

– 独占:某⼀一时刻只有⼀一个client能够获得

– 控制时序:多个客户端的某些过程按照顺序执⾏行

5) 分布式队列

https://blog.csdn.net/king866/article/details/53992653/

2、架构

Zookeeper分布式集群Zookeeper分布式集群

2.1、节点

– 2N+1个server组成,N+1个节点可⽤用时,整个系统保持可⽤用

2.2、server⾓角⾊色类型

– Server:存放数据(in-memory)

– Leader:不接受client的请求,负责进⾏行投票的发起和决议,最终更新状态 – Follower:接收客户请求并返回客户结果,参与Leader发起的投票

3、ObServer节点

问题

当client变多,ZK集群变⼤大时,节点都为follower时,更新成 本较⼤大

• 解决方案

ObServer节点:和client交互,存有数据的副本,不参与投票

4、角色

Zookeeper分布式集群Zookeeper分布式集群

5、ZooKeeper承诺

5.1、顺序性

client的update请求都会根据他发出的顺序被顺序的处理

5.2、原子性

一个update操作要么成功要么失败,没有其他可能的结果

5.3、强一致性

client无论连接到那个server,展⽰示给它的都是同⼀一个视图

5.4、 可靠性

update一旦成功,就被持久化了,除⾮非另⼀一个update请求更 新了当前值

5.5、实时性

对于每⼀一个client,它的系统视图都是最新的

二、准备工作

1、系统环境

主机名

系统

服务版本

IP

master

CentOS7.4

3.4.12

192.168.56.129

slave1

CentOS7.4

3.4.12

192.168.56.130

slave2

CentOS7.4

3.4.12

192.168.56.131

2、暂时关闭防火墙和selinux

3、软件下载

下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/

Zookeeper分布式集群

4、Java环境

Zookeeper分布式集群Zookeeper分布式集群

三、服务搭建

1、解压三个节点的文件

[root@master ~]# cd /home/

[root@master home]# tar -zxvf zookeeper-3.4.12.tar.gz

[root@master home]# ln -s zookeeper-3.4.12 zookeeper

备注:三个节点相同操作

2、在conf目录下创建zoo.cfg文件,三个节点配置相同,如下

[root@master ~]# cd /home/zookeeper/conf/

[root@master conf]# cp zoo_sample.cfg zoo.cfg

[root@master conf]# vim zoo.cfg

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/var/lib/zookeeper

clientPort=2181

maxClientCnxns=50

server.1=192.168.56.129:2888:3888

server.2=192.168.56.130:2888:3888

server.3=192.168.56.131:2888:3888

3、创建文件/var/lib/zookeeper/myid,3个节点的 内容分别为1、2、3

[root@master conf]# mkdir -p /var/lib/zookeeper

[root@master conf]# cd /var/lib/zookeeper/

[root@master zookeeper]# vim myid

Zookeeper分布式集群Zookeeper分布式集群

4、启动三个节点

[root@master zookeeper]# bin/zkServer.sh start

Zookeeper分布式集群Zookeeper分布式集群

[root@master zookeeper]# jps

Zookeeper分布式集群Zookeeper分布式集群

[root@master zookeeper]# bin/zkServer.sh status

Zookeeper分布式集群Zookeeper分布式集群

5、测试

5.1、在zookeeper中任意一个节点,执行指令zkCli.sh

[root@master zookeeper]# ./bin/zkCli.sh

Zookeeper分布式集群Zookeeper分布式集群

5.2、输入:help    #帮助信息

Zookeeper分布式集群Zookeeper分布式集群

ls  /   查找根目录

create /test abc   创建节点并赋值

get /test   获取指定节点的值

set /test cb  设置已存在节点的值

rmr /test  递归删除节点

delete /test/test01  删除不存在子节点的节点

5.3、相关操作命令

新建操作

Zookeeper分布式集群Zookeeper分布式集群

删除操作

Zookeeper分布式集群Zookeeper分布式集群

5.4、查看工具

在Eclipse中查看Zookeeper集群节点

也可以使用ZooInspector查看

这里使用ZooInspector工具进行查看

下载地址:https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip

解压,进入目录ZooInspector\build,双击运行zookeeper-dev-ZooInspector.jar;

备注:前提是Windows环境安装了Java

Zookeeper分布式集群Zookeeper分布式集群

4.5、点击左上角连接按钮,输入zk服务地址:ip:2181

Zookeeper分布式集群Zookeeper分布式集群

点击OK,即可查看ZK节点信息

Zookeeper分布式集群Zookeeper分布式集群

6、异常

   6.1、CONNECTION_LOSS(连接丢失)

        – eg:连接的server down掉

  6.2、 SESSION_EXPIRED(会话失效)

   – 由ZooKeeper集群管理,⾮非client管理

   – ZooKeeper清除和该session有关的信息 – 正常运⾏行的ZK不会出现这种情况


文章题目:Zookeeper分布式集群
标题URL:http://scyanting.com/article/jdhjsc.html