A10负载均衡设备的配置逻辑与Nginx、LVS有明显区别,ACOS系统把转发能力拆成多个可复用对象,上线前必须先理清真实服务器、服务组、虚拟服务的层级关系。真实服务器定义的是后端IP、端口和健康检查入口,服务组把多台真实服务器组合成一个调度单元,虚拟服务则以VIP形式对外接收业务流量并绑定服务组。三者缺一不可,配置顺序也不能颠倒,否则会出现对象引用失败或虚拟服务无法激活的情况。

实际项目中,大量流量异常并不是设备硬件故障,而是配置对象之间的绑定关系不完整。例如只创建了真实服务器,却忘记在服务组中把成员端口写成与真实服务器一致;或者虚拟服务端口配置成了UDP,后端服务组却按TCP处理。下面按照配置顺序,从网络接口到高可用逐段拆解,把命令行和Web控制台的操作要点放在一起说明。
一、先区分三个核心对象:真实服务器、服务组、虚拟服务
A10 ACOS中的slb server代表一台真实后端服务器,它不只包含IP地址,还包含端口和协议类型。如果后端同时提供80和443两个端口,通常需要分别创建两个真实服务器对象,或者在服务组中为同一IP配置两个不同端口成员。真实服务器本身不直接参与流量调度,它只是被服务组引用的基础单元。
slb service-group服务组承担了调度算法、健康检查绑定和成员管理职责。一个服务组可以包含多台真实服务器成员,成员定义通常写成web01:80这种形式,冒号后面是成员端口。服务组的协议类型必须与真实服务器成员匹配,例如HTTP业务使用TCP协议服务组即可,无需系统解析HTTP内容。
slb virtual-server虚拟服务是客户端直接访问的VIP,它绑定服务组后才会把进入VIP的流量按服务组中的成员列表和算法转发出去。虚拟服务端口可以和服务组相同,也可以不同,比如对外发布8443,内部转发到后端443。理解这三个对象的边界后,后续的NAT、会话保持、SSL卸载都只是挂在对应对象下的属性策略。
二、基础网络配置与真实服务器定义
新设备上线要先把管理口和数据口分开处理。管理口通常用于SSH、HTTPS管理,数据口负责承载业务流量。ACOS中物理接口先加入VLAN,再通过VE虚拟接口配置三层IP,这样做的好处是接口变化时不影响路由和NAT策略。如果数据口配置为access模式,直接绑定VLAN即可;如果是trunk模式,则需要写入tagged参数。
下面这段命令完成了一个典型的内外网基础配置:外网侧VLAN 10绑定物理口1并配置192.168.10.1,同时添加默认路由指向192.168.10.254。
configure terminal vlan 10 untagged ethernet 1 router-interface ve 10 ! interface ve 10 ip address 192.168.10.1 255.255.255.0 ! ip route 0.0.0.0 /0 192.168.10.254 !
真实服务器的创建非常直接,但端口设置要和后端服务监听端口保持一致。假设后端两台Web服务器IP分别为192.168.20.11和192.168.20.12,都监听80端口,可以这样定义:
slb server web01 192.168.20.11 port 80 tcp ! slb server web02 192.168.20.12 port 80 tcp !
如果后端服务器有多个端口需要被调度,不要把全部端口塞进同一个成员定义,建议按照业务单元拆分。例如一台服务器同时提供HTTP和MySQL,可以定义web01-http和web01-mysql两个对象,这样健康检查和会话保持策略可以互不影响。配置NAT地址池时也要提前规划好地址段,避免与现有网络冲突,地址池用于虚拟服务做源地址转换,A10默认不是全透明代理,很多场景下需要显式启用source-nat。
三、服务组与健康检查配置
健康检查是负载均衡能否及时摘除故障节点的关键。A10支持TCP、UDP、HTTP、HTTPS、ICMP等多种检查方式,HTTP检查还可以设置URL路径、期望返回码和接收超时。检查参数中的interval表示探测间隔,timeout是单次探测超时,retry是连续失败多少次后标记为down,这三个值需要协同设置,否则会出现误摘除或故障发现过慢。
以下示例创建了一个HTTP健康检查模板,请求后端/health路径,期望返回码为200,每5秒检查一次,连续失败2次后摘除节点。
health monitor http-web method http interval 5 timeout 3 retry 2 url GET /health expect 200 ! slb service-group web-sg tcp member web01:80 member web02:80 health-check http-web !
服务组创建完成后,建议先用show slb service-group web-sg查看成员状态和健康检查结果,不要直接配虚拟服务。很多问题在这一步就能暴露,例如成员端口写错、健康检查模板未绑定、或者后端防火墙拦截了探测请求。确认成员状态为up后,再做虚拟服务发布,能显著减少排查时间。
四、虚拟服务发布与高级策略
虚拟服务对外公布VIP,客户端访问VIP时由ACOS根据服务组中的调度算法分发。默认算法通常为轮询,如果后端服务器性能不一致,可以更改为最小连接或加权轮询。对于需要保持登录状态的业务,必须配置会话保持,否则同一用户的多个请求可能被分到不同后端,导致登录态丢失。
下面示例创建VIP 192.168.10.100,对外提供80端口服务,绑定web-sg服务组,并启用NAT地址池做源地址转换。如果希望后端拿到客户端真实IP,可以去掉source-nat,但这要求后端服务器网关指向A10,否则回包路由可能不通。
slb virtual-server vip-web 192.168.10.100 port 80 tcp service-group web-sg source-nat pool client-pool !
SSL卸载是A10常用的高级功能,把证书加载到设备上,客户端到A10走HTTPS,A10到后端可以走HTTP,减少后端服务器的加解密压力。配置时需要先导入证书和私钥,再创建SSL模板并绑定到虚拟服务的443端口。模板中可指定TLS版本、加密套件和会话缓存,生产环境建议关闭低版本TLS协议。还需注意,启用SSL卸载后健康检查也要改为HTTPS类型,否则健康检查请求会被后端拒绝。
会话保持策略不要和调度算法冲突。例如使用源IP哈希时,再配置基于Cookie的会话保持,实际效果会受算法影响。通常七层HTTP业务优先使用Cookie保持,四层TCP业务使用源IP保持。配置完成后用show slb virtual-server vip-web检查虚拟服务状态,确认状态为up并且绑定关系正确。
五、高可用与常见问题排查
双机高可用通常采用VRRP-A协议,两台设备通过心跳口同步会话和配置。主设备故障时,备设备接管VIP并继续转发,切换时间一般可以控制在秒级。配置VRRP-A时需要保证两台设备的device-id不同,VRID相同,并且浮动IP与接口IP在同一网段。
vrrp-a vrid 0 device-id 1 set-interface ethernet 2 floating-ip 192.168.10.200 !
日常排错中,最常用的命令是查看对象状态和会话统计:
- show slb server:检查真实服务器健康状态;
- show slb service-group:检查服务组成员和健康检查绑定;
- show slb virtual-server:检查虚拟服务端口、服务组与策略;
- show session:查看当前连接规模与源目地址转换情况。
如果健康检查显示成功但虚拟服务不转发,重点检查虚拟服务端口协议是否与后端服务组一致,以及虚拟服务是否真正绑定了对应服务组。如果做了源地址转换后后端看不到客户端IP,可以在HTTP场景改为使用X-Forwarded-For头传递真实地址,或者采用DSR直接路由模式。对于偶发超时,还要检查NAT地址池是否耗尽、后端服务器是否限制了并发连接数,以及A10与后端之间的MTU是否一致。
配置A10负载均衡的难点不在单条命令,而在对象之间的引用关系和流量路径理解。按真实服务器、服务组、虚拟服务的顺序逐步验证,再叠加健康检查、会话保持和高可用策略,可以避免绝大多数上线故障。