LVS基本介绍

一  LVS的产生背景

Internet 的飞速发展给网络带宽和服务器带来巨大的挑战。从网络技术的发展来看,网络带宽的增长远高于处理器速度和内存访问速度的增长,所以,我们深信越来越多的瓶颈会出现在服务器端。很多研究显示 Gigabit Ethernet 在服务器上很难使得其吞吐率达到 1Gb/s 的原因是协议栈(TCP/IP)和操作系统的低效,以及处理器的低效,这需要对协议的处理方法、操作系统的调度和 IO 的处理作更深入的研究。

比较热门的站点会吸引前所未有的访问流量,曾经的 Yahoo 每天发送6.25亿页面,American Online 的 Web Cache 系统每天处理 50.2 亿个用户访问 Web 的请求,每个请求的平均响应长度为 5.5Kbytes。更不用说现在移动端的放光发热,这样使得很多网络服务因为访问次数爆炸式地增长而不堪重负,不能及时处理用户的请求,导致用户进行长时间的等待,大大降低了服务质量。

所以对于这样的工作环境,对于我们的服务会有这样的一些需求:

  • 可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降低服务质量。

  • 高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须是每天 24 小时每星期 7天可用的。

  • 可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。

  • 价格有效性(Cost-effectiveness),整个系统实现是经济的、易支付的。

这样的需求促使了服务器集群的产生,既然单台的服务器一台并不能满足我的需求,高端的又太贵,效果也没有这么理想,由此我们便使用多台服务器同时为我们提供服务,而这样的多台服务器我们称之为服务器集群。

通过高性能网络或局域网互联的服务器集群正成为实现高可伸缩的、高可用网络服务的有效结构。这种松耦合结构的服务器集群系统有下列优点:

  • 性能:网络服务的工作负载通常是大量相互独立的任务,通过一组服务器分而治之,可以获得很高的整体性能。

  • 性价比:组成集群系统的 PC 服务器或 RISC 服务器和标准网络设备因为大规模生产降低成本,价格低,具有最高的性能/价格比。若整体性能随着结点数的增长而接近线性增加,该系统的性能/价格比接近于 PC服务器。所以,这种松耦合结构比紧耦合的多处理器系统具有更好的性能/价格比。

  • 可伸缩性:集群系统中的节点数目可以增长到几千个,乃至上万个,其伸缩性远超过单台超级计算机。

  • 高可用性:在硬件和软件上都有冗余,通过检测软硬件的故障,将故障屏蔽,由存活节点提供服务,可实现高可用性。

                                                                

为此在章文嵩博士在 1998 年 5 月成立了 Linux Virtual Server 的自由软件项目,进行 Linux 服务器集群的开发工作,并在网站上发布第一个版本源程序。并且在 Linux2.4 以后的版本中,直接将 LVS 加入内核中,不用再重新自行编译进内核。

 

二  负载均衡的方式

由上述的情况我们了解到服务器集群的重要性以及必要性,而实现服务器集群主要就是为了负载均衡(Load Balance),负载均衡就是有两台或者以上的服务器或者站点为我们提供服务,我们将来自客户端的请求靠某种算法尽量平均分摊到这些集群中,从而避免一台服务器因为负载太高而出现故障。

简而言之便是将所有的负载均分到多台服务器中,即使其中某个出现故障,用户也能正常访问,得到服务。

而从早期到现在出现的负载均衡方式有这样的两种:

  • 硬件负载均衡
  • 软件负载均衡

其中硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,由专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,但是相对来说成本较高。而常用的负载均衡器有这样一些:

  • F5 BIG-IP
  • Citrix Netscaler
  • Alteon ACEDirector
  • Cisco LocalDirector
  • A10 负载均衡器
  • 梭子鱼负载均衡器
  • 受到了用户的广泛认可,基于简单的 Web 管理界面,实现 4-7 层负载均衡、通用持续性、响应错误处理、SSL 加速、智能 HTTP 压缩、TCP 优化、第 7 层速率整形、内容缓冲、应用攻击过滤、拒绝服务(DoS)攻击和SYN Flood保护等等强大的功能
  • 而更加广泛的则是使用软件的方式来实现负载均衡,实现效果不错,并且不需要成本是很多企业选择的方式。其中常用的方式有:

    • LVS
    • Nginx
    • HAProxy

    其中 LVS 主要工作与网络模型中的第四层,而 Nginx 主要工作于第七层,而 HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和 HTTP(第七层)应用的代理软件,支持虚拟主机。

    其中 LVS 抗负载能力强只是工作在网络4层之上仅作分发之用,没有流量的产生,并且工作稳定,自身有完整的双机热备方案,如 LVS+Keepalived和LVS+Heartbeat,在项目实施中用得最多的还是 LVS/DR+Keepalived

 

三  LVS集群的特点

 

LVS 集群有这样的一些特点:

在功能上:

  • 有实现三种 IP 负载均衡技术和八种连接调度算法的 PVS 软件。在 IPVS 内部实现上,采用了高效的 Hash 函数和垃圾回收机制,能正确处理所调度报文相 关的 ICMP 消息(有些商品化的系统反而不能)。虚拟服务的设置数目没有限制,每个虚拟服务有自己的服务器集。它支持持久的虚拟服务(如 HTTP Cookie 和 HTTPS 等需要该功能的支持),并提供详尽的统计数据,如连接的处理速率和报文的流量等。针对大规模拒绝服务(Deny of Service)攻击,实现了三种防卫策略。

  • 有基于内容请求分发的应用层交换软件 KTCPVS,它也是在 Linux 内核中实现。有相关的集群管理软件对资源进行监测,能及时将故障屏蔽,实现系统的高可用性。主、从调度器能周期性地进行状态同步,从而实现更高的可用性。

在适用性上:

  • 后端服务器可运行任何支持 TCP/IP 的操作系统,包括 Linux,各种 Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS 和 Windows NT/2000 等。

  • 负载调度器能够支持绝大多数的 TCP 和 UDP 协议:

协 议内 容
TCP HTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等
UDP DNS,NTP,ICP,视频、音频流播放协议等
无需对客户机和服务器做任何修改,可适用大多数 Internet 服务。  

在性能上:

  • LVS 服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配置 100M 网卡,采用 VS/TUN 或VS/DR 调度技术,集群系统的吞吐量可高达 1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s。

 

四  LVS的工作框架

Linux Virtual Server 项目的目标:使用集群技术和 Linux 操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS项目已提供了一个实现可伸缩网络服务的 Linux Virtual Server 框架:

LVS_framework

在 LVS 框架中,提供了含有三种 IP 负载均衡技术的 IP 虚拟服务器软件:

  • IPVS:实现IP负载均衡。在调度器的实现技术中,IP 负载均衡技术是效率最高的,只需做到对数据包的分发。

  • 基于内容请求分发的内核 Layer-7 交换机 KTCPVS(Kernel TCP Virtual Server)

  • 集群管理软件

 

五  LVS的组成部分

LVS 集群采用三层结构,三层主要组成部分为:

  • 负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个 IP 地址(我们可称之为虚拟 IP 地址)上的。

  • 服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有 WEB、MAIL、FTP 和 DNS 等。

  • 共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

LVS_struct

 

posted on 2019-01-29 09:18  向北00  阅读(243)  评论(0编辑  收藏  举报

导航