您的位置:首页 > 职场人生

细节决定成败1: 负载均衡和应用层面的结合 推荐

2011-11-10 22:17 393 查看
细节决定成败, 做技术的尤其如此,这里有几个负载均衡相关案例和大家分享下

有个客户负载均衡上线的需求如下图;内部基于websphere的3台应用服务器,每个服务器提供3个端口9081,9082,9083做相同应用,前端是负载均衡,用户访问发布的公网IP地址的80端口,做负载均衡分配到后台服务器;由于旁路部署,服务器网关不指向负载均衡器,负载均衡需要配置源地址转换(SNAT)。





基本配置如下

物理接口配置好后,增加后台服务器配置端口

slb server Int_ser1 192.168.128.12

port 9081 tcp

port 9082 tcp

port 9083 tcp

!

slb server Int_ser2 192.168.128.13

port 9081 tcp

port 9082 tcp

port 9083 tcp

!

slb server Int_ser3 192.168.128.18

port 9081 tcp

port 9082 tcp

port 9083 tcp
配置使用的SNAT地址池

ip nat pool snat 192.168.128.203 192.168.128.204 netmask /24

配置服务器组,确定算法

slb service-group Int_group1 tcp

method service-least-connection

member Int_ser1:9081

member Int_ser1:9082

member Int_ser1:9083

member Int_ser2:9081

member Int_ser2:9082

member Int_ser2:9083

member Int_ser3:9081

member Int_ser3:9082

member Int_ser3:9083

配置虚拟服务器(外部客户访问的IP地址)

slb virtual-server Virt_Int xx.xx.126.100

port 80 http

source-nat pool snat

service-group Int_group1

配置结束。

但是在后台应用调通后上线前的测试中,发现无法正常打开界面,显示错误;结果经过一番盘查后,终于在服务器的回报中发现如下情况:

本来用户正常访问是虚拟IP地址 xx.xx.126.100:80, 但是在服务器的回报中却自动添加了对应接口;也就是说 第一次请求都是正常处理的,但是服务器回的内容需要客户端访问虚拟IP地址的9081端口(xx.xx.126.100:9081),而负载均衡设备上针对该端口并没有映射,无法正常转发到后台服务器造成访问失败。





定位后很简单,在负载均衡设备上添加虚拟IP的9081,9082,9083的映射即可

slb virtual-server Virt_Int xx.xx.126.100

port 80 http

source-nat pool snat

service-group Int_group1

port 9081 http

source-nat pool snat

service-group Int_group1

port 9082 http

source-nat pool snat

service-group Int_group1

port 9083 http

source-nat pool snat

service-group Int_group1

这是一个典型的后台应用和负载之间没有完全沟通好的案例,正常情况下后台应用无需再指定特定目标端口(例如9081),但是由于之前沟通准备不充分,导致配置不对称引起问题。

负载均衡设备和应用是紧密联系的,还有很多其他功能都会相关:例如负载均衡可以启用缓存功能,但是应用层面上到底哪些域名,哪些目录可以缓存,是需要和后台应用一起确定的。否则有可能出现用户登录网页后显示出其他用户的内容信息的情况。

在这里以此案例提醒大家,应用和网络不能完全隔离,尤其是和两者都相关的负载均衡或者应用交付的设备上线使用,多沟通交流才可以避免问题。

注:以上案例中为了突出主要内容使用简化后的设备配置。

(J.L.)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息