手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

搭建LVS负载均衡测试环境

[日期:2014-09-14] 来源:Linux社区  作者:壹頁書 [字体: ]

实现负载均衡有很多种方式,土豪直接F5,性能最好,价格最贵

没钱也可以使用Apache,Nginx 工作在网络的第四层,虽然性能一般,但是很灵活,比如可以将80端口映射到真实服务器的8080端口.

   
还有一种选择LVS ,它工作在网络的第三层,性能较好,非常稳定.但是它不能实现端口的重新映射.因为在网络的第三层,并不清楚端口的信息。

下面的实验搭建了一个LVS负载均衡测试环境,采用DR的方式。

Linux服务器LB群集之LVS-NAT http://www.linuxidc.com/Linux/2013-05/84774.htm

Linux下群集服务之LB集群-LVS-NAT模式 http://www.linuxidc.com/Linux/2012-05/59839.htm

LVS-NAT+ipvsadm实现RHEL 5.7上的服务集群 http://www.linuxidc.com/Linux/2012-04/58936.htm

Linux虚拟服务器LVS-NAT 和 LVS-DR 模型的实现 http://www.linuxidc.com/Linux/2011-09/42934.htm

客户端访问LVS前置机
这个请求如下
源MAC(client mac) 目标MAC(DR mac) 源IP(client IP) 目标IP(DR IP,VIP)

LVS前置机会将报文改写之后转发真实的服务器
改写如下
源MAC(client mac) 目标MAX(真实服务器MAC) 源IP(client IP) 目标IP(DR IP,VIP)

因为真实的服务器将VIP绑定到了环回地址,所以会处理这个请求,并返回响应的报文.
网络层的源目对掉
源MAC(真实服务器MAC) 目标MAC(client mac) 源IP(DR IP,VIP) 目标IP(client IP)

所以LVS DR的本质就是网络层的欺骗。

实验采用VirtualBox虚拟机,并且配置内部网络,关闭SELinux和防火墙


首先,在LVS DR前置机上安装ipvsadm命令
yum install ipvsadm -y

然后配置两台真实服务器(RealServer)的Http服务
yum install httpd -y
service httpd start
chkconfig httpd on
并分别改写/var/www/html/index.html的内容为"real server 1"和"real server 2"

然后在两台真实服务器上执行如下的脚本
vim lvs_real.sh

 #!/bin/bash 
 # description: Config realserver lo and apply noarp 

 SNS_VIP=192.168.16.199
 source /etc/rc.d/init.d/functions
 case "$1" in

 start)
        ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
        /sbin/route add -host $SNS_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
        sysctl -p >/dev/null 2>&1
        echo "RealServer Start OK" 
        ;;

 stop)
        ifconfig lo:0 down
        route del $SNS_VIP >/dev/null 2>&1
        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 "RealServer Stoped" 
        ;;

 *)

        echo "Usage: $0 {start|stop}" 
        exit 1
 esac
 exit 0


最后,在DR前置机上执行如下脚本
vim lvs_dr.sh

 #!/bin/bash
 VIP1=192.168.16.199
 RIP1=192.168.16.3
 RIP2=192.168.16.4

 case "$1" in
 start)
        echo " start LVS of DirectorServer"
        /sbin/ifconfig eth1:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 broadcast $VIP1 up
        /sbin/route add -host $VIP1 dev eth1:0
        echo "1" >/proc/sys/net/ipv4/ip_forward

        /sbin/ipvsadm -C
        /sbin/ipvsadm -A -t $VIP1:80 -s rr
        /sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g -w 1
        /sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g -w 1
        /sbin/ipvsadm
        ;;
 stop)
        echo "close LVS Directorserver"
        echo "0" >/proc/sys/net/ipv4/ip_forward
        /sbin/ipvsadm -C
        /sbin/ifconfig eth1:0 down
        ;;
 *)
        echo "Usage: $0 {start|stop}"
        exit 1
 esac

通过client访问LVS前置服务器,可以看到已经实现了负载均衡的效果。

更多详情见请继续阅读下一页的精彩内容http://www.linuxidc.com/Linux/2014-09/106636p2.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款