Citrix ADC

配置直径负载均衡

Diameter协议是下一代AAA (Authentication, Authorization, and Accounting)信令协议,主要用于笔记本电脑、手机等移动设备。它是一种点对点协议,与大多数其他协议使用的传统客户机-服务器模型相反。但是,在大多数Diameter部署中,客户端发起请求,服务器响应请求。

当交换Diameter消息时,Diameter服务器通常要比Diameter客户端做更多的处理。随着控制平面信令量的增加,Diameter服务器成为一个瓶颈。因此,Diameter消息必须负载均衡到多个服务器。虚拟服务器执行Diameter消息的负载均衡提供了以下好处:

  • Diameter服务器上的负载更轻,这意味着对最终用户的响应时间更快。
  • 服务器运行状况监视和更好的故障转移功能。
  • 在不改变客户端配置的情况下增加服务器,从而获得更好的可伸缩性。
  • 高可用性。
  • SSL-Diameter卸载。

下图显示了Citrix ADC部署中的Diameter系统:

diameter-system

一个Diameter系统有以下组件:

  • 直径端。除基本协议外,还支持Diameter客户端应用程序。直径客户机通常在网络边缘的设备中实现,并为该网络提供访问控制服务。Diameter客户端的典型例子是网络访问服务器(NAS)和移动IP外部代理(FA)。
  • 直径的代理。提供中继、代理、重定向或转换服务。Citrix ADC设备(配置了一个Diameter负载平衡虚拟服务器)扮演一个Diameter代理的角色。
  • 直径服务器。处理特定领域的身份验证、授权和记帐请求。除了基本协议外,Diameter服务器还必须支持Diameter服务器应用程序。

在典型的Diameter拓扑中,当终端用户设备(如移动电话)需要服务时,它会向Diameter客户端发送请求。每个Diameter客户端与Diameter服务器建立一个连接(TCP连接- sctp尚不支持),该连接由Diameter基本协议RFC 6733指定。连接是长期存在的,两个Diameter节点(客户机和服务器)之间的所有消息都通过该连接交换。Citrix ADC使用基于消息的负载均衡。

例子:

移动服务提供商使用Diameter作为其计费系统。当用户使用预付费号码时,Diameter客户端会反复向服务器发送请求,检查可用余额。Diameter协议在客户机和服务器之间建立连接,所有请求都通过该连接进行交换。基于连接的负载平衡是没有意义的,因为只有一个连接。然而,由于连接上有大量的消息,基于消息的负载均衡加快了预付费移动用户的计费过程。

直径负载平衡是如何工作的

DPR (Disconnect Peer Request)表示对等体关闭连接的意图,并说明了关闭连接的原因。对端响应DPA (TCP总是提供成功的DPA)。

  • 当设备从客户端接收到DPR时,它将该DPR广播到所有服务器,并立即向客户端响应DPA。服务器响应dpa,但设备忽略它们。客户机发送一个FIN,设备将其广播给所有服务器。
  • 当设备从服务器接收到DPR时,它将单独用DPA响应该服务器,并且不会从重用池中删除该服务器。当服务器发送FIN时,设备用FIN/ACK进行响应,并从重用池中删除连接。
  • 如果设备从客户端接收到FIN,它将向客户端发送FIN/ACK,广播FIN,并立即从重用池中删除服务器连接。
  • 如果设备从服务器接收到FIN,它将发送FIN/ACK并将其从重用池中删除。此服务器的任何新消息都在新连接上发送。

负载均衡直径流量

当客户端向Citrix ADC设备发送请求时,该设备将解析该请求,并根据持久AVP将其上下文负载平衡到Diameter服务器。设备已经向服务器发布了客户机标识,因此它不添加路由条目,因为服务器希望直接来自客户机的消息。

服务器发起的请求不像客户端请求那样频繁。服务器发起的请求类似于客户端发起的请求,除了:

  • 由于消息是从多个服务器接收的,因此设备通过向每个转发的请求消息添加唯一的逐跳(HbyH)编号来维护事务状态。当消息响应到达时(具有相同的HbyH号),设备将此HbyH号转换为请求到达时服务器上接收到的HbyH号。
  • Citrix ADC设备通过放置其标识来添加路由项,因为客户端将该设备视为中继代理。

注意:如果一个Diameter消息跨越多个包,则设备将这些包累积在一个不完整的报头队列中,并在累积完整消息时将它们转发给服务器。类似地,如果单个包包含多个Diameter消息,设备将拆分包并将消息转发到负载平衡虚拟服务器所确定的服务器。

断开会话

DPR (Disconnect Peer Request)表示对等体关闭连接的意图,并说明了关闭连接的原因。对端响应DPA (TCP总是提供成功的DPA)。

  • 当Citrix ADC设备从客户端接收到DPR时,它将该DPR广播到所有服务器,并立即向客户端响应DPA。服务器响应dpa,但设备忽略它们。客户机发送一个FIN,设备将其广播给所有服务器。
  • 当设备从服务器接收到DPR时,它将单独用DPA响应该服务器,并且不会从重用池中删除该服务器。当服务器发送FIN时,设备用FIN/ACK进行响应,并从重用池中删除连接。
  • 如果设备从客户端接收到FIN,它将向客户端发送FIN/ACK,广播FIN,并立即从重用池中删除服务器连接。
  • 如果设备从服务器接收到FIN,它将发送FIN/ACK并将其从重用池中删除。此服务器的任何新消息都在新连接上发送。

配置直径流量负载分担

要将Citrix ADC设备配置为负载平衡直径流量,必须首先在设备上设置diameter参数,然后添加直径监控器、添加直径服务、将服务绑定到监控器、添加直径负载平衡虚拟服务器,并将服务绑定到虚拟服务器。

通过命令行接口配置直径流量负载分担

配置直径参数。

set ns diameter -identity  -realm  -serverClosePropagation  

例子:

设置mydomain.org - domain org -serverClosePropagation YES 

添加一个Diameter监视器。

add lb monitor  DIAMETER -originHost  -originRealm  

例子:

添加lb monitor DIAMETER - mondiameter -originHost mydomain.org——NeedCopy >

创建Diameter服务。

add service   DIAMETER  

例子:

add service DIAMETER ter_svc0 10.102.82.86 DIAMETER 3868 add service DIAMETER ter_svc1 10.102.82.87 DIAMETER 3868 add service DIAMETER ter_svc2 10.102.82.88 DIAMETER 3868 add service DIAMETER _svc3 10.102.82.89 DIAMETER 3868 

将Diameter服务绑定到Diameter监控器。

绑定服务@ monitorName  

例子:

bind service diameter ter_svc0 -monitorName diameter ter_mon绑定服务直径svc1 -monitorName diameter ter_mon绑定服务直径svc2 -monitorName diameter ter_mon绑定服务直径svc3 -monitorName diameter ter_mon 

使用Diameter持久性添加一个Diameter负载平衡虚拟服务器。

add lb vserver  DIAMETER   -persistenceType DIAMETER -persistAVPno  

例子:

增加lb vserver的DIAMETER值:——NeedCopy >

将Diameter服务绑定到Diameter负载均衡虚拟服务器。

绑定lb vserver   

例子:

Bind lb vserver diameter ter_vs diameter ter_svc1 Bind lb vserver diameter ter_vs diameter ter_svc2 Bind lb vserver diameter ter_vs diameter ter_svc3 

保存配置。

保存ns配置

请注意:还可以通过SSL配置Diameter流量的负载分担SSL_DIAMETER服务类型。

使用配置实用程序为Diameter流量配置负载均衡

  1. 导航到系统>设置>改变直径参数并设置直径参数。
  2. 导航到交通管理>负载平衡>虚拟服务器,并创建一个类型为Diameter的负载均衡虚拟服务器。
  3. 创建一个直径类型的服务。
  4. 创建一个直径类型的监视器。在“特殊参数”中设置源主机和源域。
  5. 将监视器绑定到服务,并将服务绑定到Diameter虚拟服务器。
  6. 在“高级设置”中,单击持久性,指定直径,并输入持久AVP编号。
  7. 点击保存,并单击完成
配置直径负载均衡