设为首页 收藏本站
查看: 1159|回复: 0

[经验分享] 分布式协调服务Zookeeper

[复制链接]

尚未签到

发表于 2017-6-21 21:16:00 | 显示全部楼层 |阅读模式
  ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  zookeeper数据结构
DSC0000.png

  其中每个树节点被称为znode,每个znode类似一个文件,包含文件元信息(meta data)和数据。
  有两种类型的znode:
  Regular: 该类型znode只能由client端显式创建或删除
  Ephemeral: client端可创建或删除该类型znode;当session终止时,ZK亦会删除该类型znode
  znode创建时还可以被打上sequential标志,被打上该标志的znode,将自行加上自增的数字后缀
  znode
  (1)Watches 客户端可以在节点上设置watch(我们称之为监视器)。当节点状态发生改变时(数据的增、删、改)将会触发watch所对应的操作。当watch被触发时,ZooKeeper将会向客户端发送且仅发送一条通知,因为watch只能被触发一次。
  (2)数据访问 ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
  (3)节点类型 ZooKeeper中的节点有两种,分别为临时节点和永久节点。节点的类型在创建时即被确定,并且不能改变。 ZooKeeper的临时节点:该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然可以也可以手动删除。另外,需要注意是,ZooKeeper的临时节点不允许拥有子节点。 ZooKeeper的永久节点:该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。
  (4)顺序节点(唯一性的保证) 当创建Znode的时候,用户可以请求在ZooKeeper的路径结尾添加一个递增的计数。这个计数对于此节点的父节点来说是唯一的,它的格式为“%10d”(10位数字,没有数值的数位用0补充,例如“0000000001”)。当计数值大于232-1时,计数器将溢出。 org.apache.zookeeper.CreateMode中定义了四种节点类型,分别对应: PERSISTENT:永久节点 EPHEMERAL:临时节点 PERSISTENT_SEQUENTIAL:永久节点、序列化 EPHEMERAL_SEQUENTIAL:临时节点、序列化
  zookeeper集群搭建
  1、下载zookeeper-3.4.8.tar.gz包(使用tar命令解压)
  2、mv zookeeper-3.4.8  /usr/local/cluster/zookeeper3.4.8(剪切到usr下)
  3、conf文件夹下 cp zoo_sample.cfg  zoo.cfg(复制一份)
  4、修改zoo.cfg中内容(集群)
  dataDir=/usr/local/cluster/zookeeper3.4.8/data(手动mkdir,日志、快照存放处)
  server.1=192.168.111.221:2888:3888   
  server.2=192.168.111.158:2888:3888
  server.3=192.168.111.152:2888:3888
  server后的数字(1/2/3)是pid
  5、data目录下新建pid内容为1
  6、使用scp 复制到server2、server3,记得修改pid中的值为2/3
  7、zkServer.sh start 可以启动zookeeper服务;zkServer.sh status查看集群中的角色
  zookeeper集群中的角色
  ZK中有以下角色:
  领导者(leader) 负责进行投票的发起和决议,更新系统状态
  跟随者(follower) 用于接受客户端请求并想客户端返回结果,在选主过程中参与投票
  观察者(observer) 可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度 客户端(client) 请求发起方
  zookeeper配置文件(zoo.cfg)
  1.tickTime:CS通信心跳数 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
  2.initLimit# Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。
  3.syncLimit# 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。
  4.dataDir:数据文件目录 Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
  5.dataLogDir:日志文件目录 Zookeeper保存日志文件的目录。
  6.clientPort:客户端连接端口 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求 7.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口(同步),选举端口) 这个配置项的书写格式比较特殊,规则如下: server.N=YYY:A:B
  zookeeper命令
  1、连接到 ZooKeeper 服务:zkCli.sh –server ip:2181
  2、使用 ls 命令来查看当前 ZooKeeper 中所包含的内容:ls /
  3、创建一个新的 znode ,使用 create /zk Data
  4、查看数据中的节点数据,使用 get  /zk
  5、修改数据中的节点数据,使用 set /zk modifyData
  6、删除节点使用:delete  /zk
  zookeeper集群搭建中遇到的问题
  我使用win10安装vmware搭建的linux集群,碰到vmware安装linux镜像报错(原因:vmware 与hyper-v共存问题,详细解决可度娘)
  测试代码
  代码有需要的加我q:1050797831或者留言提供一下邮箱
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-386559-1-1.html 上篇帖子: OpenStack 简介 下篇帖子: XHTML基础知识
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表