转:应用级集群系统的设计(下)
基于健康度的分发器
在不同类型的业务资源监测器中,都会生成相应的业务资源健康度评估列表。健康度分发器就是以这些评估列表提供的数据为基准点。结合在第一级分发器解 析后得到的符合匹配条件的若干目标资源,根据相关联评估列表,从中筛选出最优的目标资源。健康度分发器在“业务类型与业务资源映射表”的基础上,最终形成 最优目标资源分发路径表,它包括了当前系统中每种“业务类型”对应访问请求的最优分发目标资源。
表 12. 最优目标资源分发表
业务类型 | BRC/BRG 名称 | |
业务类型 - 1 | BRC_1 | BRG_1 |
-- | -- | |
业务类型 - 2 | -- | -- |
-- | -- | |
BRC_3 | BRG_2 | |
业务类型 -3 | BRC_1 | BRG_3 |
-- | -- |
分发器与业务资源监测器的关系
分发器并未实时地向业务资源监测器发送询问请求来得到当前最新的最优目标资源的分布情况,而是作为业务资源监测器的数据监听者,等待更新数据的通知。
- 分发器必須要作为监听方,注册到相关的业务资源监测器当中
- 当业务资源监测器在资源相关数据发生变化时,应立即向分发器发出更新通知。
- 资源正常运行,只是负载发生变化而引发的更新通知
- 资源发生故障,其分布信息发生变化而引发的更新通知
- 分发器获得更新通知后,从业务资源监测器中取出最新的数据,
- 更新“业务类型与业务资源映射表”
- 更新“最优目标资源分发表”
基于内容的分发器与基于健康度的分发器组合成一个负载均衡器,共同完成对客户端访问请求的路由选择,通过这个路由筛选过程,达到了用最优秀的资源服务客户端的目的。
清单 4. 分发器的接口设计
public interface IDistributor extends IListener { public void update ( Object data ); } |
故障转移管理器
任何一个系统都不能百分之一百的保证永远不发生任何故障,故障的发生将导致相关成本的提升,那么对于如何处理和管理故障以减少成本支出就显得尤为重 要。故障管理器通过故障资源监测器可以得到当前所有处理故障状态的业务资源。故障管理器对这些资源完成停止、重启和转移等操作。
前面已经提到了,在集群系统运行时,对所有相关业务资源均受到 BRMF 的监测。当故障管理器接收到业务资源故障通知后,会遵循一个管理原则,即当某业务资源发生后立刻停止被中止,然后试图进行本地重启,如果重启不成功则对资 源进行适当的迁移再运行。遵循这一原则的目的是为了能够保证组件在业务逻辑角度上的完整性和一致性。
从业务资源监测器与故障转移管理器的关系入手,以 BRG 发生故障为例,展开故障转移管理的基本过程:
- 当业务资源容器监测器监测到 RG 资源发生故障时,立即触发资源故障事件
- 业务资源容器监测器向 BRC 发送业务资源注销事件消息,将 BRC 中的这个故障 BRG 注销,停止对该 BRG 资源的监测
- 故障资源监测器将此故障 BRG 信息加入“故障资源分布列表”。
- 向故障转移管理器发送资源故障事件消息,并将此故障 BRG 的管理权移交给故障转移管理器。首先,故障转移管理器对资源进行重启操作,如果重启失败(一般而言,硬件发生故障是导致重启失败的常见原因):
- 首先在系统中检查是否还有某些系统资源因此故障 BRG 而处于被占用状态,如果有则系统强制释放这些资源
- 检查 BRG 中的 BRU 进程是否还有遗留内存,如果有则将其从内存中清除。
- 此时系统中已没有任何与故障 BRG 相关的业务资源存在,可以开始转移工作,根据故障资源转移策略的裁定,在新 BRC 节点上以新 BRC 的名义重新激活先前发生故障的 BRG 资源。此时的 BRG 资源拥有权属于当前这个新的 BRC 节点。
- 当故障转移管理器成功完成故障资源重启或转移工作后,通知业务资源监测该 BRG 资源当前的分布信息,此时业务资源容器监测器重新开始对该 BRG 资源的监测工作。
表 13. 业务资源与故障转移策略配置
BRC 名称 | BRG 名称 | 策略集 |
BR C_1 | BRG_1 | failover_business_A.conf |
BRG_2 | failover_business_A.conf | |
BRG_3 | failover_business_B.conf | |
BRC_2 | BRG_1 | failover_business_A.conf |
BRG_2 | failover_business_D.conf | |
BRC_3 | BRG_1 | failover_business_C.conf |
结束语
在大型的应用级集群服务系统的实施过程当中,设计人员需要考虑相当多的要素:功能、可靠性、可用性和性能等若干方面,本文仅从集群的业务资源设计、 资源监测器、负载均衡器和故障转移管理器四个部分简要的阐述了集群系统的基本设计,抛砖引玉,希望能与大家共同深入探讨集群系统的设计与实施。