整个环境是在Windows 2008 R2上搭建的
前端两台服务器搭建高可用负载均衡集群(MAC方式),对两台IHS的web服务器做负载均衡,现在问题是其中一台IHS如果停机(关闭服务),load balancer ipv4不会做故障转移,想了些办法,比如监控两台IHS的80端口(自己写程序),如果出现端口不同调用如下脚本:
--宕机
dscontrol server down WAS_CLUSTER:80:IHS01
--运行
dscontrol server up WAS_CLUSTER:80:IHS01
,但这个解决方式总感觉不太对劲,想知道有load balancer ipv4是否有自动故障转移来解决"单点故障"的问题,在IBM Knowledge Center查了大量资料也没结果,只是在“Edge Components 的概念、规划和安装”文档里看见一句话:
负载平衡通过显式群集内容服务器来提高 Web 站点的可用性和可伸缩性,此处的内容服务器包含 HTTP 服务器、应用程序服务器和代理服务器,它们是代用品内容服务器。可用性是通过并行性、负载平衡和故障转移支持来完成的。当服务器当机时,业务不会被中断。这可显著提高基础结构的可伸缩性,因为它可明显增加后端的处理能力。
1.想知道当某台web服务器出现宕机或服务停止维护,load balancer是否支持故障转移?
2.metric,系统度量我理解的是监控集群中的服务器状态,说是要部署到要监控的所有服务器上,该怎么部署?只看到部署路径下IBM\edge\lb\ms\script cupload.exe等三个exe文件。
看了半天IBM Knowledge Center,终于把metrc server搞定了,原来是没有配置 用lbkeys命令生成key文件,并拷贝的server机器。现在metrc server可以正常监控server端的机器,并根据cpu和内存使用情况负载均衡,但是“单点故障”的问题怎么解决呢?想了半天,能自定义一个metrc来解决单点故障的问题,于是写了个脚本命名成portlaod.cmd,放在server端metrc server目录的script目录下,脚本如下:
/***************************************************************************/
@echo off
netstat -aon | findstr \"\\<0.0.0.0:80\\>\" | findstr \"LISTENING\" > nul
IF ERRORLEVEL 1 GOTO err
IF ERRORLEVEL 0 GOTO ok
GOTO unknown
:err
echo 100
exit /B 2
:unknown
echo 0
exit /B 3
:ok
echo 0
exit /B 0
/********************************************************************************/
实际就是ihs服务开启时返回0,没开启时返回100。并设置portload 这个metrc的权重最高。load balancer顾问程序根据这个返回值判断,当值为100时不向这台服务器发请求。关机时由于rmi连通不了这台server,返回值就是-1,也不向这台服务器发请求。
收起