Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

使用Linux实现负载均衡

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  常见的负载平衡方法

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 地址上的一个虚拟服务。

1.gif

  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地址上的虚拟网络服务。

2.gif

  VS/TUN的体系结构

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

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

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:选择邮件服务器十二要素   下一篇:Linux99问(下)

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号