zookeeper是开源的分布式协调服务,由雅虎创建,google开源实现。
zookeeper是一个高性能的分布式数据一致性解决方案,它将复杂的、容易出错的分布式一致性服务封装起来,构成一个高可靠的原语集,并提供一系列简单易用的接口。
集群角色:
leader服务器是整个zookeeper集群工作机制的核心
follwer服务器是zookeeper集群状态的跟随者
observer服务器充当一个观察者的角色
会话
会话是指客户端和zookeeper服务器的连接,也叫session,客户端与服务器建立一个tcp的长连接来维持一个session,客户端能够通过心跳检测与服务器保持有效的会话,也能向zk服务器发送请求并获取响应。
数据节点
目录结构:
/ ——> /NameServer ——> /service1
——> ——> /service2
——> /Apps
——> /Configure
事件监听器
zookeeper允许用户在指定的节点上注册一些watcher,当数据节点发送变化,zookeeper服务器会将变化的通知发送给感兴趣的客户端。
ACL(Access Control List)权限控制
zookeeper采用ACL策略来进行权限控制:
CREATE:创建子节点的权限
READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
DELETE:删除节点数据的权限
ADMIN:设置节点ACL的权限
zookeeper安装:
1.需要先安装jdk环境
2.然后在每个服务器zookeeper/conf目录下复制一份zoo_simple.cfg文件改名为zoo.cfg
3.vim myid
内容为当前服务器在zoo.cfg文件中的server的号数,如server.1
则写入1,myid文件放在配置的dataDir目录下
4.修改zoo.cfg文件,追加服务器地址:
server.1=192.168.0.3:2888:3888
server.2=192.168.0.2:2888:3888
......
第一个端口表示该服务器与集群中的leader交换的信息的端口。
第二个端口为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。
一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样
5.进入/zookeeper/bin目录下启动服务:./zkServer.sh start
zookeeper集群只要有一半的服务器正常启动就能正常工作
四字命令
echo stat | nc 192.168.0.3 2181
显示指定zookeeper服务的状态
echo conf | nc 192.168.0.3 2181
zookeeper服务器运行时的基本配置信息
echo cons | nc 192.168.0.3 2181
zookeeper服务器上所有客户端连接的详细信息
echo dump | nc 192.168.0.3 2181
输出当前集群的所有会话信息,包括会话id和每个会话创建的临时节点
echo envi | nc 192.168.0.3 2181
zookeper所在服务器运行时的环境信息
echo ruok | nc 192.168.0.3 2181
当前服务器是否正在运行
echo srvr | nc 192.168.0.3 2181
当前服务器的自身信息
echo srst | nc 192.168.0.3 2181
重置所有服务器统计信息
echo wchs | nc 192.168.0.3 2181
当前服务器管理的watch的概要信息
echo wchc | nc 192.168.0.3 2181
当前服务器管理的watch的详细信息,以会话为单位
echo wchp | nc 192.168.0.3 2181
当前服务器管理的watch详细信息,以节点路径为单位
echo mntr | nc 192.168.0.3 2181
用于输出比stat命令更详细的统计信息