某局点使用我司的L5000负载均衡设备做基于URL的服务器负载均衡,现场组网拓扑如下图所示:
组网及说明:
现场内网区域使用一台我司的F1000系列防火墙作为出口设备,然后在核心设备侧旁挂一台LB设备用来实现对外部的流量进行服务器负载。现场服务器和LB都在同一网段,网关都为核心交换机上的interface vlan 10接口。现场需要将同样都是访问到LB的虚服务地址192.168.104.127,端口为8080的流量,根据不同的请求URL的内容,分别将流量负载到提供不同URL页面的server 1和 server 2两台服务器上。
现场按照配置指导配置完成后,使用外网的终端进行测试,发现始终无法打开内部服务器的页面:
(1)根据现场情况,网页打不开主要有两个可能的原因,第一:内网服务器本身提供的服务异常,第二,负载均衡设备流量处理异常。为了确认下具体是什么原因导致的该情况,我们首先让现场使用终端接在内网,直接访问内网服务器测试,后续经过现场人员从测试,发现内网服务器能够正常提供服务。所以问题基本能确定为流量负载出了问题。
(2)为了确认LB上流量处理究竟出了什么问题,我们在LB和核心交换机上做抓包,发现访问虚服务的流量能正常上到LB上,LB也能够将负载后的流量目的地址改为实服务器发出,但是在发出的数据包中,我们发现源地址依旧为实际访问终端的地址,这就会导致一个问题,就是LB将URL请求直接发给了对应的服务器,在服务器回包的时候,会根据收包的源地址,将该源地址作为回包目的地址直接回给终端,但是终端最初并不是直接访问的该实服务器地址,所以无法识别该流量,导致页面响应异常。这种情况出现时通常需要将报文的源地址转化为LB设备上的地址,以保证回程流量能正常回到LB上。对于这种情况,在我司LB上通常通过配置SNAT的方式的进行处理。
#
loadbalance snat-pool snat
ip range start 192.168.104.127 end 192.168.104.127
#
server-farm sf1
predictor hash address source
success-criteria at-least 1
snat-pool snat
#
server-farm sf2
predictor hash address source
success-criteria at-least 1
snat-pool snat
#
配置SNAT后,后续页面能正常打开了。
(3)页面能正常打开后,现场又出现了新的问题,即无论访问哪个URL,打开的都是同一个服务器提供的URL页面。查看LB上的流量情况,和现场测试情况一致。
查看现场配置的负载均衡策略如下:
#
loadbalance class ll1 type http match-any
match 2 header fzceshi value fzceshi
#
loadbalance class ll2 type http match-any
match 1 header fzceshi1 value fzceshi1
#
loadbalance action dz1 type http
server-farm sf1 sticky COOKIE1
#
loadbalance action dz2 type http
server-farm sf2 sticky COOKIE1
#
loadbalance policy lb1 type http
class ll1 action dz1
class ll2 action dz2
default-class action dz2
#
同时现场测试发现,LB策略lb1中的缺省动作指定为哪个服务器,流量就会缺省转发到对应的服务器器,看现象怀疑应该是定义的class类匹配失败导致的该情况。后续让现场反馈内网打开页面的显示情况:
发现实际打开页面的URL头部为***.***以及***.***。后续现场将class类配置修改为如下后正常:
loadbalance class ll1 type http match-any
match 1 header host value fzceshi.sdykt
#
loadbalance class ll2 type http match-any
match 1 header host value fzceshi1.sdykt
(1)对于页面无法打开的情况,需要配置在LB上配置SNAT,将LB上发给服务器的报文源地址改为LB上的地址,以保证回包能够经过LB。
(2)对于流量负载不成功的情况,修改做流量匹配的类中,配置的头部参数信息,头部参数需要写完整的域名实体信息进行匹配(不带www)。
LB设备负载均衡相关完整配置如下:
nqa template icmp t1
#
sticky-group COOKIE1 type http-COOKIE
COOKIE insert name COOKIE1
#
parameter-profile cs1 type http
rebalance per-request
#
loadbalance snat-pool snat
ip range start 192.168.104.127 end 192.168.104.127
#
server-farm sf1
predictor hash address source
snat-pool snat
probe t1
success-criteria at-least 1
#
server-farm sf2
predictor hash address source
snat-pool snat
probe t1
success-criteria at-least 1
#
loadbalance class ll1 type http match-any
match 1 header host value fzceshi.sdykt
#
loadbalance class ll2 type http match-any
match 1 header host value fzceshi1.sdykt
#
loadbalance action dz1 type http
server-farm sf1 sticky COOKIE1
#
loadbalance action dz2 type http
server-farm sf2 sticky COOKIE1
#
loadbalance policy lb1 type http
class ll1 action dz1
class ll2 action dz2
default-class action dz1
#
real-server 192.168.104.162
ip address 192.168.104.162
port 5000
server-farm sf1
success-criteria at-least 1
#
real-server 192.168.104.97
ip address 192.168.104.97
port 4000
server-farm sf2
success-criteria at-least 1
#
virtual-server 虚服务器 type http
port 8080
virtual ip address 192.168.104.127
parameter http cs1
lb-policy lb1
service enable
#
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作