结合之前R.S撰写的“Radius服务器负载均衡解决方案”的几个要点,本文将针对这几个要点,分别阐述在AX负载均衡设备上的相关配置用例。

1、基于Radius应用层的健康检查

  • 通过AX负载均衡设备模拟Radius客户端,向被检查服务器发送Radius认证请求消息,其中可以包含用户名、密码、密钥等信息。根据Radius服务器的应答结果判断该服务器的可用性。配置用例如下:配置一个Radius健康检查方法,输入服务器上存在的一个用户名test及其密码,以及Radius服务器的密钥。

p_w_picpath

  • 将此方法应用到真实服务器对应的1812端口中,AX负载均衡设备就会定期向此端口发送Radius健康检查报文,并根据服务器返回结果判断其可用性。

slb server rs4 10.10.10.4
   port 1812  udp
        health-check radius-hm1
   port 1813  udp

2、基于Radius消息的负载分担

由于Radius每个客户端往往都会发送大量的Radius认证计费数据包,而且通常都使用相同源端口发出,因此为了避免1个Radius客户端的所有请求全部分配到一台服务器上,导致服务器负载不均匀,在AX设备上需要启用Radius应用层虚拟服务端口,即需要开启七层(应用层)负载均衡模式。这样AX设备就可以根据Radius客户端IP+源端口+Radius ID进行负载均衡,使负载更加均衡;同时需要配置UDP协议模板,开启Radius会话的即时消除机制,即当AX设备收到Radius服务器应答并转发后,即可删除该UDP会话。配置相关用例如下:

slb template udp udp-aging
   aging immediate                      ;启用UDP会话的快速失效(消除)机制
   re-select-if-server-down        ;当后台Radius服务器down机时,即刻删除其建立的会话,重新选择其它可用服务器

slb virtual-server vip100 192.168.1.100
   port 1812  radius
      name _192.168.1.100_RADIUS_1812
      service-group sg1812
      template udp udp-aging
   port 1813  radius
      name _192.168.1.100_RADIUS_1813
      service-group sg1813
      template udp udp-aging

3、基于Radius属性的服务器保持

实际应用中,Radius服务器要求基于特定radius属性实现服务器保持功能,使得同一个属性的所有认证计费报文都分配到同一台Radius服务器上。不同的应用场景中,我们可能需要根据不同的Radius属性实现服务器保持功能,因此,利用aFlex自定义脚本功能实现此功能是最灵活的一种方式。

  • 我们以【Radius AVP属性31】“Calling-Station-Id”实现服务器保持为例,aFlex脚本如下:大致意思是当AX设备接收到客户端Radius数据报文时,将【Radius AVP属性31】赋予变量”id“,并根据此变量保持1200秒,将此aFlex脚本保存名为”radius-lb“。

when CLIENT_DATA {
  set id [RADIUS::avp 31]
  persist uie { $id any service } 1200             ;any service是指保持到该服务器,而忽略服务器上的具体端口,因此无论是认证还是计费报文都会保持到同一台Radius服务器上
}

  • 将此aFlex脚本应用到虚拟服务器VIP对应的认证和计费应用端口中:

slb virtual-server vip100 192.168.1.100
   port 1812  radius
      name _192.168.1.100_RADIUS_1812
      service-group sg1812
      template udp udp-aging
      aflex radius-lb
   port 1813  radius
      name _192.168.1.100_RADIUS_1813
      service-group sg1813
      template udp udp-aging
      aflex radius-lb

4、Radius服务器的过载保护、速率限制

AX设备通过速率限制保护后台Radius服务器,避免出现Radius认证/计费报文突增的情况下,对后台服务器产生冲击,出现“雪崩效应”,通过限制实现服务器的过载保护。配置用例如下:

  • 配置一个服务器模板,限制服务器最大认证计费(总计)连接速率为50connections/100ms(AX的最小时间颗粒度可以达到100ms级,比以秒为最小单位更精确);

slb template server rs-template
   conn-rate-limit 50 per 100ms

  • 将此服务器模板应用到对应的Radius服务器中:

slb server s90 172.16.31.90
   template server rs-template
   port 1812  udp
   port 1813  udp

 

以上这几个要点把握好,基本就可以完成部署一个Radius服务器负载均衡的解决方案。

 

S.G