第一部分: DR模式配置

OS: CentOS 内核:2.6.32
Server1: 10.253.81.14 (负载服务器)
虚拟服务IP: 10.253.81.12
Realserver1: 10.253.81.11 (集群服务器)
Realserver2: 10.253.81.13 (集群服务器)
实验目的:
在负载服务器上,配置LVS(DR模式),做web服务器的集群。实现最终用户访问虚拟IP,负载服务器,将请求分发到集群下的服务器,由集群服务器轮流提供web服务。
CentOS的内核版本已经集成了ipvsadm功能模块,所以不需要安装,直接使用即可。
一、负载服务器
安装ipvsadm
yum install ipvsadm*
安装完成后可以运行ipvsadm查看lvs状态
编辑一个shell文件,执行后,即启用LVS功能。当然,你也可以手动设置
vi /tmp/lvs.sh
#!/bin/bash
vip=10.253.81.14
rs1=10.253.81.11
rs2=10.253.81.13
gw=10.253.81.1
#set virttual ip address
/sbin/ifconfig eth0:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip dev eth0:0
echo 1 > /proc/sys/net/ipv4/ip_forward
#clear ipvs tables
/sbin/ipvsadm -C
#set LVS  Server
/sbin/ipvsadm -A -t $vip:80 -s rr
/sbin/ipvsadm -a -t $vip:80 -r $rs1:80 -g
/sbin/ipvsadm -a -t $vip:80 -r $rs2:80 -g
#run lvs
/sbin/ipvsadm因为此实验本负载服务器也提供web服务,所以要在/var/www/html下建立一个测试文件 index.html,然后service httpd start 启动http服务。
二、集群服务器
所有集群服务器忽略ARP回应,在每台群服务器上都要进行如下设置,执行以下脚本即可
vi /tmp/lvs.sh
#!/bin/bash
vip=10.253.81.14
/sbin/ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
/sbin/route add -host $vip dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
在 /var/www/html 下新建立一个index.html测试文件,然后 service httpd start启动http服务。
三、测试
在客户端反复访问:10.253.81.14 如果能轮流显示出 10.253.81.11和10.253.81.13的http测试文件,即LVS(DR模式)配置完成。
四、设置开机自动启动LVS
编写开机自动运行脚本
vi /etc/rc.d/init.d/lvs
#!/bin/sh
#
# lvs      Start lvs
#
# chkconfig: 2345 08 92
# description:  Starts, stops and saves lvs
#
SNS_VIP=10.253.81.14
SNS_RIP1=10.253.81.11
SNS_RIP2=10.253.81.13

 . /etc/rc.d/init.d/functions

#logger $0 called with $1
retval=0
start()
{
#set squid vip
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
/sbin/route add -host $SNS_VIP dev eth0:0
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $SNS_VIP:80 -s rr
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g
touch /var/lock/subsys/ipvsadm > /dev/null 2 >&1
/sbin/ipvsadm
echo "ipvsadm started"
}
stop()
{
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
route del -host $SNS_VIP dev eth0:0
ifconfig eth0:0 down
rm -rf /var/lock/subsys/ipvsadm > /dev/null 2 >&1
echo "ipvsadm stoped"
}
status()
{
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
else
echo "ipvsadm OK"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;

*)
echo $"Usage: $0 {start|stop|status}"
retval=1
esac
 
exit $retval
 

 

用chkconfig命令添加开机自动启动

chkconfig --add lvs
chkconfig --level 35 lvs on
[root@linux2 ~]# chkconfig |grep lvs
lvs             0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@linux2 ~]#
用service启动和停止lvs
[root@linux2 ~]# service lvs start
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.253.81.14:http rr
  -> 10.253.81.11:http            Route   1      0          0
  -> 10.253.81.13:http            Route   1      0          0
ipvsadm started
[root@linux2 ~]# service lvs stop
ipvsadm stoped
[root@linux2 ~]# service lvs status
ipvsadm stoped
[root@linux2 ~]#