【iPro案例分享】利用iPro实现中间件Tuxedo的负载均衡
  

江威 4437

{{ttag.title}}
1、Tuxedo服务机制
       Tuxedo服务是一种CS应用。其机制类似被动模式的FTP服务。Tuxedo服务会产生两个TCP连接:一个称为WSL连接,是服务固定的监听控制连接;另一个是WSH连接,是真正调用服务的连接。
WSL连接固定监听一个配置好的端口,并且配置好后续WSH连接的端口范围。
例:WSL CLOPT="-A -- -n //1.1.1.1:6789 -p 10000 -P 11000 ..."
在这个WSL连接的配置中,WSL监听在本地网卡IP为1.1.1.1的6789端口上,WSH的端口范围为10000-11000。下图为一个client调用Tuxedo服务的连接图。
        首先,client产生WSL连接,去请求服务。Tuxedo服务器收到请求后,会指定client去连接另一个端口完成真正的服务调用,也就是WSH连接。WSH是有server指定的,而且IP和Port是写在WSL连接的TCP Data中。然后,client去建立WSH连接完成整个请求。
        以上图为例,WSL连接为1.1.1.1:6789;WSH连接为1.1.1.1:10001。
2、Tuxedo负载均衡
        基于Tuxedo的服务机制,采用AD给Tuxedo服务器做负载均衡时,基本有两类方案:
       1) 源地址会话保持方案
       因为WSH连接是由WSL决定。所以,AD要保证WSH连接被分发到正确的服务器上。这正好符合源地址会话保持的机制。因此,使用源地址会话保持可以保证服务的正常。
源地址会话保持是指AD在作负载均衡时是根据访问请求的客户端源地址作为判断关连会话的依据。对来自同一IP地址的所有访问请求在一定时间内都会被保持到一台服务器上去。这个时间可以调整,一般设置为稍大于应用的session timeout时间。这样同一个客户发出的WSL和WSH连接在一定时间内都会被转发到同一台服务器上。
而如果客户发出的前后两个连接间隔大于AD上设置的超时值,AD将会将新来的连接认为是新的会话然后进行负载平衡。
       基于原地址的会话保持实现起来简单,只需要根据数据包三、四层的信息就可以实现,效率也比较高。存在的问题就在于当多个客户是通过代理或地址转换的方式来访问服务器时,由于都分配到同一台服务器上,会导致服务器之间的负载严重失衡。另外一种情况上客户机数量很少,但每个客户机都会产生多个并发访问,对这些必发访问也要求通过负均均衡器分配到多个服器上,这时基于客户端源地址的会话保持方法也会导致负载均衡失效。
优点:配置简单,无需应用服务器作任何修改。
缺点:因为源地址会话保持有可能导致压力不是非常平均。

       2) iPro方案
       如果不使用源地址会话保持,那么需要Tuxedo服务器配置不同的WSH端口范围。AD通过iPro识别WSH端口来正确分发WSH连接。
例如,两台Tuxedo服务器,服务器1的WSH端口范围配置为10000-10499;服务器2的WSH端口范围配置为10500-10999。
这样,在AD上建立两个vs,一个WSL的vs,一个WSH的vs。在WSL的pool中使用Least Connection(Node)算法,可以将WSL连接分发到总连接数(主要是WSH连接)最少的服务器上,从而使服务器压力尽可能平均。
在WSH的vs上使用下面的iPro,可以保证WSH连接的正确分发。
  1. <font face="微软雅黑">event CLIENT_ACCEPTED {
  2.     if  (TCP.localport() >=10000 and TCP.localport() < 10499 ) then
  3.         pool("WSH_1_pool")
  4.     elseif (TCP.localport() >=10500 and TCP.localport() < 11000 ) then
  5.         pool("WSH_2_pool")
  6.     else
  7.         TCP.drop()
  8.     end
  9. }</font>
复制代码

优点:压力平均。
缺点:需要Tuxedo服务器端更改配置配合。
3、修改WSL连接配置
        因为AD在做负载均衡时,需要做IP地址转换,这点类似防火墙。这样就产生一个问题:WSH连接无法正常建立。为什么会这样?
        在第一部分,已经介绍过Tuxedo服务的机制。因为,WSH连接是在WSL连接中Data中直接指定IP和Port给client。这个IP通常的Tuxedo服务器本地IP。这样,client会试图直接去连接服务器的真实IP去建立WSH连接。通常位于AD后的服务器IP都是无法直连的,这样连接自然无法建立。
        所以,需要修改WSL连接配置,让WSL告诉client建立WSH连接的ip是防火墙做NAT后的地址,在本文档中则是AD的VIP。
        修改方案很简单如下:
WSL CLOPT="-A -- -n //1.1.1.1:6789  -H //VIP:VPort  -p 10000 -P 11000 ..."
增加一个-H的参数,则WSL会告诉client应该用什么IP去建立WSH连接。
具体文档,可参考BEA网站上的官方文档,文章ID为2009,关键字为防火墙,Tuxedo。

打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

我的名字叫小屁孩 发表于 2017-9-24 13:36
  

Friday hooray! +11 S豆

顶顶顶顶顶顶顶顶顶顶
发表新帖
热门标签
全部标签>
西北区每日一问
安全效果
高手请过招
【 社区to talk】
每日一问
产品连连看
标准化排查
干货满满
新版本体验
纪元平台
社区新周刊
GIF动图学习
自助服务平台操作指引
技术咨询
功能体验
解决方案
社区帮助指南
秒懂零信任
每周精选
S豆商城资讯
技术盲盒
信服课堂视频
畅聊IT
答题自测
专家问答
技术笔记
技术圆桌
在线直播
MVP
网络基础知识
安装部署配置
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
2023技术争霸赛专题
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
技术晨报
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
云化安全能力

本版达人

新手61940...

本周建议达人

zhao_HN

本周分享达人

ZSFKF

本周提问达人