ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper

ArcGIS Server和ArcGIS GeoEvent Server在应对分布式环境时,用到了ZooKeeper。

10.5 ZooKeeper in ArcGIS

在10.5版本,ArcGIS Server与 ArcGIS GeoEvent Server使用的是同一个ZooKeeper,位于ArcGIS Server安装目录\framework\runtime\zookeeper。通过zkCli可以连接ArcGIS Server中的ZooKeeper。zkCli -server localhost:2181。

通过ls查看文件目录节点,get查看节点内容数据,可以整理出这样一个目录。

ls /
ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第1张图片
ZooKeeper in ArcGIS

ArcGIS GeoEvent Server

对于ArcGIS GeoEvent Server来说,zookeeper中保存着它的所有配置。

geoevent配置

包括与ArcGIS Server的连接信息、连接器、注册文件夹、GeoEvent定义、GeoEvent服务、地理围栏、流服务等等。其中的配置信息有的是以json数据显示,例如ArcGIS Server的连接信息。有的是以xml显示,例如连接器的相关信息。但无论是何种格式,配置信息都存入了对应的Znode节点的内容中。

ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第2张图片
arcgisServerConnections

ArcGIS GeoEvent Server集群中的多台机器的zookeeper也组成了一个集群,里面的配置信息是一样的,由于和后面Server集群的原理相似,暂不演示。可以说,通过zookeeper集群,实现了GeoEvent Server集群中,各台机器间的配置同步。

ArcGIS Server

在ArcGIS Server单机部署且运行正常时,查看Server下面的state、stopping节点的数据。记录的是机器的状态

state为STARTED
stopping是这台server的ip

现在准备了第二台机器,名叫250winpro.esrichina.com,安装了ArcGIS Server但没有创建站点。

hosts文件如下

192.168.100.96 121winpro.esrichina.com

192.168.100.250  250winpro.esrichina.com

第二台机器加入站点成功后,使用客户端连接新机器的zookeeper。

zookeeper新机器的

发现新机器100.250的zookeeper中的内容和100.96机器一样。

ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第3张图片
内容一致

既然内容一致,那他们是不是同一个zookeeper呢?查看zookeeper配置,一目了然。

ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第4张图片
zookeeper配置

他们同属于同一个zookeeper集群。

现在我停止集群中的100.96机器,模拟ArcGIS Server机器因意外终止。连接到96的zkCli开始内容开始刷新大量无法连接的信息。连接到100.250的zkCli刷了几下,最终稳定住了,如图所示。

ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第5张图片
连接稳定

这时再查看zookeeper配置,发现只剩下了100.250的server。

第一台掉线后zookeeper配置

和Rest 中的现象对应。可以得出结论,ZooKeeper真实反映了集群中各机器的状态。

ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper_第6张图片
100.96down掉

总结

ZooKeeper在分布式环境中最实用的两个案例,就是 1.同步各服务器配置、2.实时更新可用服务器列表。

ArcGIS GeoEvent集群使用ZooKeeper做配置的同步,ArcGIS Server集群使用 zookeeper 同步集群状态、更新获取可用的Server列表,这一点类似于上一篇文章中的实例。可以说是物尽其用了。

你可能感兴趣的:(ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper)