在实际工作当中,我们不管是分布式切图任务还是GIS服务集群支持,如果我们采用普通集群方式,我们需要往参与集群的所有子节点依次进行服务发布,如果集群节点有2个、4个还可以接受,但是如果是在云环境下,我们可能直接虚拟化出十几个甚至几十个集群子节点,那么如果还是用普通集群方式,对用户来说简直是一个厄运。
其实在很多情况下,用户只是希望原来有一台机器干活,现在我希望能够有4台或者更多机器干活,至于这4台机器里面包含什么,我不需要管,我也不想管(我无需打开每一个iserver集群的manager来查看信息),那么SuperMap的受控集群完全可以满足用户的需求,这也是专门适合于云环境的集群方式。
SuperMap iServer 支持子节点以受控的方式加入集群。这种集群配置方式简单快速,适合于子节点空闲的情况,子节点本身不需要对外提供服务而可以接受父节点的控制。子节点一旦开启了受控集群,就要受到父节点的完全控制,其自身原有的服务实例和服务管理器都将被禁用,父节点的服务实例和数据将同步到子节点。其中,服务组件集合对应的服务实例、空间处理服务将被过滤不同步到子节点。
子节点作为受控模式的集群成员,仅用于处理父节点转发的请求。
如上图所示,在一个集群体系中,可以同时存在受控的子节点(标识2)和非受控子节点(标识3)。子节点以受控方式加入集群的配置方法为:
子节点开启受控集群后,父节点会自动将服务和相应的数据同步到子节点上,这样子节点就具有与父节点相同的服务,父节点就能把客户端请求转发给子节点处理。
SuperMap iServer 支持子节点以受控的方式加入集群。在子节点的系统配置文件(iserver-system.xml)中,可以通过<controllable>节点来配置受控集群。
节点名称 |
说明 |
<controllable> | 该节点是配置 iServer 以受控方式启动的主节点。通过其子节点的配置可以设置是否以受控方式启动,受哪一个集群父节点的控制等。 |
<address> | 受控启动时受哪个集群服务器(父节点)的控制。 |
<enabled> | 是否以受控方式启动服务。 |
<token> | 父节点开启了安全控制后设置的安全 Token。 |
<isTileWorker> | 是否参与分布式切图。为true时,受控集群的节点可以参与分布式切图。 |
例如:
<controllable>
<address>http://clusterservice:8090/iserver/services/cluster</address>
<enabled>true</enabled>
<token>-71 90 -24 -17 -115 80 -56 -17</token>
<isTileWorker>true</isTieWorker>
</controllable>
================================================================
以作者测试的云环境为例
主控集群节点:192.168.12.83
受控集群子节点:192.168.12.79-99
那么只需编辑受控集群子节点的配置文件
<controllable>
<address>http://192.168.12.83:8090/iserver/services/cluster</address>
<enabled>true</enabled>
<token></token>
<isTileWorker>true</isTieWorker>
</controllable>
那么对于云环境,只需要创建两个镜像模板,一个主控模板和一个受控模板即可。
打开主控集群节点的manager,稍等一段时间,所有的受控节点会自动查找主控节点IP地址
发布一个地图服务,如果发布的服务的数据源为文件数据库(UDB),那么,所有的数据都会同步到受控节点服务器中。因为用户无法打开受控节点的manager,但是可以查看任意受控节点的实例数。
有了这种方式,iServer会自动进行管理,用户只需要关注主控节点的相关信息即可,所以该方式也是云环境下最适合的集群架构方式。