ZooKeeper-分布式利器(1)——部署与运行
分享
ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。ArcGIS Server在底层使用到了ZooKeeper,所以有必要研究一下它独特的机制。
单节点部署
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服务器。
启动ZooKeeper命令
3.执行bin/zkCli 即可打开一个客户端连接ZooKeeper服务器进行操作。
启动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
zkCli客户端启动命令
2.在91上执行 create /c1project c1projecttest 创建一个ZNode,并通过get /c1project 验证是否成功。
zkCli创建节点
3.在92 93上分别执行get /c1project ,查找此节点下的数据。
92查询成功
93查询成功
这表明,跨越三台机器的ZooKeeper集群成功部署搭建。
本篇文章到此结束,后续文章将陆续涉及到ZooKeeper的一些基础概念和 ZooKeeper CLI、ZooKeeper API 以及应用场景示例。
Too be continue......
单节点部署
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服务器。
启动ZooKeeper命令
3.执行bin/zkCli 即可打开一个客户端连接ZooKeeper服务器进行操作。
启动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
zkCli客户端启动命令
2.在91上执行 create /c1project c1projecttest 创建一个ZNode,并通过get /c1project 验证是否成功。
zkCli创建节点
3.在92 93上分别执行get /c1project ,查找此节点下的数据。
92查询成功
93查询成功
这表明,跨越三台机器的ZooKeeper集群成功部署搭建。
本篇文章到此结束,后续文章将陆续涉及到ZooKeeper的一些基础概念和 ZooKeeper CLI、ZooKeeper API 以及应用场景示例。
Too be continue......
0 个评论
相关问题
- arcgis10.4 离线部署js api 4.3 版本 无法显示
- 刚部署好的arcgis api4.3,测试时出现左上角的放大缩小样式出现问题?
- arcgis Api for java script 4.4部署离线环境
- 请问ArcGIS API for javaScript4.3 版本怎么在本地部署呢?我按照官网的提示了部署了好几次,但是一直提示以下错误:
- 运行webappbulider中的startup.bat出现错误
- ArcGIS JavaScript API 本地部署的奇怪问题
- js api 离线部署
- 运行create Map Server Cache工具后,未创建任何切片
- arcgis api for javascript 4.4的部署问题
- jsapi 4.x本地部署完 地图控件符号没有加载
- arcgis api for javascript4.X本地部署问题