ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ArcGIS Server在底层使用到了ZooKeeper,所以有必要研究一下它独特的机制。
单节点部署
ZooKeeper的部署是非常简单的,下载解压后,可以得到这样的目录。
如果你的机器有java环境,此目录本身就可以运行。
1.修改配置文件conf/zoo.cfg
tickTime = 2000
dataDir = /tmp/zookeeper/data
dataLogDir = /tmp/zookeeper/logs
clientPort = 2181
以上参数说明:
tickTime: zookeeper中使用的基本时间单位, 毫秒值.
dataDir: 数据目录. 可以是任意目录.
dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置.
clientPort: 监听client连接的端口号.
2.配置完毕,执行bin/zkServer 即可运行一个单节点的ZooKeeper服务器。
3.执行bin/zkCli 即可打开一个客户端连接ZooKeeper服务器进行操作。
集群部署
集群模式是指在多台机器中启动多个ZooKeeper进程,并组成一个集群。
1.将ZooKeeper目录在三个机器上部署,并修改ZooKeeper/conf/zoo.cfg文件为:
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/tmp/zookeeper/data
dataLogDir=/tmp/zookeeper/logs
clientPort=2181
server.0=192.168.100.91:2888:3888
server.1=192.168.100.92:2888:3888
server.2=192.168.100.93:2888:3888
以上新增参数说明:
initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000(毫秒)=10秒.
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口.
2.在dataDir中新建myid文件,写入数字,例如在100.90机器上的/tmp/zookeeper/data/myid写入0,在100.91机器上的/tmp/zookeeper/data/myid写入1,在100.92机器上的/tmp/zookeeper/data/myid写入2
备注:如果是windows系统,可以创建一个文本文档,写上服务器序号并保存,然后删掉扩展名.txt即可。
3.配置完毕以后,分别在91 92 93机器上执行bin/zkServer ,即可启动整个ZooKeeper集群。
Test 这里可以做一个简单的测试,看同步数据能否成功。
1.分别在91 92 93上启动客户端连接到本机节点,zkCli -server localhost:2181
2.在91上执行 create /c1project c1projecttest 创建一个ZNode,并通过get /c1project 验证是否成功。
3.在92 93上分别执行get /c1project ,查找此节点下的数据。
这表明,跨越三台机器的ZooKeeper集群成功部署搭建。
本篇文章到此结束,下篇文章将会涉及到ZooKeeper的基础概念以及应用场景示例。
Too be continue......