结合之前R.S撰写的“Radius服务器负载均衡解决方案”的几个要点,本文将针对这几个要点,分别阐述在AX负载均衡设备上的相关配置用例。
1、基于Radius应用层的健康检查
- 通过AX负载均衡设备模拟Radius客户端,向被检查服务器发送Radius认证请求消息,其中可以包含用户名、密码、密钥等信息。根据Radius服务器的应答结果判断该服务器的可用性。配置用例如下:配置一个Radius健康检查方法,输入服务器上存在的一个用户名test及其密码,以及Radius服务器的密钥。
- 将此方法应用到真实服务器对应的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
本文转自 virtualadc 51CTO博客,原文链接:
http://blog.51cto.com/virtualadc/965156