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查看节点内容数据,可以整理出这样一个目录。

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 ls /
《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 ZooKeeper in ArcGIS

ArcGIS GeoEvent Server

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 geoevent配置

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

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

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

ArcGIS Server

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 state为STARTED
《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 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-分布式利器(4)——ArcGIS Server中的ZooKeeper》 zookeeper新机器的

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 内容一致

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 zookeeper配置

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

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 连接稳定

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 第一台掉线后zookeeper配置

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

《ZooKeeper-分布式利器(4)——ArcGIS Server中的ZooKeeper》 100.96down掉

总结

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

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

    原文作者:Xuds
    原文地址: https://www.jianshu.com/p/9aefe505565c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞