• 每天进步一点点!

文章分类

推荐网站

常用手册

LVS之直接路由(DR)【原创】

<<返回

2013-12-15 02:34:13

跟VS/TUN 方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群 系统的吞吐量。

 

VS/DR的体系结构如图 所示:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过高速的交换机或者HUB相连。VIP地址为调度器和服务器组共享,调度 器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只 是用于处理目标地址为VIP的网络请求。

 

 

  • LVS-DR的网络拓扑图

 


 

由拓扑图可知,IP-TUN和DR的区别只在于:LVS的tunl0变为了eth0:0,Real Server的tunl0变成了回环地址的lo。

 

  • 网络环境准备

准备五台计算机,一台模拟外网的互联网用户(可以是Linux也可以是Windows),一台模拟LVS服务器(必须是Linux),另三台模拟真实的服务器(Linux)。我们这里使用VMWare安装CentOS5.6作为LVS服务器,另外用VMWare再clone三台CentOS5.6作为Real Server。用WMWare安装windows(我这里用的是windows2003)作为外网的互联网用户,做实验时,请将防火墙关掉。

  • 克隆三台RealServer

在CentOS5.6关机状态下,进行克隆。右击VM->Manage->Clone->Next....

这里我将3个虚拟机命名为:CentOS5.6.11,CentOS5.6.12,CentOS5.6.13

LVS的负载均衡需要用到ipvsadm,这里我们在CentOS5.6上用yum安装该软件

yum install ipvsadm
  • 设置网卡的连接方式

这里LVS只需要一块网卡,所以将所有计算机的网卡都设置为:vmnet1。

 

  • 配置IP地址

windows2003

ip:8.8.8.200 netmask:255.255.255.0

 

CentOS5.6

ifconfig eth0 8.8.8.10 netmask 255.255.255.0

CentOS5.6.1

ifconfig eth0 8.8.8.11 netmask 255.255.255.0

CentOS5.6.2

ifconfig eth0 8.8.8.12 netmask 255.255.255.0

CentOS5.6.3

ifconfig eth0 8.8.8.13 netmask 255.255.255.0

因为这里都是外网IP,所以不需要网关

 

以上的配置和IP-TUN相同,从下面开始配置有所变化

CentOS5.6 配置IP地址

ifconfig eth0:0 8.8.8.100 netmask 255.255.255.255


 

CentOS5.6 添加路由表,并查看是否添加成功

route add -host 8.8.8.100 dev eth0:0
route -n

 

 

说明:在一个计算机上的两个网卡不能属于同一网段,这里tunl0的子网掩码是255.255.255.255,可以将8.8.8.100划分到和其他ip地址为8.8.8.*并且子网掩码为255.255.255.0的不同网段,因为他们的子网掩码和IP地址相与得到的结果不同,前者是8.8.8.100,而后者是8.8.8.0。

在每台真实服务器(Real Server)上做如下相同操作

在CentOS5.6.1,CentOS5.6.2,CentOS5.6.3都输入下面命令

ifconfig lo 8.8.8.100 netmask 255.255.255.255
route add -host 8.8.8.100 dev lo

 

 

在每台真实服务器(Real Server)上都做arp忽略和arp宣告操作

在CentOS5.6.1,CentOS5.6.2,CentOS5.6.3都输入下面命令

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

 

CentOS5.6(LVS)设置ipvsadm

#清除之前的调度转换表
ipvsadm -C
 
#增加一个带有调度算法的转换表,-A增加 t是指tcp,-s用于指明调度算法
ipvsdam -At 8.8.8.100:80 -s rr
 
#增加要调度的真实服务器(RealServer)-r指真实服务器(Real),-m之Nat模式 -g指dr模式 -i指ip隧道模式
ipvsadm -at 8.8.8.100:80 -r 8.8.8.11:80 -g
ipvsadm -at 8.8.8.100:80 -r 8.8.8.12:80 -g
ipvsadm -at 8.8.8.100:80 -r 8.8.8.11:80 -g

用下面命令查看ipvsadm是否设置成功

ipvsadm -L -n

如果成功结果如图所示

 


 

  • 测试是否配置成功

开启CentOS5.6.11,CentOS5.6.12,CentOS5.6.13的apache(CentOS5.6不需要启动apache),在每服务器的网站的根目录都添加一个index.html,内容分别为8.8.8.11,8.8.8.12,8.8.8.13(在真实环境中每台真实服务器的内容是一样的,这里为了看到NAT的轮询效果,把他们的内容设置为每天服务器的IP地址),在windows2003上,通过浏览器访问8.8.8.100,刷新几次,如果配置成功,则网页上会交替显示:8.8.8.11,8.8.8.12,8.8.8.13。

 

  • DR模式的优缺点:

跟VS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数据可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。

 

跟VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上。

 

VS/DR中的调度器上的网卡不需要支持IP隧道的协议,因此有更普遍的用途

文章评论

  • 暂无评论

发表评论

昵称:

内容:

发表评论