复制 SIP 会话
如果希望在典型会话启动协议 (SIP) 处理期间进行会话复制并显示对话状态信息,那么可以为 SIP 会话设置复制域。SIP 容器通常使用数据复制服务 (DRS) 来复制所有状态信息。因为 DRS 未提供确认何时完成数据复制的方法,因此唯一可以确定的是状态信息排队等待复制的时间。在本主题内,对数据复制的引用仅意味着数据已排队等待复制。
关于此任务
- 与对话相关联的内部 SIP 容器状态信息。
- 与各种会话对象相关联的应用程序状态信息。
这些类别中的每一个都包括若干不同数据类型,本主题后续部分将描述这些数据类型。每个数据对象都被看作是独立的。因此,对应用程序会话对象的更改会导致复制,但不会导致复制任何内部状态信息。
内部状态信息的复制
- INVITE
- SUBSCRIBE
- REFER
- 创建新的 SIP 对话
- 会话因为超时而到期
- 向 UAC 发送最终响应
- 创建编码 URI
- 处理导致内部对话状态更改的任何消息
应注意的是,在 WebSphere® Application Server V6.1 的 SIP 容器中,不会复制事务状态,仅复制对话状态,这一点很重要。不复制事务状态可减少复制域中所有服务器的负载,但在事务中途发生故障时会导致问题,例如,丢失某些与对话有关的 SIP 消息。
B2BUA 与代理应用程序之间的一个重要差别在于创建和复制的会话对象数目。两种情况下都只会创建一个应用程序会话,但对于 B2BUA,将创建两个会话对象,一个用于入站项,一个用于出站项。对于代理应用程序,只会创建一个会话对象。
应用程序状态信息的复制
- javax.servlet.sip.SipApplicationSession
- javax.servlet.sip.SipSession
- javax.servlet.sip.ServletTimer
- 对 SipSession 或 SipApplicationSession 设置的任何属性
- 创建应用程序会话对象
- 创建 SIP 会话对象
- 创建 SIP 会话计时器
- 通过 setAttribute 或 removeAttribute 修改会话对象
- 使 SIP 会话对象失效
- 会话计时器到期
- 应用程序代码发出一个请求,1 的未来调用的完整性
复制可能是因为应用程序调用 request.getApplicationSession(true) 时以及对生成的应用程序会话对象调用 addTimer() 和/或 addAttribute() 时请求未建立对话而导致的。需要这样做的理由是计时器到期时可以调用侦听器。
SIP 故障转移和复制设置注意事项
需要复制和故障转移的 SIP 集群可能由许多复制域组成,每个域包含一组 SIP 容器。集群中的容器数目没有限制。由于性能原因,每个复制域应仅包含两个容器。
复制域应设置为“整个域”,这意味着状态将复制到复制域中的所有容器。复制方式应为“同时在客户机和服务器上”。
容器的分布式会话需要设置为“内存到内存复制”。需要会话复制的所有应用程序的 web.xml 和 sip.xml 文件中必须包括 <distributable /> 标记。SIP 和 HTTP 将使用相同的复制拓扑
![[z/OS]](../images/ngzos.gif)
- 系统包括至少 2 个控制器,并且每个控制器具有至少 2 个服务方用于故障转移和恢复。
- 总工作负载(包括常规操作调用、故障转移调用和恢复调用)始终不得超过最大调用率。要达到最大每秒调用次数,以下配置设置是必需的:
- 所运行的是 z/OS V1 R10 系统,并且为实现快速 I/O 已启用了高性能 FICON for System z (zHPF)。此系统上还必须运行 DS8000 DASD。
- 在创建日志流时使用的日志流和登台数据集大小定义必须等于或大于 256 兆字节(LS_SIZE(64000),STG_SIZE(64000))。
可以通过以下方法确定最大调用率:在一段时间内逐步增加调用率并监控性能,直到达到可容忍的超时率为止。
- 所有活动调用中传播的数据总量不超过 2 GB。
- 允许 SIP 或 Communications Enabled Applications (CEA) 在 z/OS 上工作之前,所有节点都处于 V7.0.0.7 或更高级别。
- 如果计划将系统用于与 SIP 或 CEA 相关的工作,已将需要数据持久性的其他服务(例如,事务)和补偿都配置为使用 HFS 文件记录。在将系统配置为用于 SIP 或 CEA 相关工作后,需要数据持久性的其他服务将无法使用日志流。
![[z/OS]](../images/ngzos.gif)
- 集群内的所有控制器同时失败。 在此情况下,执行恢复所需的某些数据将由于多个并发故障而丢失。
- 在恢复过程期间发生了故障。在此情况下,与失败会话相关联的日志流将包含不完整的数据。
- 每个成员都会将所有状态数据复制到其复制域中的每个对等项。
- 在理想情况下,每个复制域都应包含两个服务器。
- 发生故障时,核心组协调程序会通知其余已复制会话的核心组成员激活。然后,这些已复制的会话将变为它们的活动会话的一部分。
请完成下列步骤以设置 SIP 会话的复制域。
过程
- 在管理控制台中,单击
- 单击 ,然后选择 。
- 在“容器设置”部分中,单击 。
- 在“其他属性”部分中,单击 ,然后单击 。
- 将 设置为 。
- 保存更改。
结果
对 SIP 会话启用了内存到内存复制。