一、简介

      LVSLinux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的

服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由

软件项目之一。LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很

好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的

故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的

结构对客户是透明的,而且无需修改客户端和服务器端的程序。LVS/NAT、LVS/TUN

和LVS/DR技术是LVS集群中实现的三种IP负载均衡技术。

三种转发机制的优缺点

◆Virtual Server via NAT

VS/NAT 的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址

配置在LVS主机上,服务器组可以用私有的IP地址。缺点是它的扩充能力有限,当服务

器结点数目升到20时,LVS主机本身有可能成为系统的新瓶颈,因为在VS/NAT中请求

和响应封包都需要通过负载平衡LVS主机。

◆Virtual Server via IP Tunneling

在VS/TUN 的集群系统中,负载平衡LVS主机只将请求分配到不同的实际服务器,实际

服务器将应答的资料直接返回给用户。这样,负载平衡LVS主机就可以处理巨量的请

求,而不会成为系统的瓶颈。即使负载平衡LVS主机只有100Mbps的全双工网卡,虚

拟服务器的最大吞吐量可以达到几Gbps。所以,VS/TUN可以极大地增加负载平衡

LVS主机分配的服务器数量,它可以用来构建高性能超级服务器。

◆Virtual Server via Direct Routing

同VS/TUN 一样,VS/DRLVS主机只处理客户到服务器端的连接,响应资料可以直接

从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。同VS/TUN

相比,这种方法没有IP隧道的开销,但是要求负载平衡LVS主机与实际服务器都有一块

网卡连在同一物理网段上,服务器网络设备或者设备别名不作 ARP 响应。

      一般来说,LVS集群采用三层结构,其主要组成部分为:

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的

请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟

IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务

有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样

很容易使得服务器池拥有相同的内容,提供相同的服务。

      调度器是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负

载均衡技术、基于内容请求分发技术或者两者相结合。

四种分配方法(Load-balancing Methods)

Round robin (RR)

将工作平均的分配到服务器 (用于实际服务主机性能一致)

Least-connections (LC)

向较少连接的服务器分配较多的工作(IPVS 表存储了所有的活动的连接。用于实际服务

主机性能一致。)

Weighted round robin (WRR)

向较大容量的服务器分配较多的工作。可以根据负载信息动态的向上或向下调整。 (用

于实际服务主机性能不一致时)

Weighted least-connections (WLC)

考虑它们的容量向较少连接的服务器分配较多的工作。容量通过用户指定的砝码来说

明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)

二、案例一(NAT)

拓扑图:

tp

配置过程:

虚拟服务器:

打开路由转发功能:

[root@localhost ~]# vim /etc/sysctl.conf

编辑结果:

sysctl.conf

[root@localhost ~]# sysctl –p

查看内核版本:

[root@localhost ~]# uname -r
2.6.18-164.el5

挂载光盘:

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# cd /mnt/cdrom

编辑yum服务器:

[root@localhost cdrom]# vim /etc/yum.repos.d/rhel-debuginfo.repo

编辑结果:

yum

安装ipvsadm工具:

[root@localhost cdrom]# yum install ipvsadm

定义虚拟服务器:

[root@localhost cdrom]# ipvsadm -A -t 192.168.100.100:80 -s rr

定义realserver:

[root@localhost cdrom]# ipvsadm -a -t 192.168.100.100:80 -r 192.168.2.100 –m

[root@localhost cdrom]# ipvsadm -a -t 192.168.100.100:80 -r 192.168.2.101 –m

[root@localhost cdrom]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm:               [确定]

[root@localhost cdrom]# service ipvsadm start
Clearing the current IPVS table:                           [确定]
Applying IPVS configuration:                               [确定]

[root@localhost cdrom]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.100.100:80 rr
  -> 192.168.2.101:80             Masq    1      0          0        
  -> 192.168.2.100:80             Masq    1      0          0   

realser1配置:

服务器的配置:

安装web:

[root@localhost ~]# yum install httpd

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# echo “web1” > index.html

重启web服务:

[root@localhost html]# service httpd restart

realserver2配置:

安装web:

[root@localhost ~]# yum install httpd

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# echo “web2” > index.html

三、案例二(DR)

拓扑图:

4628697_1349787695iB60

配置过程:

diretor上的配置:

ip信息:

4628697_1349787695snLi

打开路由转发功能:

[root@localhost ~]# vim /etc/sysctl.conf

编辑结果:

sysctl.conf

[root@localhost ~]# sysctl –p

查看内核版本:

[root@localhost ~]# uname -r
2.6.18-164.el5

挂载光盘:

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# cd /mnt/cdrom

编辑yum服务器:

[root@localhost cdrom]# vim /etc/yum.repos.d/rhel-debuginfo.repo

编辑结果:

yum

 

安装ipvsadm工具:

[root@localhost cdrom]# yum install ipvsadm

增加条目:

[root@localhost ~]# ipvsadm -A -t 192.168.10.100:80 -s rr

[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.2 –g

[root@localhost ~]# ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.3 –g

[root@localhost cdrom]# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]

[root@localhost cdrom]# service ipvsadm start
Clearing the current IPVS table: [确定]
Applying IPVS configuration: [确定]

web1服务器上的配置:

Ip信息:

4628697_13497876997FDI

安装web:

[root@localhost ~]# yum install httpd

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# echo “web1” >  index.html

重启web服务

[root@localhost html]# service httpd restart

添加下列条目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0

web2服务器上的配置:

Ip信息:

4628697_1349787699fut4

 

安装web服务器:

[root@localhost ~]# yum install httpd

[root@localhost ~]# cd /var/www/html/

[root@localhost html]# echo “web2” >  index.html

重启web服务

[root@localhost html]# service httpd restart

添加下列条目到/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 2" >>/etc/sysctl.conf

[root@localhost ~]# echo "net.ipv4.conf.eth0.arp_ignore = 1" >>/etc/sysctl.conf

[root@localhost ~]# sysctl –p

[root@localhost ~]# route add -host 192.168.10.100 dev lo:0