这个方案中,负载均衡层采用两台服务器做DR,架构lvs+keepalived,其中master DR调度工作,把用户的请求分配到web服务器上,当master DR故障时,backup DR自动切换状态到master,完成负载均衡的工作,mater DR恢复后backup DR又自动切换状态到backup。如果出于经济考虑,可以暂时只用一台服务器做DR。
Web服务器层是真正处理用户请求的,这里初步计划两台real server,DR按照一定的规则把用户的请求分配到real server上,要保证不同的real server有着一致的数据库和web目录。数据库的一致常见的有集群和复制技术,综合考虑,在两台real server之间采用mysql的双主复制来现在real server 可以同时读取和写入数据库,并保证数据库的一致。
这里的共享存储区采用一台NFS服务器,建立共享输出目录,然后两台real server 挂载这个输出目录,实现web目录文件的一致。
这样,则需要5台服务器,再加上VIP地址,则需要6个公网IP地址,对于www.faxingw.cn,VIP是122.224.6.84,用户在浏览器上输入域名,经过DNS服务器解析成122.224.6.84,经过负载均衡调度器,将用户请求分配到real server上,这里计划采用基于直接路由的负载均衡(VS/DR,即Virtual Server via Direct Routing)技术,VS/DR通过改写请求报文的MAC地址,将请求发送到real server,而real server将响应直接返回给客户,是3种负载调度方式中性能最好的,但要求director server与real server必须由一块网卡连在同一物理网段上。
按照上面改过的架构方案在虚拟机上安装测试,给出下面的地址规划
Director server1:192.168.1.198
Director server2:192.168.1.196
Real server1:192.168.1.199
Real server2:192.168.1.197
NFS server1:192.168.1.201
NFS server2:192.168.1.202
VIP:192.168.1.200 二、安装LVS+keepalived软件
LVS是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,主要用于完成用户的请求到达负载调度器后,如何将请求发送到每个real server节点,real server节点如何返回数据给用户。这里我们的操作系统采用centos5.5,该版本内核默认支持LVS功能,也可以通过如下命令检查kernel是否已经支持LVS的IPVS模块:
#modprobe –l |grep ipvs
这里选择安装ipvsadm-1.24版本,我在虚拟机上安装时出错,OpenSSL is not properly installed on your system,系统缺少openssl-devel软件包,我通过配置yum本地源安装,然后yum install openssl-devel,问题解决了,装好了可以通过ipvsadm –help检查安装是否成功,两台director server 都要安装。详细的安装步骤这里就不详细说明了。
Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据layer3,4,5交换机制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而当故障节点恢复正常后,Keepalived又可以自动将此服务器节点重新加入到服务器集群中。这些工作全部自动完成。
这里选择安装的是keepalived-1.1.17.tar.gz,安装过程没有遇到问题,就不介绍了。
同样,安装完成后,可以执行命令:keepalived –help 检查是否安装成功。
三、ipvsadm和keepalived的配置
在direct server上,这里用shell脚本来实现ipvsadm命令行配置
# vi lvsdr.sh
#!/bin/bash
VIP=192.168.1.200
RIP1=192.168.1.199
RIP2=192.168.1.197
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -m -w 1
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -m -w 1
/sbin/ipvsadm
;;
stop)
echo "Close LVS Directorserver"
/sbin/ifconfig eth0:1 down
/sbin/ipvsadm -C
;;
*)
echo "Usage0{start|stop}"
exit 1
esac
在两台Director server上,这个脚本是一样的,给脚本添加开机启动
下面在Director server上配置keepalived,根据安装路径,keepalived的配置文件是/etc/keepalived/keepalived.conf,
! Configuration File for keepalived