| VB 源码 | VC 源码 | ASP源码 | JSP源码 | PHP源码 | CGI源码 | FLASH源码 | 素材模板 | C 源程序 | 站长工具 | 站长教程 |

安全防范

木马病毒
黑客技术
系统安全
防火墙
安全防范

本类阅读TOP10

·双网卡共享上网解析
·代理服务器使用祥解
·在Windows XP中共享上网
·常用端口对照详解
·局域网共享资源安全防护大全
·为什么局域网中机器PING通却不能上网?
·最新奇迹私服复制漏洞大全(含98c)
·在家远程控制公司的局域网电脑
·远程破OICQ密码给工具QQExplorer ver 1.25介绍
·技巧:多种途径访问局域网中的计算机

站内搜索

虚拟服务器解决方案

    Linux Virtual Server,简称LVS。是由中国一个Linux程序员发起的开发项目计划,其实现目标是创建一个具有良好的扩展性、高可靠性、高性能和高可用性的,基于Linux系统的服务器集群。

 

1.LVS系统结构与特点


使用LVS架设的服务器集群系统从体系结构上看是透明的,最终用户只感觉到一个虚拟服务器.物理服务器之间可以通过高速的LAN或分布在各地的WAN相连。最前端是负载均衡器,它负责将各种服务请求分发给后面的物理服务器,让整个集群表现得象一个服务于同一IP地址的虚拟服务器。

LVS集群系统具有良好的可扩展性和高可用性。

可扩展性是指,LVS集群建立后,可以很容易地根据实际的需要增加或减少物理服务器。而高可用性是指当检测到服务器节点或服务进程出错、失效时,集群系统能够自动进行适当的重新调整系统。

<cente>2.LVS是如何工作的


Linux Virtual Server的主要是在负载均衡器上实现的,负载均衡器是一台加了LVS Patch的2.2.x版内核的Linux系统。LVS Patch可以通过重新编译内核的方法加入内核,也可以当作一个动态的模块插入现在的内核中。

负载均衡器可以运行在以下三种模式下中的一种或几种: 1)Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器;2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技术实现虚拟服务器;3)Virtual Server via Direct Routing(VS-DR):用直接路由技术实现虚拟服务器。

另外,还需要根据LVS应用对物理服务器进行恰当的配置。

以下将分别讲述一下三种模式的工作原理和优缺点。

2.1.Virtual server via NAT(VS-NAT)

Virtual Server via NAT方法的最大优点是集群中的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internet的保留私有地址,只有负载均衡器需要一个合法的IP地址。

这种实现方法的最大的缺点是扩展性有限。当服务器节点(普通PC服务器)数据增长到20个或更多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过负载均衡器再生。假使TCP包的平均长度是536字节的话,平均包再生延迟时间大约为60us(在Pentium处理器上计算的,采用更快的处理器将使得这个延迟时间变短),负载均衡器的最大容许能力为8.93M/s,假定每台物理服务器的平台容许能力为400K/s来计算,负责均衡器能为22台物理服务器计算。

Virtual Server via NAT能够满足许多服务器的服务性能需求。即使是是负载均衡器成为整个系统的瓶颈,如果是这样也有两种方法来解决它。一种是混合处理,另一种是采用Virtual Server via IP tunneling或Virtual Server via direct routing。如果采用混合处理的方法,将需要许多同属单一的RR DNS域。你采用Virtual Server via IP tunneling或Virtual Server via direct routing以获得更好的可扩展性。也可以嵌套使用负载均衡器,在最前端的是VS-Tunneling或VS-Drouting的负载均衡器,然后后面采用VS-NAT的负载均衡器。

2.2.Virtual server via IP tunneling(VS-TUN)

采用VS-NAT方式,请求与应答包都需要经过负载均衡器,那么当服务器节点增长到20个或更多时,这个负载均衡器就可能成为新的瓶颈。我们发现,许多Internet服务(例如WEB服务器)的请求包很短小,而应答包通常很大。

而使用VS-TUN方式的话,负载均衡器只负责将请求包分发给物理服务器,而物理服务器将应答包直接发给用户。所以,负载均衡器能处理很巨大的请求量,这种方式,一台负载均衡能为超过100台的物理服务器服务,负载均衡器不再是系统的瓶颈。使用VS-TUN方式,如果你的负载均衡器拥有100M的全双工网卡的话,就能使得整个Virtual Server能达到1G的吞吐量。

IP tunneling(IP隧道)能够用于架构一个高性能的virtual server,非常适合构建virtual proxy server,因为当代理服务器收到了请求,能够让最终用户直接与服务器联系。

但是,这种方式需要所有的服务器支持"IP Tunneling"(IP Encapsulation)协议,我仅在Linux系统上实现了这个,如果你能让其它操作系统支持,还在探索之中。

2.3.Virtual Server via Direct Routing(VS-DR)

就象VS-TUN一下,在VS-DR方式下,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。这种方式能够大大提高Virtual Server的可扩展性。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,但它要求负载均衡器的网卡必须与物理网卡在一个物理段上。

而且VS-DR模式,可以使用大多数操作系统做为物理服务器,其中包括:Linux 2.0.36、2.2.9、2.2.10、2.2.12;Solaris 2.5.1、2.6、2.7;FreeBSD 3.1、3.2、3.3;NT4.0无需打补丁;IRIX 6.5;HPUX11等

 


3.安装配置LVS


LVS的安装配置主要可以分成以下三个步骤:
1) 下载LVS软件;
2) 安装、配置负载均衡器;
3) 安装、配置物理服务器;

3.1. 安装前的准备

1).下载LVS软件:
大家可以到LVS的主页(http://www.linuxvirtualserver.org),选择“Software”链接,选取最新版的补丁包(tar包)下载。这个包里包含了内核补丁和源程序。

2).安装的指导思想

如果你选用了VS-NAT模式的话,则可以使用所有支持TCP/IP协议的操作系统构建的机器作物理服务器,并且无须做任何修改。

如果你选用了VS-TUN模式的话,则选择Linux作物理服务器的操作系统,并根据后面的介绍做相应的设置。

如果你选用了VS-DR模式的话,则可以选择大多数操作系统(如上节所述)作物理服务器,并根据后面的介绍做相应的设置。

3).各种操作系统作物理服务器的要点详解

a)Linux 2.0.36
这种操作系统无需做任何修改,就可以运行在VS-NAT、VS-Tun、VS-DR三种模式下。

b)Linux 2.2.x

无需任何修改就可运行VS-NAT模式。而使用VS-DR和VS-Tun两种模式可能会引起ARP问题。这种情况
就必须:¨ 为2.2.x内核打补丁

· Stephen WillIams的补丁包:
你可以在http://www.linuxvirtualserver.org/sdw_fullarpfix.patch获取,它的原理十分简单:让物理服务器不响应对虚拟IP的ARP请求。

· Julian Anastasov的补丁包:
你可以在http://www.linuxvirtualserver.org/arp_invisible-2213-2.diff处获取,然后用以下方法使其生效:
echo 1 > /proc/sys/net/ipv4/conf/<interface_name>/arp_invisible

¨ 新添一块网卡承载虚拟IP地址:
你可以选择一块ISA网卡或廉价的PCI网卡来用于这个功能。你可以将这个接口的ARP功能关闭。

¨ 将物理服务器放置于与虚拟IP地址不同的网络上,并且确认客户端无法直接路由到物理服务器所在网段。这种方法需要在负载均衡器上有两块网卡象防火墙一样工作。

¨ 在客户端或路由器将虚拟IP地址与负载均衡器的物理MAC地址绑定。

¨ 使用IPCHINA重写每一个进入的包,将其从lo接口送入。

c)其它操作系统
如果是VS-NAT的话,无需修改。如果是VS-DR的话,需要采取一些相应的配置方法设置物理服务器的IP地址,使其拥有LVS的虚拟IP地址。用其它操作系统的话不能使用VS-Tun方法。

4).准备硬件环境
构建服务器集群系统,至少需要3台机器,1台用于负载均衡器,2台用于物理服务器。少于这个数字的话就没有意义了。

负载均衡器:运行在打了补丁的2.2.x核心Linux系统。

物理服务器:
VS-NAT:任何机器、任何操作系统,运行Internet网络服务,如 HTTP、FTP、Telnet、SMTP、NNTP、DNS等。
VS-TUN:任何机器、支持IP隧道的操作系统(迄今为止仅有Linux)
VS-DR:任何机器、大多操作系统。

3.2. 理解LVS的相关术语

1).ipvsadm
ipvsadm是LVS的一个用户界面。在负载均衡器上编译、安装ipvsadm:
ipvsadm sets

2).调度算法
LVS的负载均衡器有以下几种调度规则:
Round-robin,简称rr,weighted Round-robin,简称wrr,每个新的连接被轮流指派到每个物理服务器。
Least-connected,简称lc,weighted Least-connected,简称wlc,每个新的连接被分配到负担最小的服务器。
Persistent client connection,简称pcc,(持续的客户端连接,内核2.2.10版以后才支持)。所有来自同一个IP的客户端将一直连接到同一个物理服务器。超时时间被设置为360秒。Pcc是为https和cookie服务设置的。在这处调度规则下,第一次连接后,所有以后来自相同客户端的连接(包括来自其它端口)将会发送到相同的物理服务器。但这也会带来一个问题,大约有25%的Internet可能具有相同的IP地址(AOL的
客户是通过位于美国弗吉尼亚洲的一台服务器连入Internet的),这种情况下只要有一个AOL的客户连接到一个物理服务器上,那么所有来自AOL的客户连接将都被连到这一台物理服务器上。这将多么可怕呀!

3).Persistent port connection调度算法
在内核2.2.12版以后,pcc功能已从一个调度算法(你可以选择不同的调度算法:rr、wrr、lc、wlc、pcc)演变成为了一个开关选项(你可以让rr、 wrr、lc、wlc具备pcc的属性)。在设置时,如果你没有选择调度算法时,ipvsadm将默认为wlc算法。

在Persistent port connection(ppc)算法下,连接的指派是基于端口的,例如,来自相同终端的80端口与443端口的请求,将被分配到不同的物理服务器上。
不幸的是,如果你需要在的网站上采用cookies时将出问题,因为http是使用80端口,然而cookies需要使用443端口,这种方法下,很可能会出现cookies不正常的情况。

3.3. 配置实例

1).例一:https only
a)在lvs_dr.conf 文件写入:
SERVICE=t https ppc 192.168.1.1
b)Ipvsadm设置:
IP Virtual Server version 0.9.4 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP ssl.mack.net:https wlc persistent 360
-> di.mack.net:https Route 1 0 0

2).例二:All ports sticky,超时为30分,wrr调度算法
a)在lvs_dr.conf 文件写入:
SERVICE=t 0 wrr ppc -t 1800 192.168.1.1
#ppc persistent connection, timeout 1800 sec
/sbin/ipvsadm -A -t 192.168.1.110:0 -s wrr -p 1800
echo "adding service 0 to realserver 192.168.1.1 using connection
(接上行) type dr weight 1"
/sbin/ipvsadm -a -t 192.168.1.110:0 -R 192.168.1.1 -g -w 1
b)Ipvsadm设置:
# ipvsadm
IP Virtual Server version 0.9.4 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP ssl.mack.net:https wrr persistent 1800
-> di.mack.net:https Route 1 0 0

3.4. 配置方法

1).准备
用配置脚本*.conf作为输入产生rc.lvs脚本,然后放置在/etc/init.d或/etc/rc.d目录下。

早期版本的配置脚本可以运行在任何机器上。然而现在的配置脚本,针对不同的内核版本是有些不同的。你必须在负载均衡器上运行、检测内核版本。将在负载均衡器上的配置文件和目录,通过nfs输出这个
目录到物理服务器上以供配置需要。 必须先在负载均衡器上运行脚本rc.lvs,然后在物理服务器上运行。

根据你选择的LVS工作模式(VS-NAT、VS-Tun、VS-DR)选择适当的conf文件模板(lvs_nat.conf、
lvs_tun.conf、lvs_dr.conf),然后根据实际情况修改IP地址与服务。在缺省状态下只配置了telnet服务。
telnet服务能够很方便地用于测试:当客户机telnet登录时,根据提示符就可以知道登录到的是哪一台物理
服务器。

你可以编辑conf配置文件来增加其它的服务。在配置文件中提供了集群内部的IP地址建议值
(192.168.1.x/24、10.1.1.x/24)。

在配置文件中,你可以使用名称(如telnet)或端口(如23)来标识服务。使用名称时要注意,须与
/etc/services中匹配。/etc/services文件内容如下所示:
ssh 22/tcp
domain 53/tcp nameserver dns #the string "dns" needs to be added here
domain 53/tcp nameserver dns #and here
https 443/tcp
https 443/udp

在多种情况下,一台机器常需要多个IP地址,你可以使用IP别名(内核支持的可选项,一般情况下已含在内核中)来为一块网卡指定多个IP地址。

2).运行配置脚本
$ ./configure.pl lvs_nat.conf

这将产生一个rc.lvs_xxx脚本(例如:rc.lvs_nat、rc.lvs_tun、rc.lvs_dr)以及mon_xxx.cf脚本。(稍后将rc.lvs_xxx放到/etc/rc.d或/etc/init.d中去,将mon_xxx.cf放在/etc/mon目录下)。

3).rc.lvs脚本选项
a). 为负载均衡器与物理服务器增加以太网设备和路由器;
b).使用fping检查连接;
c).运行ipchains(VS-NAT方式);
d).激活ipforward;
e).关闭ICMP重定向功能(VS-DR和VS-Tun方式);
f).增加ipvsadm服务。

4).继续
在物理服务器上运行:
$ . ./rc.lvs_nat 或
$sh rc.lvs_nat

rc.lvs脚本能够自动判断是运行在负载均衡器(tests x /sbin/ipvsadm)还是物理服务器上(检查ifconfig)。

检查ipvsadm、ifconfig a和netstat rn的输出,检查服务/IP地址是否正确。如果不正确的话,请重
新编辑然后再运行一次。

3.5.测试LVS

检查每一台物理服务器上运行的服务,看它们的IP是不是LVS的虚拟IP—VIP(使用netstat an)。如果运行rc.lvs_xxx脚本没有出错的话,你从客户端telnet到VIP(在本文中是192.168.1.110),你将会登录到其中的一台物理服务器上,并看到这台物理服务器的登录提示。

在负载均衡器上查看ipvsadm的输出,你会在23端口上看到一个与物理服务器的连接。而在物理服务器上执行:$ netstat -an | grep 23命令查看到相关信息。客户端logout退出后,再次登录虚拟IP时,你将会看到另一台物理服务器的登录提示符。

 

4 VS-NAT模式


VS-NAT是基于CISCO的负载均衡器:LocalDirector实现的。

4.1.安装VS-NAT

根据下表设置客户端、负载均衡器、物理服务器的IP地址:

表21-2.客户端、负载均衡器、物理服务器的IP地址


机 器 IP地址
客户端 192.168.1.254
负载均衡器的虚拟IP 192.168.1.110(LVS表现的IP)
负载均衡器内部网卡 10.1.1.1
物理服务器1 10.1.1.2
物理服务器2 10.1.1.3
物理服务器3 10.1.1.4
…… ……
物理服务器n 10.1.1.n+1
物理服务器的默认
网关 10.1.1.1

对于VS-NAT方法来说,物理服务器必须位于与客户机、LVS的虚拟IP地址不同的网段上,也就是说在物理服务器上不能直接PING通客户机。
由于负载均衡器有两个IP地址,一个是LVS的虚拟IP地址,另一个IP地址是内部地址--所有物理服务器默认网关。当数据包从物理服务器发送到负载均衡器时,负载均衡器根据地址翻译(NAT)规则将包转发到客户端。(由于负载均衡器是一个地址翻译器,所以ICMP的重定向功能失效,PING无法应用)。可以采用IP别名的方法,也可以使用双网卡方法来实现这个。

配置脚本将会配置IP伪装。以下是在configure.pl脚本中的程序段:
echo "turning on masquerading "
#setup masquerading
echo "1" >/proc/sys/net/ipv4/ip_forward
echo "installing ipchain rules"
/sbin/ipchains -A forward -j MASQ -s 10.1.1.0/24 -d 0.0.0.0/0
echo "ipchain rules "
/sbin/ipchains L
所有与NAT有关的规则设置都在rc.lvs_nat文件中表现。

4.2.配置VS-NAT

在负载均衡器以及每一台物理服务器上分别执行rc.lvs_xxx脚本程序,使用lvs_nat.conf这个模板来生成rc.lvs_nat配置文件。

VS-NAT将会对端口重新映射,一个来自于80端口的请求,负载均衡器会将其发给物理服务器的8000端口。由于数据包的源地址和目标地址已经被重写,所以无需对重新端口增加额外的开销。很低的重写数据包速度(60us/包)限制了VS-NAT的最大处理能力,而且VS-NAT的最大处理能力不是与增加的物理服务器成正比的。

VS-NAT实现方法的最大优点是物理服务器可以是任何一种操作系统,无需为了完成LVS而作任何修改,而且可以实现一些在Linux上不存在服务。

4.33.VS-NAT与Linux核心支持的NAT

当然可以使用ipchains或ipfw构建基于Linux内核的NAT防火墙。而使用了基于2.0.36版内核的LVS补丁包后,常规的内核模块(如ip_masq_ftp等)不再工作(而且不再需要装载)。

 

5.VS-DR模式


5.1.总论

VS-DR是基于IBM的NetDispathcer实现的。NetDispatcher位于WEB服务器的前端,对于客户端来说就象一台WEB服务器。NetDispatcher曾服务于奥运会、卡斯帕罗夫与深蓝电脑的国际象棋比赛。

这里有一个VS-DR的IP地址设置的实例。注意:物理服务器与VIP位于同一个网络上。

VS-DR模式在以下几方面受到了限制
1) 物理服务器和负载均衡器必须在同一个网段上(它们之间必须能使用arp协议),它们之间在数据链路层上传递数据包;
2) 客户端必须通过负载均衡器的VIP访问集群;
3) 物理服务器必须有到客户端的路由(即使客户端没有到物理服务器的路由)。因为从物理服务器返回到客户商的包,将直接发送,无须通过负载均衡器转发。

VS-DR模式下,客户端通常与负载均衡器和物理服务器位于不同的网络中,而且每一个物理服务器拥有自己对外的路由表。在下面这个简单的例子中,所有的机器都在192.168.1.0这个网络,物理服务器不需要设置默认路。网络拓扑结构如下图所示:


IP分配如下表所示:


表21-3 .IP分配


机 器 IP 地 址
客户端 本机IP:CIP 192.168.1.254

负载均衡器 本机IP:DIP 192.168.1.1
虚拟IP:VIP 192.168.1.110(ARP与客户端使用)

物理服务器1 本机IP:RIP 192.168.1.2
虚拟IP:VIP 192.168.1.110(不ARP)

物理服务器2 本机IP:RIP 192.168.1.3
虚拟IP:VIP 192.168.1.110(不ARP)

物理服务器3 本机IP:RIP 192.168.1.4
虚拟IP:VIP 192.168.1.110(不ARP)


5.2.VS-DR良好的扩展性

VS-NAT方法受限于经过负载均衡器的每一包都必须重写,用这种方法最大的数据吞吐量受限于负载均衡器的环境。(如一台Pentium机器,快速以太网,最大的数据吞吐量为80M/秒)而且增加物理服务器的数量并不能增加这个最大数据吞吐量。而使用VS-DR模式,速度限制则在每个物理服务器与Internet连接的包处理能力,而对负载均衡器的要求不大,因为其只需处理简单的包。在VS-DR的模式下,能够增加更多物理服务器以提高系统能力。


6 VS-TUN模式


6.1.总论

VS-Tun是LVS独创的的,它是基于VS-DR发展的。具有良好的可扩展性和服务吞吐量。

使用VS-Tun方式的话,必须采Linux作为物理服务器,而负载均衡器将IP请求重新包装成IPIP包后发给
物理服务器。所以物理服务器必须能够解IPIP包装才能,现在只有Linux操作系统能处理IPIP包(IP隧道技
术)。

不同于VS-DR,VS-Tun方案允许物理服务器与负载均衡器在不同的网络上,甚至允许所有的机器都在
单独的网络上,那怕物理服务器位于不同的国家(例如:做一个项目的FTP站点镜像)。在这种情况下物理
服务器将产生源地址=虚拟IP地址,目标地址=客户机IP地址的IP包。

如果物理服务器与负载均衡器位于相同的网络上,那么VS-DR和VS-Tun是等价的。VS-DR更具有灵活
性,因为大多数操作系统都可以用来构建物理服务器。

6.2. VS-Tun实例

以下是一个VS-Tun的IP配置实例。VS-Tun提供的最大方便性就是不需要服务器与客户端位于同一个网络上,仅需要客户端能寻径(有路由)到负载均衡器,物理服务器能寻径(有路由)到客户机。(返回的包直接从物理服务器到客户端,无须再经过负载均衡器)

通常使用VS-Tun模式时,客户端是与负载均衡器、物理服务器位于不同网络上的,而且每一台服务器
有一个通往外界的路由。

IP分配如下表所示:


表21-4.IP分配


机 器 IP 地 址
客户端 本机IP:CIP 192.168.1.254

负载均衡器 本机IP:DIP 192.168.1.1
虚拟IP:VIP 192.168.1.110(ARP与客户端使用)

物理服务器1 本机IP:RIP 192.168.1.2
虚拟IP:VIP 192.168.1.110(隧道技术,不ARP)

物理服务器2 本机IP:RIP 192.168.1.3
虚拟IP:VIP 192.168.1.110(隧道技术,不ARP)

物理服务器3 本机IP:RIP 192.168.1.4
虚拟IP:VIP 192.168.1.110(隧道技术,不ARP)

…… …… ……
物理服务器n 本机IP:RIP 192.168.1.n+1
虚拟IP:VIP 192.168.1.110(隧道技术,不ARP)


6.3.配置VS-Tun

1)编辑配置文件模板lvs_tun.conf后,进行配置:
$ ./configure_lvs.pl lvs_nat.conf
2)在物理服务器上运行:
$ . ./etc/rc.d/rc.lvs_tun
3)将配置文件放到/etc/rc.d或/etc/init.d目录下。
4)检查ipvsadm、ifconfig a和netstat rn的输出,检查服务/IP地址是否正确,如果有误,请修改后重新运行脚本。





相关文章
  • 设置不同主机之间互相信任登录
  • 网络流量监控器mrtg全攻略
  • 网站综合实例
  • 用wvdial和ppp轻松上网
  • 用rsync实现网站镜像和备份
  • 改进Web站点性能的五个方面
  • 建立高可扩展的web邮件系统
  • 实现一个网桥式防火墙
  • 完美的RH8+gnome+KDE使用simsun的方案
  • 如何设置串口多用户卡
  • 如何编写用例文档
  • 如何监测内存泄漏
  • 如何用Apache反向代理设置对外的WWW服务器
  • 多层次负载平衡之4
  • 多层次负载平衡之3
  • 多层次负载平衡之2
  • 多层次负载平衡之1
  • 域星型局域网组网指南
  • 囚禁你的精灵(daemon)进程
  • 嗅探器检测工具和对策
  • 相关软件




    月光软件源码下载编程文档电脑教程网站优化网址导航网络文学游戏天地生活休闲写作范文安妮宝贝站内搜索
    电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
    音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

    月光软件站·版权所有