封尘网

让学习成为一种习惯!

LVS三种工作模式简单配置过程

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的三种配置都成功实验完成。