Zookeeper 介绍及搭建

Zookeeper简介
Zookeeper基本概念
单机搭建
伪集群搭建

Zookeeper简介

ZooKeeper 是一个集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务.

Zookeeper基本概念
  • 集群角色
    通常在分布式系统中,构成一个集群的每台机器都有自己的角色,最典型的就是Master/Slave模式(主从模式),Master负责写操作,Slave负责读服务.
    而在zookeeper中,这个概念被颠覆,没有沿用Master/Slave,而是引用了Leader,Follower,Observer三种角色.zookeeper集群中的所有机器通过选举来确定出一个机器为Leader,除Leader外,其他机器包括Follower和Observer都能提供读服务,唯一的区别是Observer不参与Leader选举过程,不参与写操作的过半写成功策略,如果follower太多时,会影响性能.因此Observer可以在不影响写性能的情况下提升集群的性能.
    在这里插入图片描述

如图:

  1. 当 client 发送了写请求是,follower没有权限必须转发给leader来处理
  2. leader接收到follower发送过来的写请求后,会把该写请求转换成带有各种状态(包含版本号,事务id等等)的事务,会把该事务进行广播(发送proposal投票),所有的follower都会接收到
  3. 所有接收到proposal的follower进行投票(observer不参与投票),结果 执行/不执行,都会响应给leader一个ACK
  4. 发送事务提交请求给follower和observer,所有follower和observer进行事务操作.当完成后,哪个follower接收到的写请求哪个就响应给client

  • 会话(session)
    session指客户端会话,一个客户端连接是指客户端和服务器之间的一个TCP长连接,zookeeper对外的默认接口为2181,客户端启动的时候,会和服务器建立一个TCP链接,从第一次连接建立开始,客户端会话的生命周期就开始了,并通过这个连接客户端能进行心跳检测与服务器保持有效的会话,可以向zookeeper服务器发送请求并接受响应.

  • 数据节点(Znode)
    "节点"分为两类,一个是构成集群的机器,称为机器节点.另一个是数据模型中的数据单元—>Znode,如图/app1/p_1,每个Znode上都会保存自己的数据内容,同时还会保存一系列属性信息.

    • Znode又可分为四种节点类型

      • 1.持久节点:是zookeeper最常见的节点类型,就是子节点被创建后一直存在服务器,直到删除操作才会主动清除
      • 2.持久顺序节点:就是有顺序的持久节点,区别就是会在节点创建的时候,再接点名后面加上一个数字后缀,用来表示顺序
      • 3.临时节点:会被自动清除的节点,生命周期随着客户端会话窗口关闭而结束.与持久性节点不同的是,临时节点不可以创建子节点
      • 4.临时顺序节点:有顺序的临时节点,创建时也会在最后加上数字,用来表示顺序

      在这里插入图片描述


  • ACL
    Zookeeper采用ACL(Access Control List)策略来进行权限控制,定义了五种权限控制
    • CREATE:创建子节点的权限

    • READ:获取节点数据和子节点列表的权限

    • WRITE:更新节点数据的权限

    • DELETE:删除子节点的权限

    • ADMIN:设置节点ACL的权限

      其中CREATE和DELETE是针对子节点的权限控制


  • 版本
    Zookeeper每个Znode上都会存储数据,对于每个Znode,zookeeper都会为其维护一个叫做Stat的数据结构.Stat记录了当前Znode三个数据版本-> 1.version(当前Znode版本),2.cversion(当前Znode子节点版本),3.aversion(当前Znode的ACL版本)

  • Watcher(事件监听器)
    Zookeeper允许用户在指定节点上注解一些watcher用于监听某些事件.并且在一些特定事件触发的时候,zookeeper会将事件通知给那些订阅的客户端.该机制也是zookeeper实现分布式协调服务的重要特征

单机搭建

单机模式:Zookeeper只运行在一台服务器上,适合测试环境
下载Zookeeper3.7.1最新稳定版本(linux)
上传并解压

tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz

进入并创建data文件夹,用于存放zookeeper快照文件和日志信息的

 cd apache-zookeeper-3.7.1-bin
 mkdir data

进入 /conf中,重命名配置文件 zoo_sample.cfgzoo.cfg

cd conf/
mv zoo_sample.cfg zoo.cfg

编辑zoo.cfg,指定快照文件和日志的输出目录

vim zoo.cfg

在这里插入图片描述
启动zookeeper,并查看当前模式

cd ../bin/
./zkServer.sh start
./zkServer.sh status

在这里插入图片描述

单机搭建完成

伪集群搭建

伪集群即模拟集群模式,也就是将不同实例运行在同一台机器上,用端口进行区分,伪集群模式可以为测试提供更高的可行性和实验效率.
注意:3个zookeeper实例端口需区分,还需在dataDir发对应的目录中创建myid文件夹来指定对应的zookeeper实例

  • clientPort端口:
    分别设置为 2181,2182,2183
  • dataDir和dataLogDir:
    两者区别是将数据文件和日志文件分开存放
  • server.X和myid:
    server.X (X对应的是数字),data/myid中的数字.在3个server的myid文件中分别写入了1,2,3,name每个server中的zoo.cfg都要配 server.1, server.2, server.3,之后还要配置两个端口,一个是服务之前通信的端口,另一个是投票选举的端口,不能与server的端口重复,否则报端口冲突.

首先回到 /bin目录,将zookeeper停掉,并查询状态.

./zkServer.sh stop
./zkServer.sh status

在这里插入图片描述
为了结构干净,创建zookeeper文件夹,将其解压后的3个zookeeper放入其中,我采用先rm在解压到新的路径下

rm -rf apache-zookeeper-3.7.1-bin
mkdir zookeeper
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C zookeeper //-C指定解压到某个文件夹

重命名为 apache-zookeeper-3.7.1-bin01并复制两份02和03

mv apache-zookeeper-3.7.1-bin apache-zookeeper-3.7.1-bin01
cp -r apache-zookeeper-3.7.1-bin01 apache-zookeeper-3.7.1-bin02
cp -r apache-zookeeper-3.7.1-bin01 apache-zookeeper-3.7.1-bin03

在这里插入图片描述
分别在3个zookeeper中创建data和data中的logs文件夹

mkdir data
cd data
mkdir logs

修改每个配置文件名称,端口号和存放路径

cd ../conf
mv zoo_sample.cfg zoo.cfg
vim zoo.cfg

在这里插入图片描述
在每个zookeeper的data目录下创建文件myid,内容分别为1,2,3,并在给每个zookeeper的zoo.cfg配置客户端访问端口和集群服务器ip列表

touch myid

分别启动zookeeper服务,并查看状态

  • 注意:需要至少开启两台后,查看状态才正常,仅开启一台时查看状态会报未启动错误
  • Error contacting service. It is probably not running.
./zkServer.sh start
./zkServer.sh status

在这里插入图片描述
已经选举出leader和follower

伪集群搭建完毕

其他章节 -> 跳转

end...
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s_wei_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值