Chinaunix首页 | 论坛 | 博客
  • 博客访问: 189528
  • 博文数量: 77
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 45
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-25 10:50
文章分类

全部博文(77)

文章存档

2018年(1)

2017年(3)

2016年(4)

2015年(4)

2014年(16)

2013年(7)

2012年(20)

2011年(22)

分类: 系统运维

2013-09-12 11:41:21

本文转载自:  
我们都知道LVS有LVS-DR,LVS-NAT,LVS-TUN三种模式,其中DR模式意为Direct Routing(直接路由),是调度器与实际服务器都有一块网卡连在同一物理网段上的情况。本文主要对LVS/DR模式原理进行了阐述,另外还有一篇,给有相关疑问的朋友们做个参考。

LVS-DR工作原理详解

为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构:

LVS-DR工作原理

我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包、数据帧的走向和转换过程。

官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。

实例场景设备清单:

实例场景设备清单

说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。

① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:

client向目标vip发出请求

② 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应用实例如下:

  1. 英国国家JANET Cache Service(wwwcache.ja.net)是为英国150所以上的大学提供Web Cache服务。他们用28个结点的LVS集群代替了原有现50多台相互独立的Cache服务器,用他们的话说现在速度就跟夏天一样,因为夏天是放假期间没有很多人使用网络。
  2. Linux的门户站点()用LVS将很多台VA Linux SMP服务器组成高性能的WEB服务,已使用将近一年。
  3. SourceForge(sourceforge.net)是在全球范围内为开发源码项目提供WEB、FTP、Mailing List和CVS等服务,他们也使用LVS将负载调度到十几台机器上。
  4. 世界上最大的PC制造商之一采用了两个LVS集群系统,一个在美洲,一个在欧洲,用于网上直销系统。
  5. 以RealPlayer提供音频视频服务而闻名的Real公司()使用由20台服务器组成的LVS集群,为其全球用户提供音频视频服务。在2000年3月时,整个集群系统已收到平均每秒20,000个连接的请求流。
  6. NetWalk()用多台服务器构造LVS系统,提供1024个虚拟服务,其中本项目的一个美国镜像站点()。
  7. RedHat()从其6.1发行版起已经包含LVS代码,他们开发了一个LVS集群管理工具叫Piranha,用于控制LVS集群,并提供了一个图形化的配置界面。
  8. VA Linux()向客户提供基于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系统的实际网络拓扑图  图  采用LVS系统的实际网络拓扑图

根据上述的网路配置和拓扑,对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 1

2.配置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服务器已经成功运行。


 
阅读(1081) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~