第二步,通过Edge Component来进行负载均衡和HA(High Availability)的配置。这样,就可以实现系统的高性能并且保证系统的高可用性。
A.可以使用光盘安装或者使用iso安装,安装时需要打上最新的补丁。这里要注意,补丁的安装很关键,在本次实战中,我们通过介质来安装,在安装时只选择安装产品的lic文件。安装完毕后,把已经安装的包全部卸载掉,使用最新的包来安装,再把lic文件copy回去。
B.安装完Edge Component,在任意路径下执行命令“dsserver”启动服务,并执行命令“lbadmin”,进入配置向导。

右键点击【分派器】,选择【连接到主机】, 右键点击【主机】,选择【启动执行程序】, 右键点击【执行程序】,选择【添加集群】, 右键点击【集群】,选择【添加端口】, 右键点击【端口】,选择【添加服务器】。将集群两个节点主机的IP输入。因Edge Component和HTTP Server安装在一台机器上,故需要对集群进行“并置”设置。
C.配置Edge Component和HTTP服务器的并置
在GUI方式下,添加完HTTP服务器后,点击所添加的HTTP服务器,在右边的配置界面页,选择【Collocated (“已配置”)】为yes;或者,通过命令行方式:
dscontrol server set clustername:80:http_name collocated y
clustername集群地址,这是一个虚IP,客户端请求将根据LB的配置被分发到两台服务器中的某一台。
D.在应用服务器上配置loopback
在命令行中分别执行(IP-A,IP-B分别为服务器的IP地址):
ifconfig lo0 alias IP-A netmask 255.255.255.0 ifconfig lo0 alias IP-B netmask 255.255.255.0
之后重启IHS:
/opt/IBMIHS /bin/apachectl stop
/opt/IBMIHS /bin/apachectl start
然后在浏览器上用集群地址访问,测试是否配置成功。
E.解除集群地址的配置。因为在HA的环境里,集群地址是要交给LB的脚本自动配置,而不是这样固定配置的。退出服务器A上的LB管理界面,停止LB服务:
dsserver stop
F.在另一台LB的服务器B上,完全重复以上A-E的所有操作。特别是当LB验证安装配置成功后,一定要按照上一步,取消集群地址的配置。
G. 可以使用以下脚本在命令行中实现HA的配置,当然,你也可以选择GUI的方式来配置主分发器和副分发器的配置。但是,依旧需要对goActive、goStandby、goInOp和highavailChange四个脚本的配置,这几个脚本在安装目录的/samples下有样本文件(.sample),进行简单修改即可。这里,我们将通过命令行的方式来对主分发器和副分发器进行配置,然后添加四个脚本文件。
主分发器配置(以下脚本中serverA即为服务器A的IP,serverB即为服务器B的IP):
dscontrol set loglevel 1
dscontrol executor start
dscontrol executor set fintimeout 30
dscontrol highavailability heartbeat add serverA serverB
dscontrol highavailability backup add primary=serverA auto port
dscontrol highavailability reach add netmaskIP
dscontrol cluster add clusterIP address clusterIP primaryhost serverA
dscontrol cluster set clusterIP proportions 49 50 1 0
dscontrol port add clusterIP 0:80 reset no
dscontrol server add clusterIP:80: serverB address serverB
dscontrol server set clusterIP:80: serverB weight 12
dscontrol server add clusterIP:80:serverA address serverA
dscontrol server set clusterIP:80:serverA collocated y #(并置)
dscontrol manager start manager.log 10004
dscontrol advisor start Http clusterIP:80 Http_clusterIP_80.log
副分发器配置:
dscontrol set loglevel 1
dscontrol executor start
dscontrol executor set fintimeout 30
dscontrol highavailability heartbeat add serverB serverA
dscontrol highavailability backup add backup auto 12345
dscontrol highavailability reach add netmaskIP
dscontrol cluster add clusterIP address clusterIP primaryhost serverA
dscontrol cluster set clusterIP proportions 49 50 1 0
dscontrol port add clusterIP:80 reset no
dscontrol server add clusterIP:80:serverA address serverA
dscontrol server set clusterIP:80:serverA weight 12
dscontrol server add clusterIP:80:serverB address serverB
dscontrol server set clusterIP:80:serverB collocated y
dscontrol manager start manager.log 10004
dscontrol advisor start Http clusterIP:80 Http_clusterIP_80.log
完成分发器的配置后,我们来添加脚本。在serverA和serverB上的/opt/ibm/edge/lb/servers/bin目录下添加以下四个文件,并使root用户对其具有执行权(脚本中你要将CLUSTER设置为你自己的设定的集群地址):
| 文件 |
内容 |
| goActive | #!/bin/bash CLUSTER=192.168.0.30 INTERFACE=eth0:1 NETMASK=255.255.255.0 BCAST=192.168.0.255 # Delete cluster ip on loop back and change sysctl settings ip addr show lo | grep -q $CLUSTER if [ $? -eq 0 ]; then echo "delete $CLUSTER on loop back" ip addr del $CLUSTER dev lo fi sysctl -w net.ipv4.conf.all.arp_ignore=0 sysctl -w net.ipv4.conf.all.arp_announce=0 # Add cluster ip on eth1 echo "Adding device alias" ifconfig $INTERFACE $CLUSTER netmask $NETMASK broadcast $BCAST up #!/bin/bash CLUSTER=192.168.0.30 INTERFACE=eth0:1 # deactive eth0:1 interface echo "Deleting the device alias(es)" ifconfig $INTERFACE down # add loop device alias and setup sysctl conf ip addr add $CLUSTER/32 scope host dev lo sysctl -w net.ipv4.conf.all.arp_ignore=3 sysctl -w net.ipv4.conf.all.arp_announce=2 |
| goInOp | #!/bin/bash CLUSTER=192.168.0.30 INTERFACE=eth0:1 # deactive eth0:1 interface echo "Deleting the device alias(es)" ifconfig $INTERFACE down # add loop device alias and setup sysctl conf ip addr add $CLUSTER/32 scope host dev lo sysctl -w net.ipv4.conf.all.arp_ignore=3 sysctl -w net.ipv4.conf.all.arp_announce=2 |
| highavailChange | #!/bin/bash DATE=`date` OUTPUT="$DATE LB just ran $1." echo $OUTPUT >> /opt/ibm/edge/lb/servers/logs/lb.log echo $OUTPUT | mail -s "highavailChange" root@localhost |
| goStandby | #!/bin/bash CLUSTER=192.168.0.30 INTERFACE=eth0:1 # deactive eth0:1 interface echo "Deleting the device alias(es)" ifconfig $INTERFACE down # add loop device alias and setup sysctl conf ip addr add $CLUSTER/32 scope host dev lo sysctl -w net.ipv4.conf.all.arp_ignore=3 sysctl -w net.ipv4.conf.all.arp_announce=2 #!/bin/bash CLUSTER=192.168.0.30 INTERFACE=eth0:1 # deactive eth0:1 interface echo "Deleting the device alias(es)" ifconfig $INTERFACE down # add loop device alias and setup sysctl conf ip addr add $CLUSTER/32 scope host dev lo sysctl -w net.ipv4.conf.all.arp_ignore=3 sysctl -w net.ipv4.conf.all.arp_announce=2 |
至此,我们的应用系统集群就建立好了,可以使用各种方式来测试一下两台主机的工作情况,比如拔掉主服务器的网线,看服务是不是能自动切换到备机,即通过集群地址是不是能够访问我们部署的应用。正常的工作状态下,你可以通过每台主机的IP或者集群地址来访问部署的应用程序,如果其中一台主机的服务宕掉,你仍旧也可以通过集群地址来访问我们的应用程序。