LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
由于互联网企业都会应用到LVS负载均衡技术,所有在此简单把LVS的三种工作模式作一个简单教程;
LVS三种模式简单配置过程
本次实验在无网络情况下,利用光盘RPM包安装;
系统:Red Hat Enterprise 2.6.32-431.el6.x86_64
虚拟机:Vmware 11.0.0 build-2305329
LVS服务器:ipvsadm-1.26-2.el6.x86_64.rpm
Web服务器:httpd-2.2.15-29.el6_4.x86_64.rpm
一、安装Apache:两台服务器同样安装方法:
[root@redhat ~]# mount /dev/cdrom /mnt
根据依懒情况按下顺序安装:
rpm -ivh /mnt/Packages/apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm
rpm -ivh /mnt/Packages/httpd-tools-2.2.15-29.el6_4.x86_64.rpm
rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm
查看是否成功安装:
[root@redhat ~]# rpm -qa|grep httpd
httpd-tools-2.2.15-29.el6_4.x86_64
httpd-2.2.15-29.el6_4.x86_64
添加到开机自启动:
chkconfig httpd on
启动服务:
service httpd start
检查进程:
[root@apache2 ~]# ps -ef|grep httpd
root 1112 1 0 17:54 ? 00:00:00 /usr/sbin/httpd
apache 1114 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1115 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1116 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1117 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1118 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1119 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1120 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
apache 1121 1112 0 17:55 ? 00:00:00 /usr/sbin/httpd
root 26521 26499 0 19:42 pts/0 00:00:00 grep httpd
添加默认主页文件:
[root@apache01 ~]# echo "this is web_server1" >/var/www/html/index.html
[root@apache02 ~]# echo "this is web_server2" >/var/www/html/index.html
至此,Web服务器简单搭建成功;
二、安装LVS软件(LVS服务器上操作)
rpm -ivh /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm
检查是否已经成功加载到内核中:必须先执行ipvsadm -C 后才能查看到;
[root@LVS_server ~]# ipvsadm -C
[root@LVS_server ~]# lsmod |grep ip_vs
ip_vs 125220 0
libcrc32c 1246 1 ip_vs
ipv6 317340 265 ip_vs
三、LVS—NAT模式
3.1根据上图配置服务器IP地址:
[root@LVS_server ~]# ifconfig eth1 192.168.40.14
[root@LVS_server ~]# ifconfig eth1 10.0.10.14
WEB服务器:
[root@apache01 ~]# ifconfig eth0 10.0.10.10
[root@apache02~]# ifconfig eth0 10.0.10.11
3.2 LVS—NAT服务器脚本:(利用脚本简化工作),主要修改一下这里的IP地址即可;
我把文件保存在这里,方便启动操作;
[root@LVS_server ~]# vi /etc/init.d/lvs_nat
3.3 添加脚本的执行权限:
[root@LVS_server ~]# chmod +x /etc/init.d/lvs_nat
#!/bin/bash
VIP=192.168.40.14
RIP1=10.0.10.10
RIP2=10.0.10.11
case "$1" in
start)
echo "start LVS of DirectorServer NAT"
echo "1" >/proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m
/sbin/ipvsadm
;;
stop)
echo "stop LVS of DirectorServer NAT"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
3.4 启动脚本,开启LVS服务:
[root@LVS_server ~]# /etc/init.d/lvs_nat start
3.5 回到两台Web服务器上,把原来的默认网关删除;然后添加一个默认网关为LVS服务器上的Eth1 IP;
[root@apache01 ~]#route del default
[root@apache01 ~]# route add default gw 10.0.10.14
[root@apache02 ~]#route del default
[root@apache02 ~]# route add default gw 10.0.10.14
3.6 完成后,在客户端(IP地址只要跟LVS服务器上eth0同一个网段即可)上打开LVS的IP地址,即可打开网页;刷新会发现网页的变化;
在LVS服务器上可以查看到连接的IP及目标服务器;
至此,LVS—NAT模式已经配置完成;
四、LVS-TUN模式
实验环境还是上面三台主机,根据拓扑图把之前的环境清理一下,然后修改IP地址;
4.1删除上面实验后的默认网关:
先把原来默认的网关都删除:
route del default
4.2 LVS IP-TUN服务器脚本:(此脚本是LVS服务器上使用)
由于此实验只使用一张网卡,所以把eth1网卡停掉;
[root@LVS_server ~]# ifconfig eth1 down
4.3 添加启动脚本、并加入执行权限;
[root@LVS_server ~]# vi /etc/init.d/lvs_tun
[root@LVS_server ~]# chmod +x /etc/init.d/lvs_tun
#!/bin/bash
ifconfig tunl0 192.168.40.15 netmask 255.255.255.255 up
route add -host 192.168.40.15 dev tunl0
VIP=192.168.40.15
RIP1=192.168.40.10
RIP2=192.168.40.11
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer Tun"
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
/sbin/ipvsadm
;;
stop)
echo "stop LVS of DirectorServer Tun"
/sbin/ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
4.3 LVS-TUN Web服务器端脚本:(此脚本在Web服务器上使用)
[root@apache01 ~]# route del default
[root@apache01 ~]# vi /etc/init.d/lvs_tun
[root@apache01 ~]# chmod +x /etc/init.d/lvs_tun
[root@apache02 ~]# route del default
[root@apache02 ~]# vi /etc/init.d/lvs_tun
[root@apache02 ~]# chmod +x /etc/init.d/lvs_tun
脚本内容:
#!/bin/bash
ifconfig tunl0 192.168.40.15 netmask 255.255.255.255 up
route add -host 192.168.40.15 dev tunl0
VIP=192.168.40.15
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of RealServer Tun"
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
;;
stop)
echo "close LVS of RealServer Tun"
/sbin/ifconfig tunl0 down
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/tunl0/rp_filter
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
4.4 启动脚本
4.5 在客户端上打开LVS上的VIP地址:192.168.40.15即可打开网页,刷新也可以看到网页在变化;
至此,LVS—TUN,IP隧道模式配置成功;
五、LVS—DR模式
5.1 DR模式跟TUN模式很相似;同样要把上面的实验环境清除;把上面的tunl0网卡停掉;此网卡停掉后默认网关会自动消失删除;
[root@LVS_server ~]# ifconfig tunl0 down
[root@apache01 ~]# ifconfig tunl0 down
[root@apache2 ~]# ifconfig tunl0 down
5.2 LVS-DR启动脚本:(在LVS服务器上使用)
[root@LVS_server ~]#vi /etc/init.d/lvs_dr
[root@LVS_server ~]# chmod +x /etc/init.d/lvs_dr
#!/bin/bash
VIP=192.168.40.15
RIP1=192.168.40.10
RIP2=192.168.40.11
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer DR"
/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
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
/sbin/ipvsadm
;;
stop)
echo "stop LVS of DirectorServer DR"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
5.3 LVS-DR We服务器端脚本:(在Web服务器使用)
#!/bin/bash
VIP=192.168.40.15
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of RealServer DR"
/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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS of RealServer DR"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
5.4 启动LVS_DR脚本
5.5 在客户端打开浏览器,打开LVS上的VIP地址192.168.40.15即可打开网页,刷新可看到网页变化;
至此,LVS—DR模式配置成功;
本次实验LVS的三种配置都成功实验完成。