zookeeper安装

转载自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
              http://blog.youkuaiyun.com/luyee2010/article/details/8206113
              http://cailin.iteye.com/blog/2014486/

       ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。

ZooKeeper的工作原理

       Zookeeper的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。
       为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

伪集群的方式安装和配置详解

       Zookeeper的配置文件在conf目录下,这个目录下有zoo_sample.cfg和 log4j.properties,需要做的就是将zoo_sample.cfg改名为zoo.cfg,因为Zookeeper在启动时会找这个文件作为默认配置文件。
       1. 将zoo_sample.cfg 拷贝3分 zoo1.cfg,zoo2.cfg,zoo3.cfg (windows中直接用zkServer.cmd start xx.cfg貌似不成功,需要用zkServer.cmd,因此我是用了三份zookeeper-3.4.6)
# Basic Configuration
tickTime=2000
clientPort=2282
dataDir=/data1/zero/workspace/zookeeper/2282/data
dataLogDir=/data1/zero/workspace/zookeeper/2282/data-logs

# Cluster Options
initLimit=5
syncLimit=2

server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
       配置文件中各个配置项的意义:
       tickTime:这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,zookeeper中使用的基本时间单位,单位毫秒。
       clientPort:客户端连接Zookeeper服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
       dataDir:保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
       dataLogDir:  保存日志文件的目录, 如果没有设置该参数, 将使用dataDir。
       initLimit:集群中的follower与leader之间初始连接时能容忍的最多心跳数(tickTime的数量)。该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s。当超过5个tickTime时间后,表明连接失败。
       syncLimit:标识Leader与Follower之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
       server.A=B:C:D: (server.服务器编号=服务器地址:LF通信端口:选举端口),A是一个数字,表示这个是第几号服务器;B是这个服务器的ip地址;C表示的是这个服务器与集群中的Leader服务器交换信息的端口;D表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

       2. 除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid,这个文件在 dataDir目录下,这个文件里面就有一个数据就是A的值,Zookeeper 启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个server。

ZooKeeper命令

       在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作
       启动ZK服务:         sh bin/zkServer.sh start  (也可以zkServer.sh start myzoo.cfg 指定配置文件
       查看ZK服务状态:  sh bin/zkServer.sh status 
       停止ZK服务:         sh bin/zkServer.sh stop 
       重启ZK服务:         sh bin/zkServer.sh restart 
       日志清理:           sh bin/zkCleanup.sh -n 20 #只保留最新的20个日志文件

       使用 zkCli.sh -server 127.0.0.1:2181 连接到ZooKeeper服务,连接成功后,系统会输出 ZooKeeper 的相关环境以及配置信息。
       1. 显示根目录、文件: ls / 或 ls2 /
       2. 创建文件,并设置初始内容: create /zk "test" 创建一个新的znode节点“ zk ”以及与它关联的字符串
       3. 获取文件内容: get /zk
       4. 修改文件内容: set /zk "zkbak"
       5. 删除文件: delete /zk
       6. 退出客户端: quit
       7. 帮助命令: help

自动清理日志

       从3.4.0开始,zookeeper提供了自动清理snapshot和事务日志的功能,
通过配置autopurge.snapRetainCount和autopurge.purgeInterval这两个参数能够实现定时清理了。
       autopurge.purgeInterval:指定清理频率,单位是小时,默认是0,表示不开启自动清理功能。
       autopurge.snapRetainCount:和上面的参数搭配使用,这个参数指定了需要保留的文件数目。默认是保留3个。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值