blancerServer IBM WebSphere Edge Server 6.1
file:///D:/soft/C59I0ML/setupdir/0804/readme.htm
http://www-01.ibm.com/software/webservers/appserv/doc/v60/ec/infocenter-zh/index.html
================================
Edge Components 6.0 安装设置摘要
================================
组件:
==========
Load Balancer
安装路径: C:\Program Files\IBM\edge\lb
安装语言: zh_CN
子组件:
=============
管理
许可证
度量服务器
分派器
站点选择器
基于内容路由
Cisco CSS 控制器
Nortel Alteon 控制器
Caching Proxy
安装路径: C:\Program Files\IBM\edge\cp
安装语言: zh_CN, en_US
子组件:
=============
高速缓存代理(基本服务器)
NT/2000/2003 服务
WSES-Admin - (必需)
安装路径: C:\Program Files\IBM\edge\admin
安装语言: N/A
WSES-ICU - (必需)
安装路径: C:\Program Files\IBM\edge\icu
安装语言: N/A
文档
安装路径: C:\Program Files\IBM\edge
安装语言: zh_CN
子组件:
=============
HTML 文档
Global Security Kit V7 - (必需)
安装路径: C:\Program Files\IBM\GSK7
安装语言: N/A
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服务器和应用软件进行实时监控和负载平衡。负载平衡部件的一个最大优点就是它使得对访问量很大的系统网站进行平滑扩容和透明的进行故障检测与排除成为可能,而这源于它可以监控网络中每一个单独逻辑服务器的动态网络连接。
负载均衡器(Network Dispatcher)为您对HTTP、FTP或其它基于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)。
回页首
对称高可用性概述
LB具有两种高可用性的配置模式,一种是简单高可用(simple HA),一种是对称高可用(Mutual HA)。 前者在运行时只有一台LB处于工作状态,另一台处于备用状态。备用LB会检测主LB的状态,当主LB发生故障时接管请求。为了提高资源的利用率,用户可以使用后一种模式。对称高可用在运行时两个服务器都处于工作状态,每个LB负责处理各自主集群(primary cluster)上的请求,同时互为对方的备份。两台LB之间通过“心跳检测”(heartbeat)来监视对方的“健康”状况,一旦其中一台出现故障,另一台便能接管(takeover)其负责的请求,从而保障整个系统的高可用性。此外,两台LB之间还将保持同步,以保证在takeover发生时数据的一致性。用户可以配置当出现故障的LB恢复正常后,该LB自动还是手动接管回自己的主集群。 由于对称高可用模式在失效转移(failover)发生时,正常工作的LB服务器需要同时负担两个集群的负载均衡,所以选择硬件时需要考虑服务器能承受的压力。
回页首
对称高可用网络结构
我们搭建了对称高可用环境。下面将结合这个实例阐述如何使用LB实现负载均衡的高可用性。
对称高可用的一个典型配置拓扑图
配置说明
[*]在前端,用三台linux模拟实际的客户端。在这三台客户机上我们安装了压力测试工具来生成http请求。请求的目的地址是两个LB服务器的集群地址,即图中的9.181.86.185和9.181.86.155。在实际应用中,集群地址一般为提供给外界访问的公网地址。
[*]Edge 61被安装在中间的两台AIX 5.3服务器上,它们被配置成对称高可用模式实现相互备用。每台LB服务器上配置了三个IP地址。以服务器wastst32.cn.ibm.cn 为例。它包括一个非转发NFA(non-forwarding)地址:9.181.86.144,NFA地址是服务器网络设备用于连接网络的地址;一个集群地址:9.181.86.185,集群地址用来接受客户端对于后端集群的请求;一个返回地址:9.181.86.160,返回地址用来接受后端集群返回的响应。注意我们这里使用的是NAT模式,如果我们使用MAC地址转发模式的话,不需要配置返回IP地址,后端服务器的配置也有些不同。关于NAT和MAC以及详细差别请参考Edge服务器的infocenter。
[*]在后端,用三台unix和solaris服务器来组成集群。在这三台后端服务器上运行着一个简单的http服务程序,监听9080端口的http请求,在接收到请求后发回响应,模拟一个简单的连接。在实际应用中,后端集群可以运行 HTTP,FTP,SSL,SMTP,NNTP,IMAP,POP3,Telnet 和所有其它基于TCP或UDP的网络服务。在此,我们特地配置了位于两个不同子网的后端服务器。Axdev01.cn.ibm.com 和nlsdev43.cn.ibm.com属于9.181.86网段,而was2sun.cn.ibm.com属于9.181.87网段。以此来说明不同子网的后端服务器如何进行配置。
我们来看看一个客户请求的处理流程:
[*]Client A发送一个请求到集群地址9.181.86.185:http://9.181.86.185:9080。
[*]这个请求会被LB服务器wastst32.cn.ibm.com上的集群9.181.86.185接收。
[*]服务器wastst32.cn.ibm.com根据负载均衡算法从集群中选定一个服务器,假设是nlsdev43.cn.ibm.com。
[*]服务器wastst32.cn.ibm.com会将http请求的目的地址改为nlsdev43.cn.ibm.com的IP地址9.181.86.90,将请求的源地址改为自己的返回地址9.181.86.187,然后将请求转发到nlsdev43.cn.ibm.com
[*]后端服务器nlsdev43.cn.ibm.com处理,然后将响应返回到LB服务器的返回地址9.181.86.187。
[*]LB服务器接受到响应,将响应发回到Client A。
那么如果LB服务器wastst32.cn.ibm.com发生故障,对称高可用会怎么工作呢?这时,另一台LB服务器wasdev05.cn.ibm.com将会接管它的所有请求。由于两台LB服务器之间会通过心跳检测来监测对方的状态,当发现对方不响应时,LB会触发脚本,进行IP重新配置,这时一台LB服务器会同时为两个集群地址的请求提供负载均衡。
回页首
对称高可用的基本配置
清单 1. 环境配置指令及注解
//loglevel取值从0到5,5将输出所有信息,缺省为1
dscontrol set loglevel 1
dscontrol set logsize unlimited
//启动executor,executor对于LB是必须的
dscontrol executor start
//fintimeout是LB为TCP连接保持在FIN状态的时间,该参数对LB性能有影响
dscontrol executor set fintimeout 15
//设置客户端网关,clientgateway用于LB回应客户请求时的出口网关
dscontrol executor set clientgateway 9.181.86.1
//添加第一个cluster
dscontrol cluster add ndrack509 address 9.181.86.185 primaryhost 9.181.86.144
dscontrol cluster set ndrack509 staletimeout 36000
//设置该cluster上四个指标的初始权重,下面介绍manager report时会提到
dscontrol cluster set ndrack509 proportions 50 45 5 0
//给cluster 添加port, 并设置转发方式
dscontrol port add ndrack509:9080 method nat reset no
dscontrol port set ndrack509:9080 porttype tcp
//为9080端口添加三个后端服务器,并设置每个服务器的初始权重。
//router地址用于LB到backend server的寻径
dscontrol server add ndrack509:9080:axdev01 address 9.181.86.89 router 9.181.86.89
returnaddress 9.181.86.187
dscontrol server set ndrack509:9080:axdev01 weight 11
dscontrol server add ndrack509:9080:nlsdev43 address 9.181.86.90 router 9.181.86.90
returnaddress 9.181.86.187
dscontrol server set ndrack509:9080:nlsdev43 weight 5
dscontrol server add ndrack509:9080:was2sun address 9.181.87.49 router 9.181.86.1
returnaddress 9.181.86.187
dscontrol server set ndrack509:9080:was2sun weight 11
//添加第二个cluster
dscontrol cluster add ndrack508 address 9.181.86.155 primaryhost 9.181.86.145
dscontrol cluster set ndrack508 staletimeout 36000
dscontrol cluster set ndrack508 proportions 50 45 5 0
dscontrol port add ndrack508:9080 method nat reset no
dscontrol port set ndrack508:9080 porttype tcp
dscontrol server add ndrack508:9080:axdev01 address 9.181.86.89 router 9.181.86.89
returnaddress 9.181.86.160
dscontrol server set ndrack508:9080:axdev01 weight 5
dscontrol server add ndrack508:9080:nlsdev43 address 9.181.86.90 router 9.181.86.90
returnaddress 9.181.86.160
dscontrol server set ndrack508:9080:nlsdev43 weight 13
dscontrol server add ndrack508:9080:was2sun address 9.181.87.49 router 9.181.86.1
returnaddress 9.181.86.160
dscontrol server set ndrack508:9080:was2sun weight 13
//建立HA的心跳检测和备份关系
dscontrol highavailability heartbeat add 9.181.86.144 9.181.86.145
dscontrol highavailability backup add both auto 12345
//启动manager和advisor,manager和advisor是可选的
dscontrol manager start manager.log 10004
//advisor可以是系统缺省的,如http、telnet等,也可以自己定义advisor
dscontrol advisor start Connect 9080 Connect_9080.log
dscontrol advisor loglevel Connect 9080 1
dscontrol advisor logsize Connect 9080 unlimited
在另一台LB服务器wasdev05.cn.ibm.cn上的配置基本和上面一样。除了将dscontrol highavailability heartbeat add 9.181.86.144 9.181.86.145 换成 dscontrol highavailability heartbeat add 9.181.86.145 9.181.86.144,注意“心跳检测”具有方向性。上面三个backend server和LB并不都在同一网段上,在此我们不能采取MAC地址转发方式,只能采取NAT转发方式。
回页首
对称高可用环境中的go*脚本
在对称高可用配置中,我们还必须配置LB状态切换时执行的脚本。
在MHA环境中, LB的状态发生改变时, 会调用一系列go*脚本,做一些网络配置的操作, 主要是对网络接口添加别名地址或删除已设置的别名地址。 Edge服务器提供了go*脚本的样本。脚本样本位于 /opt/ibm/edge/lb/servers/sample 目录下。要使go*发挥作用,您需要把所需的go*脚本放在 /opt/ibm/edge/lb/servers/bin (Unix平台)目录下。
[*]goActive,该脚本在LB变成active状态时调用。这个脚本在对称高可用配置时是必须的。它的作用是在网络设备上添加LB服务器的集群IP和返回IP,从而能接受集群请求和返回响应。
[*]goStandby,该脚本在LB变为standby状态时调用。这个脚本在对称高可用配置时是必须的。它的作用是删除LB服务器网络设备上的集群IP和返回IP的配置,从而另一台LB服务器能接管它的请求。
[*]goInOp,该脚本在executor停止时被调用。这个脚本在对称高可用配置时是可选的。
下面给出了其中一台LB(wastst32)上的goActive和goStandby的脚本实例。
清单 2. goActive脚本示例
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!"
可以看出,goStandby做的操作和goActive刚好互逆,即goActive在对网络适配器en0进行config和对lo0进行unconfig,而goStandby反之。 此外,这两个脚本中还可以添加一些平台特定的操作,取决于我们的需要。
回页首
基本测试
以下介绍了对上述HA环境的基本使用过程,主要目的是测试HA对请求进行了正常转发,且满足一定的性能要求。在一些步骤中顺带提及了应该注意的事项。
通过以下命令启动LB:
dsserver start dscontrol file newload configfile //加载上述的基本配置文件,避免手工一条条执行。
停止LB:
dscontrol executor stop //在dscontrol的许多命令中,executor可以简写为e
dsserver stop
此时分别检查两台LB机器上的网络配置是否正确。用 ifconfig -a 检查IP地址的设置。
清单 4. LB 服务器(wastst32)上的 ifconfig -a 输出
en0: flags=5e080863,c0 UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT;
inet 9.181.86.144 netmask 0xffffff00 broadcast 9.181.86.255
inet 9.181.86.185 netmask 0xffffff00 broadcast 9.181.86.255
inet 9.181.86.187 netmask 0xffffff00 broadcast 9.181.86.255
lo0: flags=e08084b UP,BROADCAST,LOOPBACK,RUNNING,SIMPLEX,MULTICAST,GROUPRT,64BIT;
inet 127.0.0.1 netmask 0xff000000 broadcast 127.255.255.255
inet6 ::1/0
inet 9.181.86.155 netmask 0xffffffff broadcast 9.181.86.155
inet 9.181.86.160 netmask 0xffffffff broadcast 9.181.86.160
tcp_sendspace 131072 tcp_recvspace 131072 rfc1323 1
在wasdev05上的配置与之对称。可以看出两台LB的en0上配上了自己的primary cluster的地址和返回地址,loopback上配上了自己backup cluster的地址和返回地址。 当takeover发生时,负责接管所有cluster上请求的LB所在机器的配置与上面会有所不同,en0将配上所有的cluster地址及返回地址。
用netstat –nr查看路由表,确保没有重复或其它不正确的路由。
清单 5. 不正确的路由表示例
Destination Gateway Flags Refs Use If ExpGroups
9.181.86/24 9.181.86.187 U 0 99873en0 - - =>
9.181.86/24 9.181.86.187 U 0 95684lo0 - - =>
如果出现类似于上面的路由,数据包可能会通过回送地址,从而导致LB对backend server状态的不正确判断,如将backend server的状态识别为down。
您需要删除第二条路由:
route delete 9.181.86/24 9.181.86.187 –if lo0
在该实例中,我们在三台linux上用IBM的压力测试工具akstress来分别向两个cluster发送请求。
清单 6. Akstress的基本配置文件(myedge.acf)
global_settings
Clients 5
ThreadsPerClient 1
TotalPageRequests 0
TimedRun 86400
SequentialIndexedContent on
SequentialIndexedUsers on
PersistSleepMinimum 11000
ThinkMinimum 11000
end_global_settings
stats_definition
#RequestLog request.log
#PageLog page.log
SummaryLog summary.log
RequestStatistics on
PageStatistics on
end_stats_definition
其中调节压力大小的主要参数为 Clients 和 TimedRun。Clients 相当于打开的浏览器个数,通过 TimedRun 我们将压力测试的时间设为24小时。
注意,在长时间的压力测试中,我们通常关闭RequestLog和PagaLog,否则产生的Log文件过大会导致akstress崩溃。
在运行前,先设置linux最多打开的文件句柄数:
ulimit –n 30000
运行akstress:
nohup akstress -host 9.181.86.155:9080 -config myedge.acf > output.log &
nohup akstress -host 9.181.86.185:9080 -config myedge.acf > output.log &
可以通过tail –f output.log 来查看akstress的执行情况。
运行结束后,在 summary.log 中将有执行报告,其中有总共请求数,每秒请求数,每个请求数的平均时间等统计。 而LB的并发数 = requests/per second of client1 + requests/per second of client2 + requests/per second of client3。
回页首
监视Load Balancer
在LB服务器上,我们一般通过几个report命令来监测LB的运行状况。以下每个 report 清单中的第一行是在LB(wastst32)上执行的命令语句。
清单 7. executor report 输出
bash-2.01# dscontrol executor report
Executor Report:
----------------
Version level ................................. 06.00.02.63 - 20070222-163044
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
该report报告了LB的当前版本和启动以来总的数据包和连接的处理情况。
清单 8. manager report 输出
bash-2.01# dscontrol manager report
--------------------------------------------------------------------
| SERVER | IP ADDRESS | STATUS |
--------------------------------------------------------------------
| was2sun | 9.181.87.49 | ACTIVE |
| axdev01 | 9.181.86.89 | ACTIVE |
| nlsdev43 | 9.181.86.90 | ACTIVE |
--------------------------------------------------------------------
-----------------------------
| MANAGER REPORT LEGEND |
-----------------------------
| ACTV | Active Connections |
| NEWC | New Connections |
| SYS| System Metric |
| NOW| Current Weight |
| NEW| New Weight |
| WT | Weight |
| CONN | Connections |
-----------------------------
-------------------------------------------------------------------
| ndrack509 | | | | | |
| 9.181.86.185 | WEIGHT |ACTV|NEWC|PORT| SYS|
| PORT:9080 |NOW NEW | 50%| 45%| 5%| 0%|
-------------------------------------------------------------------
| was2sun |66| 3 | 1214 | 125 | 0 |
| axdev01 |99| 3 | 3498 | 20 | 0 |
| nlsdev43 | 1313 | 1 | 4098 | 20 | 0 |
-------------------------------------------------------------------
---------------------------------------------------
| ADVISOR | CLUSTER:PORT |TIMEOUT|
---------------------------------------------------
| connect | 9080 | unlimited |
---------------------------------------------------
上述manager report显示了各个backend server的当前状态和权重。权重是LB均衡请求的主要依据,LB根据四个指标计算Backend server的权重,这四个指标分别是:当前活动的连接数,新来的连接数,端口负载(由advisor统计得来),系统负载(从metric server处得来)。这四个指标对计算backend server权重的作用又不尽相同,即分别有一个计算权重,该计算权重通过配置指令来设定。上面显示中的50%,45%,5%,0%即为各自的计算权重。
先计算出每个server上的总的负荷(load):
Was2sun:0.5*3 + 0.45*1214 + 0.05*125 = 1.5 + 546.3 + 6.25 = 554
Axdev01:0.5*3 + 0.45*3498 + 0.05*20 = 1.5 + 1574.1 + 1 = 1576
Nlsdev43:0.5*1 + 0.45*4098 + 0.05*20 = 0.5 + 1844.1 + 1 = 1846
于是最终的权重为:
Was2sun:554/(554+1576+1846) = 0.14
Axdev01:1576(554+1576+1846) = 0.40
Nlsdev43:1846(554+1576+1846) = 0.46
该权重即为weight列中新的权重(new),weight列中的now值为当前使用中的权重。
清单 9. cluster report 输出
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
该report输出cluster的基本信息和各类TCP包的数量。
清单 10. server report 输出
bash-2.01# dscontrol server rep ndrack509:9080:
Cluster: ndrack509 Port: 9080
-------------------------------------------------------------------------------
| Server |CPS | KBPS | Total |Active |FINed|Comp |
-------------------------------------------------------------------------------
| was2sun |881 | 77 | 10237024 | 2 | 0 |10237024 |
| axdev01 |557 | 73 | 11081588 | 2 | 0 |11081588 |
| nlsdev43 | 1064 | 82 | 11366194 | 2 | 0 |11366194 |
-------------------------------------------------------------------------------
该report的第一列为每秒连接数,第二列为每秒传输的kb数。根据CPS可以推算出LB当前的并发数(三个CPS 的值累加后折半)。
同时,通过LB的log来检查LB是否正常运行。其中hamon.log记录了HA的每次启动和停止。Mutualha.log是我们在goActive和goStandby里定义的log输出文件,可以记录HA状态改变的情况,以此判断有无takeover发生。
回页首
性能参数设置
下面是在对Edge load balancer做性能测试时的常见参数调整。
清单 11. Linux客户端的参数设置
ulimit -c unlimited
ulimit -l unlimited
ulimit -n 300000 //或者echo ulimit – n 300000 >> /etc/profile
echo net.ipv4.ip_local_port_range = 1024 65536 >> /etc/sysctl.conf
清单 12. LB服务器上的参数设置
//以下针对AIX OS而言。注意,下面参数的设置并非总有效,取决于LB所在的OS的系统配置。
no -po tcp_timewait = 1 //使用 tcp_timewait 选项来配置在 15 秒间隔中连接保持等待状态的时间长度,缺省为1
no -po tcp_sendspace=262144 //tcp发送缓冲区大小,send之前能最多缓存的数据
no -po tcp_recvspace=262144 //tcp接收缓冲区大小,recv时能最多缓存的数据
no -po tcp_ephemeral_low=8192 //指定为 TCP 短暂端口分配的最小端口号
no -po tcp_ephemeral_high=65535 //指定为 TCP 短暂端口分配的最大端口号
no -po ipignoreredirects=1 // 指定是否处理接收的重定向
no -po ipsendredirects=1 // 指定内核是否应该发送重定向信号
no -po nbc_max_cache=131072 // 指定允许在网络缓冲区高速缓存(NBC)中的高速缓存对象的最大大小,单位为字节
no -po rfc1323=1 //启用由 RFC 1323(TCP 扩展以得到高性能)指定的窗口定标和时间图标。
清单 13. LB的设置
dscontrol executor set fintimeout 15 //建议不低于15
dscontrol cluster set clustername proportions 50 45 5 0
dscontrol cluster set clustername maxservers32
dscontrol cluster set clustername staletimeout36000
回页首
几个常见问题
Q. 执行dscontrol e stop或其它dscontrol命令后,长久没反应。
A. 分析:可能原因是您的LB在忙于处理其它请求(如来自于snmp agent的请求);或者您检查LB对本机的域名解析是否正常,因为dscontrol的命令都会发往LB内部的rmi server进行处理,连接rmi server会采用本机的hostname,简单的测试办法是ping hostname。
Q. 后端backend server是正常启动的,但用dscontrol manager rep查看时,backend server被标记为down了。
A. 分析:backend server被标记为down说明advisor和backend之间的通信出了问题,一般查看LB上的路由表能发现问题所在。看是否存在冲突的路由。
Q. 两台LB机器都在正常运行,从mutuallog里却发现有takeover发生。
A. 分析:一般原因也是两台LB之间的通信出了问题,可以检查路由表,删除多余的或冲突的路由。
Q. 在NAT转发方式中,LB是怎么完成数据包的转发的?
A. LB自身不会对数据包进行处理(即不会修改IP包),而是通过配置所在系统的数据包转发规则来完成。 如在Linux上,LB会配置系统的NAT表,用iptables -t nat –L即可以查看配置后的nat表,如将本机9080端口上收到的所有IP包转到后端server 9.186.117.57的9080端口上去,LB执行的等价任务是
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 9.186.117.241 --dport 9080 -j DNAT --to-destination 9.186.117.57:9080 。
回页首
结束语
本文描述了 WebSphere Edge Server Component--Load Balancer 在对称高可用环境中的基本使用,同时告诉了您使用中的一些注意事项。 本文对您快速建立MHA环境并规划性能测试方案很有帮助。
参考资料
[*]
WebSphere Application Server - Edge Component 信息中心 :了解更多Edge产品的信息
[*]
Load Balancer Administration Guide :Edge Load Balancer的管理员手册
[*]
AIX 5L Practical Performance Tools and Tuning Guide :AIX平台的常见性能调整策略和工具
[*]
pSeries和AIX Infocenter :了解更多AIX平台的信息
end
页:
[1]