`
isiqi
  • 浏览: 16498141 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

使用Linux实现负载均衡zz

阅读更多

常见的负载平衡方法

1、DNS负载平衡的方法

RR-DNS(Round-Robin Domain Name System) 轮流排程的方式是:在DNS服务器中,可以为多个不同的IP地址配置同一个名称,当客户端查询这个名字时将在解析这个名称时得到其中的一个地址。因此,对于同一个名字,不同的客户端会得到不同的地址,他们也就连结不同地址上的Web服务器,从而达到负载平衡的目的。例如 : 当客户端连结 www.muti-ip.com.tw这名称时,DNS 有能力依序将名称解析到 202.1.1.1 、 202.1.1.2 、202.1.1.3和 202.1.1.4等不同的网络地址,而这些是提供相同服务的主机,让客户端不自觉有不同

2、服务端应用层和IP层的负载平衡方法

EDDIE、Reverse-Proxy和SWEB 都使用属于应用层负载平衡的方法将到达的HTTP请求转发到不同的Web 服务器,取得结果后,再返回给用户。Berkeley的MagicRouter、Cisco的LocalDirector、Altheon 的ACEDirector和F5的Big/IP等都是使用网络地址转换NAT的方法,目前在Linux 上Cluster的方式也是用这种方法达成的。

3、集群( Cluster )Server 达成负载平衡的方法

集群能达到的机制

a. 分身服务 将两个以上的服务器连贯成服务器群,每台提供相同服务

b. 不疑有他 客户端感觉只有一台机器在提供服务

c. 备份能力 也就是当其中有某台服务器出问题时,不会有服务中断的情形

d. 可扩充性 当客户数量增加时,可在不中止服务的情形下扩充服务器

e. 负载平衡 将客户端的要求科学的分配给服务器,不致让主机负载过量

Linux Cluster 实现负载平衡的软件 ----LVS( Linux Virtual Server )

Linux上集群的达成是实施 Linux Virtual Server ( LVS ) 的架设

LVS可称为Linux虚拟服务器,它具备高可用性、可扩充性和科学性的数学运算,而这些也就是集群系统 (Cluster System)的应用。

高可用性High-Availability (HA) 不允许有服务中断的情形发生时。由两台以上的计算机通过一定方式互相监听,当主要服务器主机出现问题而无预警的停止服务时,备份服务器能够自动立即接替工作,使客户端感觉不出有异。 可扩充性 (Scalability) 应用在web 、ftp server上为多。当用户连结一个地址,但实际上是有若干台服务器在提供服务。而当服务请求达到饱和时,还可以很容易地再添加新的节点而不用停掉整个 cluster,实现所谓的"热插拔",这也就是Cluster中的一个概念-Scalability (易扩展性)。而且,cluster还会查询真实节点的情况,当某台真实节点没有响应时,就不再把任务分配到那里,直到这台节点恢复正常。科学的数学运算 (Scientific) 用于效能、图像处理等计算 Cluster已经发展多年,也比较成熟了。之前需要专业的软/硬设备才能实现。所以只有少数公司才有能力用的起。现在Linux上的LVS就可以让你在PC上架设Cluster的解决方案,使更多的人有机会构建自己的cluster。 LVS提供了三种转发机制(Traffic Forward Mechanism)、四种分配方法(Load-balancing Methods),以下详述

三转发机制(Traffic Forward Mechanism)

三种不同的转发机制分别将LVS主机建构成

NAT虚拟主机 Virtual Server via Network Address Translation IP Tunneling虚拟主机 Virtual Server via IP Tunneling Direct Routing虚拟主机 Virtual Server via Direct Routing 负载平衡主机可称为Virtual Server ( 虚拟主机 )、Load Balancer (负载平衡器)、Linux Director (导引主机),以下简称为LVS主机

NAT虚拟主机 Virtual Server via Network Address Translation ( VS/NAT )

由于IPv4中IP地址空间的日益不足和安全方面的原因,很多网络使用 Internet上未被分配的私有IP地址(10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0 和192.168.0.0/255.255.0.0)。当内部网络中的主机要连结Internet或被Internet连结时,就需要采用网络地址转换(Network Address Translation, 以下简称NAT),可以用NAT方法将不同IP地址的并行网络服务变成在一个IP 地址上的一个虚拟服务。

 

VS/NAT的体系结构

 

在一组服务器前有一个LVS主机,用户通过Virtual IP Address(即LVS主机的外部地址)连结服务时,请求到达LVS主机,LVS主机以负载平衡方法从一组真实服务器选出一个,将目标地址 Virtual IP Address重新指向内部实际提供服务服务器的地址。同时,LVS主机记录这个连接,当这个连接的真实服务器的响应经过LVS主机时,LVS主机将来源地址和来源端口改?Virtual IP Address和相应的埠,再把响应发给用户。当连接终止或逾时,LVS主机将这个连接从纪录中删除。这样,用户所看到的只是在Virtual IP Address 上提供的服务。

IP Tunneling 虚拟主机 Virtual Server via IP Tunneling (VS/TUN)

在VS/NAT的集群系统中,请求和应答的封包都需要通过LVS主机,当实际服务器的数量超过20时,LVS主机将成为集群系统的新瓶颈。利用IP隧道技术将请求封包封装转发给后端服务器,响应封包能从后端服务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可能静态地建立一一对应的隧道,而是动态地选择一台服务器,将请求封包封装和转发给选出的服务器。这样,我们可以利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务。

VS/TUN的体系结构

如上图所示,各个服务器将 VIP地址配置在自己的IP隧道设备上。

VS/TUN的连接分配和管理与VS/NAT中的一样,只是它的封包转发方法不同。负载平衡主机根据各个服务器的负载情况,动态地选择一台服务器,将请求封包封装在另一个IP封包中,再将封装后的IP封包转发给选出的服务器;那台服务器收到封包后,先将封包解封获得原来目标地址为VIP的封包,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应封包直接返回给客户。

Direct Routing 虚拟主机 Virtual Server via Direct Routing (VS/DR)

这种IP层负载平衡方法与IBM的NetDispatcher中的方法类似。它的体系结构如下图所示:

VS/DR的体系结构

LVS主机和服务器组都必须在同一网络区域中,如通过交换机或者高速的HUB相连。 VIP地址为LVS主机和服务器组共享,LVS主机配置的VIP地址是对外可连结的,用于接收虚拟服务的请求封包;所有的服务器把VIP地址配置在各自的 Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址?VIP的网络请求。

VS/DR的连接分配和管理与VS/NAT和VS/TUN中的一样,它的封包转发方法又有不同,将封包直接路由给目标服务器。在VS/DR中,LVS主机根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP封包,而是将资料封包的MAC地址改为选出服务器的MAC地址,再将修改后的资料封包在与服务器组的局域网上发送;因为资料封包的MAC地址是选出的服务器,所以服务器肯定可以收到该封包,发现VIP地址被配置在本地的网络设备上,所以就处理这个请求,然后根据路由表将响应封包直接返回给客户。

三种转发机制的优缺点

归纳在下表中:

● Virtual Server via NAT

VS/NAT的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个 IP地址配置在LVS主机上,服务器组可以用私有的IP地址。缺点是它的扩充能力有限,当服务器结点数目升到20时,LVS主机本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应封包都需要通过负载LVS主机。在Pentium 166主机上测得重写封包的平均延时为60us,假设TCP封包的平均长度为536 Bytes,则LVS主机的最大吞吐量为8.93 MBytes/s。再假设每台服务器的吞吐量为600KBytes/s,这样一个LVS主机可以带动16台服务器。

● Virtual Server via IP Tunneling

在VS/TUN的集群系统中,负载LVS主机只将请求分配到不同的实际服务器,实际服务器将应答的资料直接返回给用户。这样,负载LVS主机就可以处理巨量的请求,而不会成为系统的瓶颈。即使负载LVS主机只有100Mbps的全双工网卡,虚拟服务器的最大吞吐量可以达到几Gbps。所以,VS/TUN可以极大地增加负载LVS主机分配的服务器数量,它可以用来构建高性能超级服务器。 VS/TUN技术对服务器的要求是所有的服务器必须支持"IP Tunneling"或者"IP Encapsulation"协议。目前,VS/TUN 的后端服务器主要运行Linux操作系统。因为"IP Tunneling"正成为各个操作系统的标准协议,所以VS/TUN也会适用运行其它操作系统的后端服务器。

● Virtual Server via Direct Routing

同VS/TUN一样,VS/DRLVS主机只处理客户到服务器端的连接,响应资料可以直接从独立的网络路由返回给客户。这可以极大地提高LVS集群系统的伸缩性。同VS/TUN相比,这种方法没有IP隧道的开销,但是要求负载LVS主机与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备或者设备别名不作ARP 响应。

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

不同的分配方法建构LVS主机成四种不同的排程

负载平衡排程是以连接为单位的。在HTTP协议(nowait)中,每个对象从WEB服务器上获取都需要建立一个TCP连接,同一用户的不同请求会被分配到不同的服务器上,所以这种连接的分配完全避免了用户连结的突发性引起的负载不平衡。目前有以下4种排程算法:

轮流排程 Round-Robin Scheduling (RRS)

轮流排程算法是假设所有服务器处理性能均相同,依次将请求分配不同的服务器,算法简单,但不适用于服务器组中处理性能不一致的情况。

加权轮流排程 Weighted Round-Robin Scheduling (WRRS)

为此使用加权轮流排程算法,用相应的加权值表示服务器的处理性能,将请求数目按加权值的比例分配到各服务器。加权值高的服务器先收到连接,加权值高的服务器比加权值低的服务器处理更多的连接,相同权值的服务器处理相同数目的连接数。

最小连结数排程 Least-Connection Scheduling (LCS)

最小连结数排程是需要记录各个服务器已建立TCP连接的数目,把新的连接请求发送当前连接数最小的服务器。当各个服务器有相同的处理性能时,最小连结数排程能把负载变化大的请求平均分布到各个服务器上,所有处理时间比较长的请求不可能被发送到同一台服务器上。

加权最小连接数排程 Weighted Least-Connection Scheduling (WLCS)

但是,当各个服务器的处理能力不同时,该算法并不理想,因为TCP连接处理请求后会进入TIME_WAIT状态,TCP的TIME_WAIT 一般为2分钟,此时连接还占用服务器的资源,所以会出现这样情形,性能高的服务器已处理所收到的连接,连接处于TIME_WAIT状态,而性能低的服务器既要忙于处理所收到的连接,还要收到新的连接请求。加权最小连接分配是最小连接分配的超集,各个服务器用相应的权值表示其处理性能。假设每台服务器的权值为Wi(i=1..n),TCP连接数目为 Ti(i=1..n),依次选Ti/Wi为最小者的服务器为下一个分配到服务的服务器。

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

表示如下

名称 描述

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

Least-connections (LCS) 向较少连接的服务器分配较多的工作(IPVS 表存储了所有的活动的连接。用于实际服务主机性能一致。)

Weighted round robin (WRRS) 向较大容量的服务器分配较多的工作。可以根据负载信息动态的向上或向下调整。 (用于实际服务主机性能不一致时)

Weighted least-connections (WLC) 考虑它们的容量向较少连接的服务器分配较多的工作。容量通过用户指定的砝码来说明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)

分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    应用广泛的嵌入式操作系统——ZZ-Linux.pdf

    详解Nginx中的geo模块与利用其配置负载均衡的示例

    它以其高性能、高可靠性、以及易用性和灵活性而著称,常被用来作为负载均衡器使用。本文将详细解析Nginx中geo模块的作用、用法以及配置负载均衡的示例。 geo模块是Nginx的一个指令,它能够根据客户端的IP地址设置...

    linux下安装7z命令及7z命令使用

    详细讲解linux操作系统安装7z压缩程序步骤,介绍7z软件使用,还有错误处理说明。

    Linux 中util-linux 工具包的源码

    首先,`util-linux`包中包含了多个日常使用的命令,例如`hwclock`,这是一个用于与系统实时时钟交互的工具,可以读取和设置硬件时钟的时间。了解`hwclock`的源码,我们可以学习到如何通过系统调用与硬件进行通信,...

    Linux入门基础教程

    Linux入门基础教程旨在引导初学者理解并掌握这个开源操作系统的基础知识。Linux是一套遵循POSIX标准的类Unix系统,它的核心在于多用户、多任务、多线程和多CPU的支持,能够运行各种UNIX工具软件、应用程序和网络协议...

    Linux的基本命令操作及vi的使用

    ### Linux基本命令操作及vi编辑器使用详解 #### 一、实验目的 1. **熟悉Linux操作系统环境**:了解Linux的基础架构、用户管理、权限控制等核心概念。 2. **熟悉Linux操作系统的文件结构**:掌握Linux文件系统的组织...

    LINUX INTRODUCE

    - **免费**:用户无需支付任何费用即可使用 Linux,这与传统的商业操作系统形成了鲜明对比。 - **兼容性**:Linux 高度兼容 UNIX,这意味着许多在 UNIX 上运行的程序可以直接在 Linux 上运行而无需修改。 - **网络...

    Linux文本编辑器vi的使用

    - 另外,也可以使用`ZZ`来保存并退出vi。 #### 四、使用vi编辑器编辑文档 **1. 移动光标** - vi提供了多种方式来快速移动光标。 - 使用`h`、`j`、`k`、`l`键分别向左、向下、向上、向右移动光标。 - 使用`0`或...

    Linux 日志分析工具(logwatch)安装及使用.docx

    Linux 日志分析工具(logwatch)安装及使用 Linux 系统中的日志文件是非常重要的系统文件,管理员每天的重要工作就是分析和查看服务器的日志,判断服务器的健康状态。但是日志管理又是一项非常枯燥的工作,如果需要...

    7zip_linux_21.7.deb

    根据 7zip 官方版本制作的 deb 安装包,可以直接在Linux 系统上使用 `dpkg...本资源仅仅是为方便安装进行的deb包封装,并对可执行文件 `7zz` 进行了重命名复制为 `7zip`,因此安装后使用时可以直接使用`7zip`作为命令。

    Linux操作系统基础第三部分.pptx

    通过这份Linux操作系统基础教程,学习者能够系统地了解Linux的基本概念、操作和编程基础,为进一步深入学习和使用Linux系统奠定坚实的基础。同时,教程提供的互动平台使学习者可以与其他用户交流,增强实践能力。

    Linux经典书籍下载, 资源全部来自网上,不担保其时效性

    - **内容概述**:这份手册是SuSE Linux发行版的官方汉化版本,对于使用SuSE Linux的中国用户来说是非常有用的参考资料。 - **下载链接**:http://linuxdoc.51.net/download/suse_guanfang_hanhua.pdf #### 17. ...

    linux教程——很使用的那种

    另外linux在每个分区都有保留块,这是专门留给root用户及其所属组使用,别的用户是无法使用的,一般为总数据块的5%,但是如果你的磁盘大的话,就显的浪费了。 mkfs.ext3 -b 2046 -m 2 /dev/hda5。格式化并设置数据块为2...

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    Linux安装教程 第一章:Linux系统安装及基本操作

    Linux 内核采用了稳定版本和开发版本并存的版本控制方式,版本号的命名格式为 x.yy.zz,其中 x 为主版本号,yy 为次版本号,zz 表示修订的版本号。 二、Linux 系统的安装 Linux 的主流发行版本有 Red Hat、Novell...

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

Global site tag (gtag.js) - Google Analytics