WebSphere Edge Server 负载均衡功能简介
http://www-01.ibm.com/support/docview.wss?uid=csc148256d65004dc82448256d1000235b57
[标题]
WebSphere Edge Server 负载均衡功能简介
内容提要:
概述 WebSphere Edge Server 负载均衡的功能及原理
正文:
WebSphere Edge Server 在应用系统前端通过强大的高速缓存功能和负载平衡部件来对服务器系统的总体性能进行改善。它适用于见于市场上的任何应用软件服务器。
WebSphere Edge Server 中进行负载均衡的部件也称为网络分发器(eNetwork Dispatcher),它可以对TCP服务器和应用软件进行实时监控和负载平衡。负载平衡部件的一个最大优点就是它使得对访问量很大的系统网站进行平滑扩容和透明的进行故障检测与排除成为可能,而这源于它可以监控网络中每一个单独逻辑服务器的动态网络连接。
WebSphere Edge Server 负载平衡器根据服务器的状态、性能以及运行的应用程序、到达的用户请求数综合判断,新的服务请求被直接送往最合适的服务器。如果检查到了服务器或应用程序出现了问题,用户请求将被送往其它的服务器。负载平衡组件还可用于在多个地点的服务器之间进行负载分配。根据客户定义的客户机/服务器亲缘关系规则和需要,可以扩充用来制订负载平衡决策的动态加权因子。
WebSphere 负载均衡器的核心功能部件是执行器(Executor),它主要根据被负载均衡的服务器的权重值决定如何选择当前最适合的服务器进行负载分发。
服务器的权重值由WebSphere Edge Server的管理器(Manager)来动态设定。Edge Server 管理器根据如下四个因素来设定权值:
1. 被负载均衡的服务器的当前的活动连结数,此值存放在执行器中。
2. 从上一次管理器运行间隔周期开始的服务器接受的新连结数目,此值存放在执行器中。
3. 客户咨询器的反馈值。 Edge Server 提供了对各种服务器应用运行状态进行检查的标准的咨询器。详细的有关咨询器的信息见文后所述。
4. 对服务器的处理能力的动态检查值。由在服务器上运行的度量服务器(Metric Server)检查服务器的 CPU 和主存储器的能力状态,并间歇式报告给 Edge Server 管理器。
在您配置 WebSphere 负载均衡器时,您对 Edge Server 管理器设定上述四种参数的比例关系,Edge Server 管理器根据您设定的情况和各参数动态的输入值来计算服务器权值。
客户咨询器功能:客户咨询器是一个轻量级的应用客户端,它在 Edge Server 中运行,发送真正的客户请求给服务器,返回服务器对真实业务请求的响应速度。比如这一功能可创建一个对WebSphere 应用服务器中的一个 Web 应用的连接,同时返回此Web 应用的响应速度。 使用WebSphere Edge server 6.1 实现负载均衡和对称高可用
http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0704_shaoping/index.html
使用WebSphere Edge server 6.1 实现负载均衡和对称高可用
Edge Load Balancer 配置、使用和性能测试的实践
文档选项
打印本页
将此页作为电子邮件发送
级别: 中级
邵 萍 (shaoping@cn.ibm.com), 高级软件工程师, IBM
库 俊国 (kujunguo@cn.ibm.com), 软件工程师, IBM
2007 年 7 月 20 日
Load Balancer是随Webspere Application server 61 ND版本发行的负载均衡服务器组件,它基于不同的系统性能要求提供了一系列负载均衡方案,它无需特殊的硬件支持,是一个软件实现负载均衡的解决方案。Load balancer通过将客户请求分发到后端集群的多个server,从而提高系统性能。 当Load balancer和web server结合使用的时候,能够使企业站点实现灵活可扩展。在 WAS 61 中,LB提供新的userspace版本,实现了linux平台的内核无关性。 本文在介绍新特性的基础上,用一个客户实例作为demo阐述如何使用LB实现 High Availability 的负载均衡。 同时,本文还会总结在生产环境中LB性能调优的技巧。
引言
WebSphere Edge Server主要有两大组成部分:Load Balancer (以下简记为LB)和 Cache Proxy,前者负责请求的负载均衡,后者为缓存代理。 它们都位于Internet客户端和实际应用服务器之间。在IBM推荐的最佳可扩展系统架构中,LB位于web server之前,提供对Web Server的负载均衡、可扩展和高可用支持。 但是LB的用途不仅限于和 Web Server 结合使用,LB支持 HTTP,FTP,SSL,SMTP,NNTP,IMAP,POP3,Telnet, 和所有其它基于TCP或UDP的请求的负载均衡。 LB能够探测到后端不响应服务器从而在分发请求时绕开问题服务器。 它根据后端服务器(backend server)的运行状况,来动态调节各个backend server的权重,从而将请求合理地分配到这些backend server上去。用户可以使用缺省权重或者在配置时改变权重值。 Edge Load Balancer常应用在高负荷的企业级应用系统上。我们先简单介绍一下Edge Server 61的新特性和发展趋势。 在Edge Server 6.1版本之前,LB使用kernel space代码实现,所以产品与操作系统内核相关。为了实现更好的可移植性,LB正逐步采用user space的实现方式。 在Edge Server 6.1中提供了Linux系统上user space的LB版本。因此,Edge Server61中的LB有两个版本,一个是支持IPV4的传统版本,一个是支持IPv4/IPv6的内核无关版本(仅在Linux上实现了内核无关)。另外,WebSphere Application Server 6.1提供了可以通过ND管理的代理服务器(proxy server)。代理服务器(proxy server)将逐步取代 Cache Proxy 完成代理服务器功能。WebSphere Application Server 6.1中的代理服务器能够完成http,https 和sip请求的缓存代理。它可以在ND控制台生成,配置,起动,停止和删除。很多用户在使用负载均衡服务的时候,要求LB具有高可用性。下面我们将就实例介绍如何配置LB的对称高可用性(Mutual High Availability,以下简记为MHA)。
ND_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher
NETWORK=9.181.86
INTERFACE=en0
NETMASK=0xffffff00
PRIM_HOST_1=9.181.86.144
PRIM_HOST_2=9.181.86.145
if [[ "$1" = $PRIM_HOST_1 ]]; then
date >> $ND_LOGDIR/mutualha.log
print "$PRIM_HOST_1 is Active! Configuring NIC alias(es)...\n"
>> $ND_LOGDIR/mutualha.log
for CLUSTER in 185 187; do
ifconfig lo0 $NETWORK.$CLUSTER -alias
ifconfig $INTERFACE alias $NETWORK.$CLUSTER netmask $NETMASK
done
fi
if [[ "$1" = $PRIM_HOST_2 ]]; then
date >> $ND_LOGDIR/mutualha.log
print "$PRIM_HOST_1 is in Active state for cluster(s) of $PRIM_HOST_2 \n"
>> $ND_LOGDIR/mutualha.log
for CLUSTER in 155 160; do
ifconfig lo0 $NETWORK.$CLUSTER -alias
ifconfig $INTERFACE alias $NETWORK.$CLUSTER netmask $NETMASK
done
fi
echo "\nFinished!"
goActive脚本被调用时,会被传入一个参数,指示该LB要为哪个cluster服务。第一个if段表示该LB要为地址为9.181.86.185的cluster服务,所以它要在自己的网络适配器上配置该cluster的地址及返回地址,同时卸载loopback接口上的地址(如果已经绑定过)。第二个if段表示要为地址为9.181.86.155的cluster服务,例如另一台LB(wasdev05)出现了故障, 此时wastst32上的LB将接管wasdev05上的LB负责的请求,从而该脚本被调用,传入的参数为wasdev05的主机地址。 假如LB机器上有多个网络适配器呢?那该把cluster地址和返回地址配置在哪一个上? 答案是您需要在配置文件中指定NFA地址, 用命令 executor set nfa x.x.x.x,然后cluster地址和返回地址配置在NFA地址所在的适配器上。
清单 3. goStandby脚本示例
ND_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher
NETWORK=9.181.86
INTERFACE=en0
NETMASK=0xffffff00
PRIM_HOST_1=9.181.86.144
PRIM_HOST_2=9.181.86.145
if [[ "$1" = $PRIM_HOST_1 ]]; then
date >> $ND_LOGDIR/mutualha.log
print "$PRIM_HOST_1 is in Standby state for its cluster(s). \n"
>> $ND_LOGDIR/mutualha.log
for CLUSTER in 185 187; do
ifconfig $INTERFACE $NETWORK.$CLUSTER -alias
ifconfig lo0 alias $NETWORK.$CLUSTER netmask 0xffffffff
done
fi
if [[ "$1" = $PRIM_HOST_2 ]]; then
date >> $ND_LOGDIR/mutualha.log
print "$PRIM_HOST_1 is in Standby state for $PRIM_HOST_2 cluster(s). \n"
>> $ND_LOGDIR/mutualha.log
for CLUSTER in 155 160; do
ifconfig $INTERFACE $NETWORK.$CLUSTER -alias
ifconfig lo0 alias $NETWORK.$CLUSTER netmask 0xffffffff
done
fi
echo "\nFinished!"
bash-2.01# dscontrol executor report
Executor Report:
----------------
Version level ................................. 06.00.02.63 - 20070222-163044 [wsbld162]
Total packets received since starting ......... 12,695,968
Packets sent to nonforwarding address ......... 8,411
Packets processed locally on this machine ..... 0
Packets sent to collocated server ............. 0
Packets forwarded to any cluster .............. 6,820,941
Packets not addressed to active cluster/port .. 172
KBytes transferred per second ................. 0
Connections per second ........................ 1,485
Packets discarded - headers too short ......... 0
Packets discarded - no port or servers ........ 0
Packets discarded - network adapter failure ... 0
Packets with forwarding errors................. 0
bash-2.01# dscontrol cluster report ndrack509
Cluster Report:
---------------
Cluster address .................... 9.181.86.185
Cluster alias on interface ......... Y
SYNs on active connections ......... 0
SYNs on finished connections ....... 0
FINs received before SYNs .......... 0
ACKs received before SYNs .......... 0
RSTs received before SYNs .......... 0
Total packets dropped .............. 0
SYN on SYN for quiesced server ..... 0
KBytes transferred per second ...... 228
Connections per second ............. 2383