利用WebSphere Edge Server构建冷轧系统负载均衡

某用户ERP系统运行了8年,其中冷轧车间系统运行近5年,其核心业务系统为冷轧数据汇总查询系统,基于WAS,DB2,Power小型机环境构建,稳定运行至今。由于冷轧查询功能开通了其他业务系统接口的查询功能,因此数据查询负载剧增,目前的Web负载拙荆见肘,基于业务系统的工业控制性,我们测试并比对了几种负载均衡方案,最后在F5等方案中脱颖而出,我们采用了EdgeServer的负载均衡方案。主要原因如下:

1、IBM WAS的负载均衡方案,和WAS的session负载均衡功能的java会话级负载均衡功能兼容性最佳,和硬件F5以及开源方案相比,省下了很多的配置风险。

2、对于WAS管理员的学习维护成本最低

3、可以充分利用sessionDB的数据库配置,并可以进行多层配置

4、免费!还有IBM 800的支持,何乐而不为呢?


我们的配置方式如下:

冷轧系统基于AIX环境,并基于版本依赖性的WAS版本。含Fixpack小版本号。

AIX操作系统的机器上安装 Load Balancer 组件的硬件和软件先决条件:

·        AIX 版本: AIX 5.1 5100-04 维护包或 AIX 5.2 5200-01 维护包。支持 32 位或 64 位方式。

·        软件和文档所需的可用磁盘空间:50 MB,加上日志文件所需的附加空间。

·        以下网络接口卡(NIC)之一:

·        16Mb 令牌环。

·        10Mb 以太网。

·        100Mb 以太网。

·        1Gb 以太网。

·        光纤分布式数据接口(FDDI)。

·        多端口以太网 NIC。

·        Java 2 Runtime Environment:此软件在 IBM AIX Developer Kit, Java 2 Technology Edition, 1.4.1.x 的任何版本中提供。

系统拓扑:

Edge Server安装 (172.16.5.30和172.16.5.31)

  1. 以root用户登入
  2. 装入WebSphere Edge Server 的光盘,mount  /cdrom
  3. 如果未建立/cdrom,则:
  4. mkdir /cdrom
  5. mount –v cdrfs –p–r /dev/cd0 /cdrom
  6. 进入/cdrom,执行./install (如果AIX版本为5.1,必须有bos.iocp 5.1.0.11或以上版本,如果AIX版本为5.2,则必须将光盘拷贝至硬盘目录中,注释掉install中的相关版本检查部分,然后从硬盘上安装)
  7. 在欢迎窗口选Next
  8. 许可证协议页面,选择Yes
  9. 选择安装界面语言(中、英文均可,但中文需要操作系统语言包支持,这里仅以英文为例)并选择 Next
  10. 在组件选择界面,选中Load Balancer中的Administration和Dispatcher,可以看到License和Runtime被同步选中,点Next
  11. 察看待安装选项,点Proceed
  12. 等待安装完成,点击Finish关闭窗口

 

Web服务器层群集配置暨Edge Server设置

对于该层群集的设置主要集中在对于30和31两台机器上。在该阶段中,我们需要分别配置并验证从Edge服务器(30上或31上)均可成功分发请求到30和31的Web服务器上。(Web服务器通过插件同后端应用服务器一级的连接分发,我们已经在上一节做了验证)所以在这里我们以30作分发控制器为例说明配置:

31主机上操作

vi /etc/hosts 添加:

172.16.5.30       edgesvr1

172.16.5.31       edgesvr2

172.16.5.13       wisco_sit

 

其中后一条是我们要用于访问Web服务器的群集名和群集地址

配置LoopBack 网卡,并删除额外路由

 ifconfig lo0 alias 172.16.5.13 netmask 255.255.255.0

 route delete 172.16.5/24 172.16.5.13

30主机上操作

  vi /etc/hosts 添加:

172.16.5.30       edgesvr1

172.16.5.31       edgesvr2

172.16.5.13       wisco_sit

  在已安装了Edge Server的30主机上发出 dsserver start命令启动DispatchingServer (由于/usr/java131已经在系统的环境路径中,所以可以直接执行)

  执行lbadmin,打开Load Balancer 配置窗口

  点击 Dispatcher - 右键 – Connect to Host

  在跳出的提示“选择主机名:EDGESVR1 on port 10099”窗口中点OK

  管理配置客户端窗口成功连接连接到Host:EDGESVR1,选Host:EDGESVR1 – 右键– Start Executor

  出现Executor: 172.16.5.30,选中它,右键Add Cluster,在弹出窗口中输入

  Cluster                      Wisco_sit

  Cluster Address      172.16.5.13

  其余采用默认设置,并点OK

  出现Cluster: Wisco_sit,选中它,右键 – Add Port

  Port              80

  Forwarding Method              保持缺省的MAC设置

  点OK

  选中出现的Port: 80 标志,右键 – Add Server

  Server  EDGESVR1

  Server address        172.16.5.30

  选 OK

  重复一次添加Server  edgesvr2 (172.16.5.31)

  选Host: EDGESVR1,右键 – Start Manager

  选中出现的Manager,右键 – Start Advisor

  Advisor name:  HTTP

  Port number:     80

  点 OK

  选中 Advisor: Http 80

  在en0上添加地址别名(作为广播地址)

  ifconfig en0 alias 172.16.5.13 netmask 255.255.255.0

  (Optional)同被分发机一样,在非HA情况下,为了在reboot主机后地址不丢失,我们要将上面的添加别名的命令加入/etc/rc.net中保证每次启动服务器时都被执行,在测试中未被配置

  此时再观察Load Balancer窗口中,选中Advisor: Http80,可以看到服务器EDGESVR1和edgesvr2出现在右边的CurrentStatistics页面中,并呈现相应的动态权重。(如果此时30和31上的IBM Http Server处于关停状态,则相应数值显示为“-1”,需要分别启动它们:/usr/IBMHttpServer/bin/apachectlstart )

  最后,我们要保存我们的设置。选中Host: EDGESVR1,右键 – SaveConfiguration File As ,在弹出窗口中选default.cfg,选 OK


同样,在31主机上也作同样的操作。

Edge Server 接管设置

要进行Edge Server的接管设置

在主机30上

  修改default.cfg             

vi /opt/ibm/edge/lb/servers/configurations/dispatcher/default.cfg

 在dscontrol executor start命令后加入如下命令段落:

dscontrol highavailabilityheartbeat add 172.16.5.30 172.16.5.31

dscontrol highavailabilitybackup add primary=172.16.5.31 auto 10006

dscontrol highavailabilityreach add 172.16.5.33

 删除下面的命令

dscontrol cluster add wisco_sitaddress 172.16.5.33 primaryhost 172.16.5.30

 用:wq保存退出 (在添加HA中的恢复策略时,有手动和自动2种模式,参数分别为 manual和auto,自动恢复时只要主机器再次可运行,就继续路由信息包,而手工恢复则需要使用takeover命令强制将信息包路由回主机器。两种方式都可,但该设置在主、备机上必须一致。)

 拷贝并修改脚本文件

 进入/opt/ibm/edge/lb/servers/bin目录,分别执行

cp../samples/go* .

cp../samples/high* .

 在HA环境下我们需要4个脚本文件,分别是goAtive,goStandby,goInOp和highavailChange,对于这4个脚本文件的修改,看来很复杂,实际总结起来,只有2项工作,一是要修改其中几个重要的变量值,将原样本中的赋值改为你实际系统中的值(如NETWORK,INTERFACE,NETMASK,DESTINATION等),二是将一些日志和AIX 5L上的相关设置的注释标志去掉,使其生效。

为了更好的理解这几个脚本文件的设置,在此将它们的功能分别说明如下:

  goAtctive:当Dispatcher 进入活动状态并开始路由信息包时执行goActive脚本,在HA配置下运行Dispatcher,此脚本删除回送别名并添加设备别名

  goStandby:当Dispatcher 进入备用状态时执行goStandby脚本,监视活动机器的状态,但是不路由任何信息包。在HA配置下必须的脚本,用于删除设备别名并添加回送别名

  goInOp:当Dispatcher执行程序停止和执行程序第一次启动前执行goInOp脚本。通常在高可用性配置下运行Dispatcher,可以创建此脚本。此脚本删除所有设备和回送别名

  highavailChange:无论高可用性状态在Dispatcher中如何更改,highavailChange脚本都执行。你可以用该脚本使用状态更改信息,如记录事件乃至提醒管理员。

  vi goActive.sample,

  修改设置,使其如下所示:

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

NETMASK=0xffffff00

# For AIX 5.1 Only - uncomment and setthis value

DESTINATION=172.16.5/24

 

  date >> $LB_LOGDIR/ha.log

  print "This machine is Active. Aliasing cluster address(es) to NIC \n" >> $LB_LOGDIR/ha.log

 for CLUSTER in 13; do

    ifconfig lo0 delete $NETWORK.$CLUSTER

    ifconfig $INTERFACE alias $NETWORK.$CLUSTER netmask $NETMASK

# For AIX 5.1 Only - uncomment thisline

#    route delete $DESTINATION $NETWORK.$CLUSTER

done

  注意这里的goActive脚本中,我们没有根据注释中的提示执行最后删除额外路由的操作(route delete $DESTINATION $NETWORK.$CLUSTER,因为我们在用ifconfig 向 en0上添加 alias 时没有产生额外路由172.16.5/24  172.16.5.13。关于这一项的检查,可以用netstat –nr来察看(在配置单个Edge Server时应该已经可以看到有无额外路由生成)。在不同的环境中,对于这一条需要先进行验证。

  cp goActive.sample goActive 拷贝成为可执行脚本

  vi goStandby.sample

  修改设置,使其如下所示:

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

NETMASK=0xffffff00

# For AIX 5.1 Only - uncomment and setthis value

DESTINATION=172.16.5/24

 

#

 date >> $LB_LOGDIR/ha.log

 print "Going into Standby mode.\n" >> $LB_LOGDIR/ha.log

 print "Deleting the device aliases and adding the loopbackaliases" >> $LB_LOG

DIR/ha.log

 for CLUSTER in 13; do

   ifconfig $INTERFACE delete $NETWORK.$CLUSTER

   ifconfig lo0 alias $NETWORK.$CLUSTER netmask $NETMASK

# For AIX 5.1 Only - uncomment thisline

    route delete $DESTINATION $NETWORK.$CLUSTER

 done

  cp goStandby.sample goStandby

  vi goInOp.sample

  修改如下

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

#

  date >> $LB_LOGDIR/ha.log

  print "Executor has stopped. Removing loopback and device aliases. \n" >> $L

B_LOGDIR/ha.log

 for CLUSTER in 13; do

  ifconfig lo0 delete $NETWORK.$CLUSTER

  ifconfig $INTERFACE delete $NETWORK.$CLUSTER

 done

  cp goInOp.sample goInOp

  cp highavailChange.sample highavailChange

  在主机31上

  修改default.cfg             

vi /opt/ibm/edge/lb/servers/configurations/dispatcher/default.cfg

  在dscontrol executor start命令后加入如下命令段落:

dscontrol highavailabilityheartbeat add 172.16.5.31 172.16.5.30

dscontrol highavailabilitybackup add primary=172.16.5.30 auto 10006

dscontrol highavailabilityreach add 172.16.5.33

  删除下面的命令

dscontrol cluster add wisco_sitaddress 172.16.5.33 primaryhost 172.16.5.30

  拷贝并修改脚本文件

  进入/opt/ibm/edge/lb/servers/bin目录,分别执行

cp ../samples/go*.

cp../samples/high* .

  我们需要4个脚本文件,goAtive,goStandby,goInOp和highavailChange

  vi goActive.sample

  修改如下

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

NETMASK=0xffffff00

# For AIX 5.1 Only - uncomment and setthis value

DESTINATION=172.16.5/24

 

#

  date >> $LB_LOGDIR/ha.log

  print "This machine is Active. Aliasing cluster address(es) to NIC \n" >> $LB_LOGDIR/ha.log

 for CLUSTER in 13; do

    ifconfig lo0 delete $NETWORK.$CLUSTER

    ifconfig $INTERFACE alias $NETWORK.$CLUSTER netmask $NETMASK

# For AIX 5.1 Only - uncomment thisline

#    route delete $DESTINATION $NETWORK.$CLUSTER

done

  cp goActive.sample goActive

  vi goStandby.sample

  修改如下

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

NETMASK=0xffffff00

# For AIX 5.1 Only - uncomment and setthis value

DESTINATION=172.16.5/24

 

#

 date >> $LB_LOGDIR/ha.log

 print "Going into Standby mode.\n" >> $LB_LOGDIR/ha.log

 print "Deleting the device aliases and adding the loopbackaliases" >> $LB_LOGDIR/ha.log

 for CLUSTER in 13; do

   ifconfig $INTERFACE delete $NETWORK.$CLUSTER

   ifconfig lo0 alias $NETWORK.$CLUSTER netmask $NETMASK

# For AIX 5.1 Only - uncomment thisline

    route delete $DESTINATION $NETWORK.$CLUSTER

 done

l  cp goStandby.sample goStandby

u  vi goInOp.sample

l  修改如下:

LB_LOGDIR=/opt/ibm/edge/lb/servers/logs/dispatcher

NETWORK=172.16.5

INTERFACE=en0

#

  date >> $LB_LOGDIR/ha.log

  print "Executor has stopped. Removing loopback and device aliases. \n" >>$LB_LOGDIR/ha.log

 for CLUSTER in 13; do

  ifconfig lo0 delete $NETWORK.$CLUSTER

  ifconfig $INTERFACE delete $NETWORK.$CLUSTER

 done

  cp goInOp.sample goInOp

  cp highavailChange.sample highavailChange

  在30和31上分别执行dsserver start,启动Edge Server服务

验证Edge Server HA接管

  验证Edge Server的HA接管比较简单,只要在Primary Edge Server路由信息包期间,将其进程停止(甚至拔掉网线、关闭电源等方式均可,但在测试过程中实施起来可能会较麻烦,所以在本次测试中未采用。),保证我们仍然可以通过群集地址或主机名访问到相应的内容,就可以进行验证了。在具体的测试中,我们在客户端浏览器中发送http://172.16.5.13请求,返回index.html页面显示。在30主机上执行dsserver stop命令(或者Kill掉相应进程),这时,30上的分发器已不工作。打开新的浏览器窗口(防止IE的缓存特性),再次发送http请求,可以看到,index.html被正常返回了,也就是说,分发的任务被自动转移到了原来的备份Dispatcher上。

l 对于恢复策略为自动的情况,到30主机上,执行dsserver start,信息包被自动重新路由回30Dispatcher处理,执行lbadmin打开LB管理配置窗口并连接到Host: edgesvr1。可以看到Executor为30,再分别察看群集中server: edgesvr1和server: edgesvr1的连接数,记录下来。在客户端打开浏览器,访问http://172.16.5.13,然后再刷新,可以看到edgesvr1或edgesvr2中有一个的连接数增加了1。在LB窗口中,也可以看到Executor的当前状态。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值