LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
官方网站:http://www.linuxvirtualserver.org/
本次试用使用自己的小本,在小本上通过VMware安装3个redhat as 5作为测试环境。其中一台为虚拟主机,另外两台为realServer。
VMware上3台虚拟机安装后,设置网络类型为NAT方式。
网关:192.168.91.2
(通过WMare --> Edit -> Virtual Network Editor,选择VMnet8,设置为静态IP)
DNS:192.168.91.2
分别配置IP为:
192.168.91.10(LVS主机)
192.168.91.11(Real Server 1)
192.168.91.12(Real Server 2)
# uname -r 2.6.18-8.el5 # wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz # ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/ /usr/src/linux # tar -xzvf ipvsadm-1.24.tar.gz # cd ipvsadm-1.24 # make # make install # cp ipvsadm /sbin/
以192.168.91.10(LVS主机)作为LVS的主机,为该主机的网卡配置双IP,其中一个虚拟IP作为LVS的虚拟IP.
192.168.91.9配置为LVS主机的虚拟IP。
LVS SERVER配置
在192.168.91.10LVS虚拟服务器上执行:
# 设置本机默认IP,如果已经设置,可以不能执行
ifconfig eth0 192.168.91.10 netmask 255.255.255.0 broadcast 192.168.91.255 up
# 设置本机第二IP,作为LVS的虚拟IP
ifconfig eth0:0 192.168.91.9 netmask 255.255.255.255 broadcast 192.168.91.9 up
# 打开IP转发开关
echo 1 > /proc/sys/net/ipv4/ip_forward
# 添加虚拟服务器,虚拟IP为192.168.91.9,端口为80,调度算法为:rr
ipvsadm -A -t 192.168.91.9:80 -s rr
# 为虚拟服务器192.168.91.9,添加RealServer,IP为192.168.91.11,指定LVS 的工作模式为直接路由模式
ipvsadm -a -t 192.168.91.9:80 -r 192.168.91.11 -g
# 为虚拟服务器192.168.91.9,添加RealServer,IP为192.168.91.11,指定LVS 的工作模式为直接路由模式
ipvsadm -a -t 192.168.91.9:80 -r 192.168.91.12 -g
# 启动lvs
ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.91.9:http rr
-> 192.168.91.12:http Route 1 0 0
-> 192.168.91.11:http Route 1 0 0
LVS Real Server 配置
在192.168.91.11和192.168.91.11上执行
# 设置 Real Server 虚拟IP路由
ifconfig lo:0 192.168.91.9 netmask 255.255.255.255 broadcast 192.168.91.9 up
route add -host 192.168.91.9 dev lo:0
分别在两台RealServer上安装tomcat
192.168.91.11
192.168.91.12
省了,启动前,把端口修改为80端口
在192.168.91.10/9虚拟服务器上运行查询命令
[root@hadoop00 ~]# ipvsadm -l --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.91.9:http 0 0 0 0 0
-> 192.168.91.12:http 0 0 0 0 0
-> 192.168.91.11:http 0 0 0 0 0
# stop lvs
ifconfig eth0:0 down
/sbin/ipvsadm -C
# stop real server
/sbin/ifconfig lo:0 down
正式应用可以把LVS虚拟服务启动和停止编写为脚步,加入到/etc/init.d/下,加入服务,设置为自动启动。