ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步以及提供组服务。node
1.大部分分布式应用须要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等) 2.提供通用的分布式锁服务,用以协调分布式应用服务器
1.统一命名服务 2.配置管理 3.集群管理 4.共享锁 5.队列管理app
1.上传zk安装包分布式
2.解压 tar -xvzf zookeeper-3.4.10.tar.gzspa
3.配置(先在一台节点上配置)
3.1添加一个zoo.cfg配置文件
$ZOOKEEPER/conf
mv zoo_sample.cfg zoo.cfg
3.2修改配置文件(zoo.cfg)
dataDir=/apps/zookeeper-3.4.10/data
server.1=172.0.0.1:2888:3888
server.2=172.0.0.2:2888:3888
server.3=172.0.0.3:2888:3888
3.3在(dataDir=/apps/zookeeper-3.4.10/data)建立一个myid文件,里面内容是server.N中的N(server.2里面内容为2,以此类推)
echo 1 > myid
3.4将配置好的zk拷贝到其余节点
scp -r /apps/zookeeper-3.4.10/ 172.0.0.2:/apps/
scp -r /apps/zookeeper-3.4.10/ 172.0.0.3:/apps/
3.5注意:在其余节点上必定要修改myid的内容
在service02应该讲myid的内容改成2 (echo 2 > myid)
在service03应该讲myid的内容改成3 (echo 3 > myid)
4.启动集群
分别启动zk 进入$ZOOKEEPER/bin/
./zkServer.sh start
5.检查是否运行正常
./zkServer.sh status日志
zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,须要将其修改成zoo.cfg。其中各配置项的含义,解释以下:server
1.tickTime:CS通讯心跳时间 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每一个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。 tickTime=2000队列
2.initLimit:LF初始通讯时限 集群中的follower服务器(F)与leader服务器(L)之间初始链接时能容忍的最多心跳数(tickTime的数量)。 initLimit=5进程
3.syncLimit:LF同步通讯时限 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。 syncLimit=2资源
4.dataDir:数据文件目录 Zookeeper保存数据的目录,默认状况下,Zookeeper将写数据的日志文件也保存在这个目录里。 dataDir=/apps/zookeeper/data
5.clientPort:客户端链接端口 客户端链接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 clientPort=2181
6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通讯端口,选举端口) 这个配置项的书写格式比较特殊,规则以下: server.N=YYY:A:B
server.1=172.0.0.1:2888:3888 server.2=172.0.0.2:2888:3888 server.3=172.0.0.3:2888:3888
说明:端口2888由对等zookeeper服务器使用,用于互相通讯;而端口3888用于投票选举
一、提供一个相似于目录树的结构来管理客户端提交的数据 /aaa/bbb/ccc /yyy/uuu
二、目录树上的每个子节点均可以存储一份数据信息,目录树上的每一个节点都称为一个znode
三、要访问数据时应该指定数据节点znode所在的路径