ZooKeeper-分布式利器(1)——部署与运行

 ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ArcGIS Server在底层使用到了ZooKeeper,所以有必要研究一下它独特的机制。

单节点部署

ZooKeeper的部署是非常简单的,下载解压后,可以得到这样的目录。
tu1.png

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服务器。
tu2.png

启动ZooKeeper命令

3.执行bin/zkCli 即可打开一个客户端连接ZooKeeper服务器进行操作。
tu2.5_.png

启动Cli命令
 
集群部署

集群模式是指在多台机器中启动多个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
tu3.png

zkCli客户端启动命令

2.在91上执行 create /c1project c1projecttest 创建一个ZNode,并通过get /c1project 验证是否成功。
tu4.png

zkCli创建节点

3.在92 93上分别执行get /c1project ,查找此节点下的数据。
tu5.png

92查询成功

tu6.png

93查询成功

这表明,跨越三台机器的ZooKeeper集群成功部署搭建。

本篇文章到此结束,后续文章将陆续涉及到ZooKeeper的一些基础概念和 ZooKeeper CLI、ZooKeeper API 以及应用场景示例。

Too be continue......

0 个评论

要回复文章请先登录注册