分类: 系统运维
2013-09-12 11:41:21
本文转载自:
我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。本文主要对LVS/DR模式原理进行了阐述,另外还有一篇,给有相关疑问的朋友们做个参考。
LVS-DR工作原理详解
为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构:
我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包、数据帧的走向和转换过程。
官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。
实例场景设备清单:
说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。
① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:
② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:
③ realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:
④ 如果client与VS同一网段,那么client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。
以下转载自:
LVS项目从成立到现在为止,受到不少关注,LVS集群系统已被应用于很多重负载的站点。到目前为止,该系统已在美、英、德、澳等国的几十个站点上正式使用。目前,一些大型LVS应用实例如下:
安装LVS和配置LVS的工作比较繁杂,读者在配置的过程中需要非常细心和耐心。在本节我们将对其进行详细地介绍。主要包括如下几个核心步骤:
1.获取支持LVS的内核源代码
如果读者需要使用LVS,需要下载2.4.23以后版本的内核源代码。下载地址为。目前主流的Linux内核已经支持LVS,只需要直接使用,不需要进行内核的下载和更新工作。
2.用户配置工具ipvsadm
该软件的下载地址为:。
3.调整内核配置选项
读者在内核配置时应该对下列必选项(用*号表示)进行检查,如果某些选项的设置不正确,将有可能影响LVS的正常工作和使用。在查看这些选项之前,用户需要使用make menuconfig命令,进入Networking options选项进行查看:
Networking options ---> <*> Packet socket <*> Netlink device emulation [*] TCP/IP networking [*] IP: advanced router [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration ---> <*> Connection tracking (required for masq/NAT) <*> IP tables support (required for filtering/masq/NAT) <*> Full NAT <*> MASQUERADE target support IP: Virtual Server Configuration ---> <*> virtual server support (EXPERIMENTAL)IPVS connection table size (the Nth power of 2)--- IPVS scheduler round-robin scheduling weighted round-robin scheduling least-connection scheduling weighted least-connection scheduling locality-based least-connection scheduling locality-based least-connection with replication scheduling destination hashing scheduling shortest expected delay scheduling never queue scheduling
配置和使用LVS
在安装好LVS之后,就可以配置和使用LVS了,在本节我们将以一个具体的例子来对其进行讲解。图2为一个采用LVS系统的实际网络拓扑图。它基于NAT机制,具体的配置如下:
一台对外服务的超级服务器:它部署了LVS,也称为balancer或者director,主要功能为负载均衡和任务调度,其外部IP地址为:210.77.132.8,内部IP地址为:172.168.10.8。外部用户可以通过路由器(IP地址为:210.77.132.1)访问它;
两台内部的服务器:它们为实际的工作机器,通过前述的服务器对其进行调度。一台为RS1,其内部IP地址为:172.168.10.9;另一台为RS2,其内部IP地址为:172.168.10.10。
根据上述的网路配置和拓扑,对LVS的配置如下:
1.配置LVS的超级服务器(称为load balancer或者director)
运行如下命令:
//配置重定向 #echo "1" >/proc/sys/net/ipv4/ip_forward #echo "0" >/proc/sys/net/ipv4/conf/all/send_redirects #echo "0" >/proc/sys/net/ipv4/conf/default/send_redirects #echo "0" >/proc/sys/net/ipv4/conf/eth0/send_redirects #echo "0" >/proc/sys/net/ipv4/conf/eth1/send_redirects //清除ipvsadm表 #/sbin/ipvsadm -C //使用ipvsadm安装LVS服务 #add http to VIP with rr scheduling #/sbin/ipvsadm -A -t 210.77.132.8:80 -s rr //增加第一台内部服务器RS1 #forward http to realserver 172.168.10.9 using LVS-NAT (-m), with weight=1 /sbin/ipvsadm -a -t 210.77.132.8:80 -r 172.168.10.9:80 -m -w 1 增加第二台内部服务器RS2 #forward http to realserver 172.168.10.10 using LVS-NAT (-m), with weight=1 /sbin/ipvsadm -a -t 210.77.132.8:80 -r 172.168.10.10:80 -m -w 12.配置LVS中的内部服务器
在172.168.10.9(RS1)和172.168.10.9(RS2)上分别将其网关设置为172.168.10.8,并分别启动apache服务。在客户端使用浏览器多次访问:,然后再210.77.132.8上运行ipvsadm命令,应该有类似下面的输出:
IP Virtual Server version 1.0.12 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 210.77.132.8:http rr -> 172.168.10.9:http Masq 1 0 33 -> 172.168.10.10:http Masq 1 0 33从上面的结果可以看出,我们配置的LVS服务器已经成功运行。