在WebSphere Application Server 6.1中,SIP基础架构是多层结构(见图3),由SIP容器(SIP Container), SIP代理服务器(SIP Proxy)和负载均衡器(Load Balancer,后面我们称之为IP Sprayer)组成。
图3:WebSphere Application Server 6.1环境下的SIP集群应用架构

SIP容器是Web容器的扩展。除了Web应用,WAS 6.1还能部署和运行SIP应用,甚至可以部署和运行同时包含Web应用和SIP应用的聚合应用(Converged Application)。
SIP代理服务器处理会话亲和,负载均衡和故障恢复。在WAS 6.1中,代理服务器不仅支持HTTP协议,还支持SIP协议。
IP Sprayer提供高可用性。如果有多个代理服务器,前端应该设置一个负载均衡器,负责分派消息给各个SIP代理服务器。SIP代理服务器是无状态的,也叫Stateless SIP Proxy Server,简称SLSP。因此IP Sprayer可以无代价地随时改变目标。
SIP容器和SIP代理服务器是WebSphere Application Server 6.1提供的两个最核心的SIP组件,下面将做详细介绍。
SIP代理服务器
WebSphere Application Server 6.1的代理服务器有以下特点:
不仅支持HTTP协议,还支持SIP协议。
提供应用级别的会话故障恢复,而不用考虑协议层。
屏蔽和保护后台SIP容器组成的集群。
处理会话亲和。
代理服务器过滤层的API扩展了代理服务器的基本功能。
支持故障恢复和负载均衡。
可为每个代理服务器定义集群路由规则,规定消息如何被路由到各个后台集群上去。
允许其它产品对其进行扩展,比如:WebSphere XD能够扩展对SIP的支持,提供更好的服务质量(Quality of Services, QoS)。
WAS 6.1中,如果选择支持SIP协议,生成的代理服务器就可以叫做SIP代理服务器。单个SIP代理服务器可以作为多个SIP集群的前端,记住,即使在不同的节点上,它也必须和这些集群在同一个单元(cell)中。如果某个单元中部署了多个SIP代理服务器,其前端必须用负载均衡器(即IP Sprayer)。
我们可以为每个SIP代理服务器创建路由规格。但需要注意的是,WAS 6.1目前不支持为SIP代理服务器设置过滤条件(见图4),只能简单地设置路由规则(例如:直接选择某个集群)。将来的版本中,我们还可以通过设置路由规则的定制属性和过滤条件,支持更复杂的路由规则。一般情况下,最好为每个SIP代理服务器配置缺省集群。这样,当到达SIP代理服务器的消息不符合所有路由规则时,就将其发送到缺省集群上去。
图4:设置SIP代理服务器的路由规则

部署聚合应用时,代理服务器必须同时支持HTTP和SIP,我们将这种服务器叫做聚合代理服务器(Converged Proxy Server)。
虽然SIP和HTTP代理服务器有许多相似之处,但还有几点重要的区别,包括:
SIP请求可以被双向传送,但是HTTP请求只能通过代理服务器从客户端发往服务器端。
SIP代理服务器不但能处理入站(inbound)的客户连接,也能发送出站(outbound)连接。HTTP代理服务器只能处理入站(inbound)的客户连接。
SIP协议(像SMTP和其他协议一样)不支持cookie,但HTTP支持cookie。SIP协议中包含会话状态,而HTTP用cookie维护会话状态。
SIP代理服务器能使用的传输协议除了TCP和SSL,还有UDP,而HTTP代理服务器不能将UDP作为传输协议。
我们要特别注意,SIP代理服务器应被部署到隔离区(Demilitarized Zone, DMZ),通过尽可能地隔离SIP代理服务器和后台SIP容器来保护SIP容器。