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


LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。

由于互联网企业都会应用到LVS负载均衡技术,所有在此简单把LVS的三种工作模式作一个简单教程;

 LVS三种模式简单配置过程

 
本次实验在无网络情况下,利用光盘RPM包安装;
 
 
  1. 系统:Red Hat Enterprise 2.6.32-431.el6.x86_64 
  2. 虚拟机:Vmware 11.0.0 build-2305329 
  3.  
  4. LVS服务器:ipvsadm-1.26-2.el6.x86_64.rpm         
  5.  
  6. Web服务器:httpd-2.2.15-29.el6_4.x86_64.rpm  
 
一、安装Apache:两台服务器同样安装方法:
 
 
  1. [root@redhat ~]# mount /dev/cdrom /mnt 
  2.  
  3. 根据依懒情况按下顺序安装: 
  4.  
  5. rpm -ivh /mnt/Packages/apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm  
  6. rpm -ivh /mnt/Packages/httpd-tools-2.2.15-29.el6_4.x86_64.rpm  
  7. rpm -ivh /mnt/Packages/httpd-2.2.15-29.el6_4.x86_64.rpm  
 
查看是否成功安装:
 
  1. [root@redhat ~]# rpm -qa|grep httpd 
  2.  
  3. httpd-tools-2.2.15-29.el6_4.x86_64 
  4. httpd-2.2.15-29.el6_4.x86_64 
添加到开机自启动:
 
  1. chkconfig httpd on 
 
启动服务:
 
  1. service httpd start 
检查进程:
 
  1. [root@apache2 ~]# ps -ef|grep httpd 
  2. root       1112      1  0 17:54 ?        00:00:00 /usr/sbin/httpd 
  3. apache     1114   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  4. apache     1115   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  5. apache     1116   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  6. apache     1117   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  7. apache     1118   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  8. apache     1119   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  9. apache     1120   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  10. apache     1121   1112  0 17:55 ?        00:00:00 /usr/sbin/httpd 
  11. root      26521  26499  0 19:42 pts/0    00:00:00 grep httpd 
 
添加默认主页文件:
 
  1. [root@apache01 ~]# echo "this is web_server1" >/var/www/html/index.html 
  2. [root@apache02 ~]# echo "this is web_server2" >/var/www/html/index.html 
 
至此,Web服务器简单搭建成功;
 
二、安装LVS软件(LVS服务器上操作)
 
  1. rpm -ivh /mnt/Packages/ipvsadm-1.26-2.el6.x86_64.rpm  
 
检查是否已经成功加载到内核中:必须先执行ipvsadm -C 后才能查看到;
 
  1. [root@LVS_server ~]# ipvsadm -C 
  2. [root@LVS_server ~]# lsmod |grep ip_vs 
  3. ip_vs                 125220  0  
  4. libcrc32c               1246  1 ip_vs 
  5. 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服务器:
 
  1. [root@apache01 ~]# ifconfig eth0 10.0.10.10 
  2. [root@apache02~]# ifconfig eth0 10.0.10.11 
 
3.2  LVS—NAT服务器脚本:(利用脚本简化工作),主要修改一下这里的IP地址即可;
我把文件保存在这里,方便启动操作;
 
  1. [root@LVS_server ~]# vi /etc/init.d/lvs_nat 
3.3 添加脚本的执行权限:
 
  1. [root@LVS_server ~]# chmod +x /etc/init.d/lvs_nat 
  2.  
  3. #!/bin/bash 
  4. VIP=192.168.40.14 
  5. RIP1=10.0.10.10 
  6. RIP2=10.0.10.11 
  7. case "$1" in 
  8. start) 
  9.            echo "start LVS of DirectorServer NAT" 
  10.            echo "1" >/proc/sys/net/ipv4/ip_forward 
  11.            /sbin/iptables -F 
  12.            /sbin/ipvsadm -C 
  13.            /sbin/ifconfig eth0:0 $VIP netmask 255.255.255.0 up 
  14.            /sbin/ipvsadm -A -t $VIP:80 -s rr 
  15.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -m 
  16.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -m 
  17.            /sbin/ipvsadm 
  18.        ;; 
  19. stop) 
  20.            echo "stop LVS of DirectorServer NAT" 
  21.            echo "0" >/proc/sys/net/ipv4/ip_forward 
  22.            /sbin/ipvsadm -C 
  23.            /sbin/ifconfig eth0:0 down 
  24.            ;; 
  25. *) 
  26.           echo "Usage: $0 {start|stop}" 
  27.           exit 1 
  28. esac 
3.4 启动脚本,开启LVS服务:
 
  1. [root@LVS_server ~]# /etc/init.d/lvs_nat start 
 
3.5 回到两台Web服务器上,把原来的默认网关删除;然后添加一个默认网关为LVS服务器上的Eth1 IP;
 
 
  1. [root@apache01 ~]#route del default 
  2. [root@apache01 ~]# route add default gw 10.0.10.14 
  3.  
  4. [root@apache02 ~]#route del default 
  5. [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删除上面实验后的默认网关:
先把原来默认的网关都删除:
 
  1. route del default 
 
4.2 LVS IP-TUN服务器脚本:(此脚本是LVS服务器上使用)
由于此实验只使用一张网卡,所以把eth1网卡停掉;
 
  1. [root@LVS_server ~]# ifconfig eth1 down 
4.3 添加启动脚本、并加入执行权限;
 
  1. [root@LVS_server ~]# vi /etc/init.d/lvs_tun 
  2. [root@LVS_server ~]# chmod +x /etc/init.d/lvs_tun  
  3. #!/bin/bash 
  4. ifconfig tunl0 192.168.40.15 netmask 255.255.255.255 up 
  5. route add -host 192.168.40.15 dev tunl0 
  6.  
  7. VIP=192.168.40.15 
  8. RIP1=192.168.40.10 
  9. RIP2=192.168.40.11 
  10. /etc/rc.d/init.d/functions 
  11. case "$1" in 
  12. start) 
  13.            echo "start LVS of DirectorServer Tun" 
  14.            /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up 
  15.            /sbin/route add -host $VIP dev tunl0 
  16.            /sbin/ipvsadm -C 
  17.            /sbin/ipvsadm -A -t $VIP:80 -s rr 
  18.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i 
  19.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i 
  20.            /sbin/ipvsadm 
  21.        ;; 
  22. stop) 
  23.            echo "stop LVS of DirectorServer Tun" 
  24.            /sbin/ifconfig tunl0 down 
  25.            /sbin/ipvsadm -C 
  26.            ;; 
  27. *) 
  28.           echo "Usage: $0 {start|stop}" 
  29.           exit 1 
  30. esac 
 
4.3 LVS-TUN  Web服务器端脚本:(此脚本在Web服务器上使用)
 
  1. [root@apache01 ~]# route del default 
  2. [root@apache01 ~]# vi /etc/init.d/lvs_tun 
  3. [root@apache01 ~]# chmod +x /etc/init.d/lvs_tun  
  4.  
  5. [root@apache02 ~]# route del default 
  6. [root@apache02 ~]# vi /etc/init.d/lvs_tun 
  7. [root@apache02 ~]# chmod +x /etc/init.d/lvs_tun  
脚本内容:
 
  1. #!/bin/bash 
  2.  
  3. ifconfig tunl0 192.168.40.15 netmask 255.255.255.255 up 
  4. route add -host 192.168.40.15 dev tunl0 
  5. VIP=192.168.40.15 
  6. /etc/rc.d/init.d/functions 
  7. case "$1" in 
  8. start) 
  9.            echo "start LVS of RealServer Tun" 
  10.            /sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up 
  11.            /sbin/route add -host $VIP dev tunl0 
  12.            echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore 
  13.            echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce 
  14.            echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  15.            echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce 
  16.            echo "0" >/proc/sys/net/ipv4/conf/tunl0/rp_filter                #如果不成功都因为这个没有修改 
  17.        ;; 
  18. stop) 
  19.            echo "close LVS of RealServer Tun" 
  20.            /sbin/ifconfig tunl0 down 
  21.            echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore 
  22.            echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_announce 
  23.            echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  24.            echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 
  25.            echo "1" >/proc/sys/net/ipv4/conf/tunl0/rp_filter 
  26.            ;; 
  27. *) 
  28.           echo "Usage: $0 {start|stop}" 
  29.           exit 1 
  30. esac     
 
4.4 启动脚本
 
 
4.5 在客户端上打开LVS上的VIP地址:192.168.40.15即可打开网页,刷新也可以看到网页在变化;
 
至此,LVS—TUN,IP隧道模式配置成功;
 
 
五、LVS—DR模式
 
 
5.1 DR模式跟TUN模式很相似;同样要把上面的实验环境清除;把上面的tunl0网卡停掉;此网卡停掉后默认网关会自动消失删除;
 
  1. [root@LVS_server ~]# ifconfig tunl0 down 
  2. [root@apache01 ~]# ifconfig tunl0 down 
  3. [root@apache2 ~]# ifconfig tunl0 down 
5.2 LVS-DR启动脚本:(在LVS服务器上使用)
 
  1. [root@LVS_server ~]#vi /etc/init.d/lvs_dr 
  2. [root@LVS_server ~]# chmod +x /etc/init.d/lvs_dr  
  3. #!/bin/bash 
  4. VIP=192.168.40.15 
  5. RIP1=192.168.40.10 
  6. RIP2=192.168.40.11 
  7. /etc/rc.d/init.d/functions 
  8. case "$1" in 
  9. start) 
  10.            echo "start LVS of DirectorServer DR" 
  11.            /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up 
  12.            /sbin/route add -host $VIP dev eth0:0 
  13.            echo "1" >/proc/sys/net/ipv4/ip_forward 
  14.            /sbin/ipvsadm -C 
  15.            /sbin/ipvsadm -A -t $VIP:80 -s rr  
  16.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g 
  17.            /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g 
  18.            /sbin/ipvsadm 
  19.        ;; 
  20. stop) 
  21.            echo "stop LVS of DirectorServer DR" 
  22.            echo "0" >/proc/sys/net/ipv4/ip_forward 
  23.            /sbin/ipvsadm -C 
  24.            /sbin/ifconfig eth0:0 down 
  25.            ;; 
  26. *) 
  27.           echo "Usage: $0 {start|stop}" 
  28.           exit 1 
  29. esac 
  30. exit 0 
5.3 LVS-DR  We服务器端脚本:(在Web服务器使用)
 
 
  1. #!/bin/bash 
  2. VIP=192.168.40.15 
  3. /etc/rc.d/init.d/functions 
  4. case "$1" in 
  5. start) 
  6.            echo "start LVS of RealServer DR" 
  7.            /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up 
  8.            /sbin/route add -host $VIP dev lo:0  
  9.            echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  10.            echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  11.            echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  12.            echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce  
  13.        ;; 
  14. stop) 
  15.            /sbin/ifconfig lo:0 down 
  16.            echo "close LVS of RealServer DR" 
  17.            echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore 
  18.            echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce 
  19.            echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore 
  20.            echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce 
  21.            ;; 
  22.   
  23. *) 
  24.           echo "Usage: $0 {start|stop}" 
  25.           exit 1 
  26. esac 
  27.   
  28. exit 0 
5.4 启动LVS_DR脚本
 
 
 
 
5.5 在客户端打开浏览器,打开LVS上的VIP地址192.168.40.15即可打开网页,刷新可看到网页变化;
 
 
至此,LVS—DR模式配置成功;
 
本次实验LVS的三种配置都成功实验完成。