利用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)
- 以root用户登入
- 装入WebSphere Edge Server 的光盘,mount /cdrom
- 如果未建立/cdrom,则:
- mkdir /cdrom
- mount –v cdrfs –p–r /dev/cd0 /cdrom
- 进入/cdrom,执行./install (如果AIX版本为5.1,必须有bos.iocp 5.1.0.11或以上版本,如果AIX版本为5.2,则必须将光盘拷贝至硬盘目录中,注释掉install中的相关版本检查部分,然后从硬盘上安装)
- 在欢迎窗口选Next
- 许可证协议页面,选择Yes
- 选择安装界面语言(中、英文均可,但中文需要操作系统语言包支持,这里仅以英文为例)并选择 Next
- 在组件选择界面,选中Load Balancer中的Administration和Dispatcher,可以看到License和Runtime被同步选中,点Next
- 察看待安装选项,点Proceed
- 等待安装完成,点击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的当前状态。
利用WebSphere Edge Server构建冷轧系统负载均衡相关推荐
- 【Windows Server 2019】网络负载均衡服务配置与管理——理论+网络拓扑及说明
目录 1. 负载均衡的基本概念 1.1 负载均衡的定义 (1)一个没有负载均衡的Web服务架构 (2)加入负载均衡器的Web服务架构 1.2.负载均衡的工作原理 1.3.负载均衡三要素 (1)分发策略 ...
- 【Windows Server 2019】网络负载均衡服务配置与管理——安装配置及验证
目录 4. 安装和配置网络负载均衡服务 4.1 安装NLB服务 4.2 创建NLB集群 4.3 将服务器添加到集群 5. 验证负载均衡服务器 5.1 拓扑说明 5.2 安装IIS服务 5.3 验证负载 ...
- 宝塔linux 做负载均衡,利用BT宝塔面板做网站多服务器负载均衡图文教程
对于我们做网站的来说,如果流量大了,一台服务器肯定是不够的,接下来要考虑很多方面,比如动静分离.比如数据库异步,比如负载均衡等等.因为我们很多新手站长都用的是BT宝塔面板,下面虾皮路就介绍一下利用BT ...
- 【转】Apache Http Server与Tomcat实现负载均衡和集群
Apache Http Server与Tomcat实现负载均衡和集群 一.分布式实现原理 如上图所示,主要通过 Apache-Server 作为中转服务器,实现多个 tomcat 服务器之间的分布式处 ...
- Windows Server 2016 安装网络负载均衡
文章目录 Windows Server 2016 安装网络负载均衡 一.Windows安装网络负载均衡功能 二.交换机绑定NLB Windows Server 2016 安装网络负载均衡 NLB(网络 ...
- 利用nginx+tomcat+memcached组建web服务器负载均衡
1 起因 最近对新开发的web系统进行了压力测试,发现tomcat默认配置下压到600人的并发登录首页响应速度就有比较严重的影响,一轮出现2000多个的500和502错误.我把登录的时间统计做了一下, ...
- 利用LVS+Keepalived 实现高性能高可用负载均衡服务器
作者:NetSeek [url]http://www.linuxtone.org[/url](IT运维专家网|集群架构|性能调优) 欢迎转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明 ...
- java B2B2C Springboot仿淘宝电子商城系统-负载均衡之ribbon+feign
一. feign简介 Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单.使用Feign,只需要创建一个接口并注解.它具有可插拔的注解特性,可使用Feign注解和JAX-RS注 ...
- 利用集群技术实现Web服务器负载均衡
集群和负载均衡的概念 集群(Cluster) 所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算 ...
- 用HAproxy+keepalived+mysql Replication 构建基于企业级负载均衡
最近用HAproxy+keepalived+mysql复制测试高可用性Linux系统集群. HAProxy是一款免费的提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理 ...
最新文章
- AI 一分钟 | 法拉第未来称年底前交付首量FF91,你还相信贾跃亭吗?
- Leetcode 155. 最小栈 (每日一题 20210923)
- Python数据库字段拆分数据
- WebDriver 小毛笔记(二)准备工作
- 阿里云容器服务cni网络插件terway非官方网络性能测试
- 类、变量、块、构造器、继承初始化顺序,终极解答
- linux 修改hba参数,更改Raid卡和HBA卡在linux下的启动顺序
- linux首次安装mysql密码是多少,Linux小白,初次安装MySQL,大神请绕路
- Java的几种路径总结
- testng 检查异常_TestNG异常– ExpectedExceptions,ExpectedExceptionsMessageRegExp
- [CCPC-Wannafly Comet OJ 夏季欢乐赛(2019)]飞行棋
- java tmp 目录_Tmp目录丢失引发Java进程异常
- 【论文笔记】Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
- Silverlight数据驱动模式探索系列 (1)已知列数的DataGrid绑定
- 登记表都不会填,面试还能通过?不可能!
- php 二级导航,导航下面的二级导航,显示和隐藏,
- WIN10 U盘打开无权限问题
- 基于JAVA健康生活网站计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 玩转华为ENSP模拟器系列 | 接入用户采用Windows7客户端通过IKEv2方式接入总部VdPdNd(采用证书认证方式)
- Codejock Xtreme ToolkitPro 静态链接XTP库以及皮肤库的使用
热门文章
- 投资理财之基金二:购买基金的渠道
- 笔记本电脑建立Wifi热点多种方法
- 华为usg6320服务器映射,华为防火墙USG6320配置(简单)
- Chrome 浏览器访问不了任何网页
- 解决微信调整字体大小导致页面样式混乱的问题
- Vue 3 Composition API - “ref”和“reactive”
- svn项目管理服务器,Apache 下SVN项目管理使用说明
- winxp网络找不到计算机,WinXP系统电脑打开WiFi搜索不到无线网络的解决方法
- 汉字拼音互相转换工具类
- 【Chrome】浏览器控制台设置成中文