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 in ArcGISArcGIS GeoEvent Server
对于ArcGIS GeoEvent Server来说,zookeeper中保存着它的所有配置。
geoevent配置包括与ArcGIS Server的连接信息、连接器、注册文件夹、GeoEvent定义、GeoEvent服务、地理围栏、流服务等等。其中的配置信息有的是以json数据显示,例如ArcGIS Server的连接信息。有的是以xml显示,例如连接器的相关信息。但无论是何种格式,配置信息都存入了对应的Znode节点的内容中。
arcgisServerConnectionsArcGIS 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呢?查看zookeeper配置,一目了然。
zookeeper配置他们同属于同一个zookeeper集群。
现在我停止集群中的100.96机器,模拟ArcGIS Server机器因意外终止。连接到96的zkCli开始内容开始刷新大量无法连接的信息。连接到100.250的zkCli刷了几下,最终稳定住了,如图所示。
连接稳定这时再查看zookeeper配置,发现只剩下了100.250的server。
第一台掉线后zookeeper配置和Rest 中的现象对应。可以得出结论,ZooKeeper真实反映了集群中各机器的状态。
100.96down掉总结
ZooKeeper在分布式环境中最实用的两个案例,就是 1.同步各服务器配置、2.实时更新可用服务器列表。
ArcGIS GeoEvent集群使用ZooKeeper做配置的同步,ArcGIS Server集群使用 zookeeper 同步集群状态、更新获取可用的Server列表,这一点类似于上一篇文章中的实例。可以说是物尽其用了。
网友评论