本节列出了八个故障方案,并对两个分别具有会话持久性和不具有会话持久性的部署进行了比较。
具有会话持久性的部署跨负载平衡器具有会话关联。在该部署中,一个群集内有多个实例,在这些实例中打开了某种形式的会话持久性,以便将会话更改写入物理位置不同的系统信息库节点。
不具有会话持久性的部署跨负载平衡器具有会话关联,它具有多个不属于一个群集的实例。
方案描述
最终用户或管理员正在编辑不属于工作流的表单。最终用户已在其上建立会话的实例已关闭。
不具有会话持久性
用户体验:不透明的故障转移。在提交表单时,系统将用户返回到登录页面。
恢复步骤:用户重新输入其用户名和密码。Identity Manager 随后处理该表单并在用户登录之后立即将结果显示在下一页。
具有会话持久性
用户体验:用户无需注销和重新登录,即可提交表单并得到返回的结果。
恢复步骤:不需要用户执行任何操作。
该方案的其他示例
在实例关闭时,最终用户已经登录,而且已经检索为用户或其他系统信息库对象搜索的结果。
在实例关闭时,管理员将要使用管理员界面提交“重置密码”或“编辑用户”请求。
方案描述
最终用户或管理员提交了触发工作流的表单。正针对其执行工作流的实例通常就是存在用户会话的实例,但是在某些预定任务上,它们可能不是同一个。实例在工作流正在进行时关闭。
不具有会话持久性
用户体验:不透明的故障转移。在提交表单时,系统将用户返回到登录页面。正在执行的工作流任务实例应当位于系统信息库中,但是,由于执行节点已关闭,因此工作流状态将为“已终止”。
恢复步骤:必须再次提交工作流,方法是返回到同一表单,重新输入在节点失败之前用来触发工作流的信息。
在某些情况(但并非所有情况)下,提交同样的请求数据可能会起作用。如果在工作流执行期间将其置备给多个资源,而其中的一些资源在发生故障之前已经置备,则在用户重新提交工作流时将必须考虑“已经置备的”资源。请注意,已终止的工作流仍停留在系统信息库中,直到 resultLimit 在 TaskInstance 对象上过期为止。
具有会话持久性
用户体验:不透明的故障转移。不会将用户注销,因为用户的会话将得以保持并在新实例中重新建立。但是,在提交表单时可能会因工作流将被终止而导致错误。此故障转移是不透明的,因为需要执行恢复操作。
恢复步骤:与不具有会话持久性的模式相同。用户必须使用相同或经过修改的参数重新提交在先前的工作流中触发的请求。
该方案的其他示例
最终用户只要提交一个用来创建 Identity Manager 帐户的自行注册请求,该实例就关闭了。
管理员只要提交正在进行的“密码重置”请求,该实例就关闭了。
方案描述
此方案包括如下情况:工作流已启动,但是正在等待批准者手动执行操作。
不具有会话持久性
用户体验:故障转移相对于批准者是透明的,但前提是批准者尚未登录。在节点出现故障之后,当批准者登录时,批准者仍能够在其收件箱中看到批准请求,即使该请求是从已经关闭的节点触发也是如此。
恢复步骤:不需要用户执行任何操作。
具有会话持久性
用户体验:与不具有会话持久性的模式相同。
恢复步骤:与不具有会话持久性的模式相同。
该方案的其他示例
工作流处于休眠状态,例如,在员工授权生效或失效日期之前处于休眠状态的手动操作。
管理员提交了一个正在等待批准者登录和批准的用户创建请求。在批准者批准该请求之前,从中发送该请求的节点发生故障。
方案描述
此方案包括如下情况:用户正在编辑一个工作项目,在提交该工作项目之前,用户在其中具有会话的节点关闭。
不具有会话持久性
用户体验:不透明的故障转移。在提交了工作项目编辑表单之后,系统将用户注销并返回到登录页面。
恢复步骤:在重新提交登录凭据时,用户的工作项目被标记为已完成,而且工作流能够从那时继续执行。该工作流应当由新模式拾取并从用户的手动操作被标记为已完成时开始执行。
具有会话持久性
用户体验:在提交了工作项目编辑表单之后,用户看到其提交操作的结果,例如,自定义工作流中的下一个表单(如果有的话)或者指示成功的消息。
恢复步骤:不需要用户执行任何操作。
该方案的其他示例
最终用户正在填写与自定义工作流中的手动操作(例如,请求对特定资源的访问权限)相关联的表单。在用户提交请求之前,用户在其中具有会话的节点已终止。
管理员已经登录 Identity Manager 并且已经打开了要编辑的批准请求。在提交请求之前,管理员在其中具有会话的节点已出现故障。
方案描述
这些方案包括如下情况:在正在进行协调或者正在执行报告时,节点出现故障。
不具有会话持久性
用户体验:预定的任务正在被终止。
恢复步骤:必须重新启动正在进行的预定任务。该任务必须从头开始启动。(该任务将不会从出现故障的时间点重新启动。)这与创建和启动新任务相同。
具有会话持久性
用户体验:与不具有会话持久性的模式相同。
恢复步骤:与不具有会话持久性的模式相同。
该方案的其他示例
Active Sync 适配器配置为在故障节点上运行。
方案描述
这些方案包括如下情况:用户的自定义工作流已经预定了一个日后在特定节点上执行的任务。在到达预定日期之前,预定在其上运行该任务的节点出现故障。
不具有会话持久性
用户体验:故障转移对于确保此任务在其预定时间执行而必须采取的恢复操作是透明的。
恢复步骤:在到达预定的执行时间时,预定任务由任何活动节点拾取。
具有会话持久性
用户体验:与不具有会话持久性的模式相同。
恢复步骤:与不具有会话持久性的模式相同。
该方案的其他示例
在创建用户帐户的过程中,使用延迟任务扫描程序实施如下功能:针对生效日期启用该帐户,或者针对失效日期禁用该帐户。在到达生效日期或失效日期之前,预定在其上运行该任务的节点出现故障。
预定在将来的时间运行报告,或者预定在某个特定时间运行协调操作,但是,在该时间到达之前,预定运行该任务的节点出现故障。
方案描述
这些方案包括如下情况:Identity Manager GUI 不用于启动置备功能。相反,该用户界面由使用 SPML 或其他自定义 Web 服务接口在内部调用 Identity Manager 的应用程序提供。在这里,与通过用户界面进入的用户有关的用户会话借助于调用应用程序来管理。对于 Identity Manager,请求均作为“soapadmin”主体来启动。
在类似的使用案例中,此故障方案包括如下情况:在经由 Identity Manager 端点的请求尚未接收时,目标节点出现故障。
不具有会话持久性
用户体验:透明的故障转移。对于每个 SOAP 请求来说,SOAP 管理员的凭据通过有线通信或者通过 Waveset.properties 设置在 Identity Manager 中传入。只要将要接收此 SOAP 请求的节点在关闭之前尚未收到请求,则无论具有或不具有会话持久性,故障转移都是透明的。
恢复步骤:不需要执行任何操作。SOAP 请求发送到执行它的实时节点。
具有会话持久性
用户体验:与不具有会话持久性的模式相同。
恢复步骤:与不具有会话持久性的模式相同。
方案描述
此方案与方案 7 类似。二者唯一的区别在于,在方案 8 中,当节点出现故障时,工作流正在进行;在方案 7 中,当节点出现故障时,节点尚未收到 SOAP 请求。
不具有会话持久性
用户体验:此方案与方案 2(工作流正在进行)相似。工作流被标记为已终止,用户看到一个因 SOAP 请求产生的错误。
恢复步骤:用户必须使用相似的或经过修改的参数(基于故障出现在工作流中的位置),通过第三方应用程序中的用户界面重新提交表单。
具有会话持久性
用户体验:与不具有会话持久性的模式相同。
恢复步骤:与不具有会话持久性的模式相同。