环境:
client:windows
192.168.10.126 //物理机,模拟外网用户
director:rhel5.6 x64
WAN:192.168.10.208 //网卡bridged,模拟公网IP
LAN:172.16.0.100 //网卡VMnet5,内网IP
realserver1:rhel5.6 x64,apache
172.16.0.110 //网卡VMnet5,内网IP,apache
realserver2:rhel5.6 x64,apache
172.16.0.120 //网卡VMnet5,内网IP,apache
配置部分:
Director Server的配置,有两种方法:
通过ipvsadm命令行进行配置
通过Redhat提供的工具piranha来配置LVS
注:这里只使用了ipvsadm配置,详细使用参见:http://ixdba.blog.51cto.com/2895551/554799
1、检查环境是否支持ipvs
[root@localhost ~]# modprobe -l | grep ipvs
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko
/lib/modules/2.6.18-238.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko
后期linux版本中在预安装的内核中已将ipvs编译成模块,如果你能在目录/lib/modules/2.*.*-*/kernel/net/ipv4/ipvs中看到ip_vs_*文件,就证明你的系统已经支持ipvs。
2、安装ipvsadm
使用centos5的yum源安装
[root@localhost ~]# yum -y install ipvsadm
查看是否安装成功:
[root@localhost ~]# find / -name ipvsadm
/sbin/ipvsadm
/etc/sysconfig/ipvsadm
/etc/rc.d/init.d/ipvsadm
[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3、配置转发
开启网卡转发功能:
LVS 在 3 种方式下均需要打开 ip forward 功能,这可以配置/etc/sysctl.conf
文件,保证其中有如下一行:
net.ipv4.ip forward = 1
执行:
sysctl -p
可以使配置立即生效,并且重启电脑或 network 服务后,此设置仍然保存。
配置VS服务:
[root@localhost ~]# vim /lvs.sh
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.10.208:80 -s rr
ipvsadm -a -t 192.168.10.208:80 -r 172.16.0.110:80 -m
ipvsadm -a -t 192.168.10.208:80 -r 172.16.0.120:80 -m
注:
注:最好在真实服务器性能相差不大的情况下使用rr转发方式
也可以shell下一条一条的输入,这里为了方便,管理使用脚本;
虚拟服务器IP一定是对外可见的公网IP!!!
4、启动服务
[root@localhost ~]# sh /lvs.sh
查看是否启动成功
[root@localhost ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.10.208:http rr
-> 172.16.0.120:http Masq 1 0 1
-> 172.16.0.110:http Masq 1 0 1
注:
sh /lvs.sh --执行后已经可以提供服务
service ipvsadm save --保存一下否则service ipvsadm stop(重启机器)后使用chkconfig自启动规则会丢失
service ipvsadm start
停止:service ipvsadm stop
重启:service ipvsadm restart
5、开机启动
[root@localhost ~]# chkconfig --level 3 ipvsadm on //推荐
或
[root@localhost ~]# echo "/bin/sh /lvs.sh" >> /etc/rc.local
6、realserver配置
两台realserver按照正常上网方式配置网卡,网关指向director的LAN口IP
7、测试
两台apache服务器分别把index.html内容设置为realserver1和realserver2
client访问director公网IP,会看到在两台realserver间来回切换(窗口中不要一直刷新,注意长连接时间)
查看状态:
[root@localhost ~]# ipvsadm -lcn
IPVS connection entries
pro expire state source virtual destination
TCP 01:59 TIME_WAIT 192.168.10.126:59633 192.168.10.208:80 172.16.0.110:80
TCP 01:50 TIME_WAIT 192.168.10.126:59632 192.168.10.208:80 172.16.0.120:80
(完成)