001 LVS基础概念

  • LVS简介
  • Linux Virtual Server项目
  • 网络分层
  • IP虚拟服务器软件
  • IP调度算法
  • 内核Layer-7交换机KTCPVS
  • LVS集群特点
  • LVS与Nginx对比

LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家章文嵩博士的一个开源项目,在Linux内核2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

LVS主要用于多服务器的负载均衡。它工作在网络4层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性非常好。

Linux Virtual Server项目

针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载均衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。

一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。由于LVS的负载调度技术是在Linux内核中实现的,称之为Linux虚拟服务器(Linux Virtual Server)。

LVS项目的目标:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)、和可管理性(Manageability)。
目前,LVS项目提供了一个实现可伸缩网络服务的LinuxVirtualServer框架

  • E-Commerce
  • General Network Services
  • Cluster Management:集群管理软件
  • KTCPVS:基于内容请求分发的内核Layer-7交换机
  • IPVS:提供了含有三种IP负载均衡技术的IP虚拟服务器软件

可以利用LVS框架实现高可伸缩的、高可用的Web、Cache、Mail和Media等网络服务;在此基础上,可以开发支持庞大用户数的、高可伸缩的、高可用的电子商务应用。
Nginx工作在OSI7层模型下,LVS工作在下四层

IP虚拟服务器软件IPVS

在调度器的实现技术中,IP负载技术是效率最高的。IPVS软件实现了三种IP负载均衡技术。它们的大致原理如下:

Virtual Server via Direct Routing (VS/DR)
VS/DR通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。

Virtual Server via Network Address Translation (VS/NAT)
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

Virtual Server via IP Tunneling (VS/TUN)
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解这个问题,调度器把请求报文通过IP隧道转发至真实的服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

IPVS 8种调度算法

  1. 轮叫 Round Robin
  2. 加权轮叫 Weighted Round Robin
  3. 最少链接 Least Connections
  4. 加权最少链接 Weighted Least Connections
  5. 基于局部性的最少链接 Locality-Based Least Connections
  6. 带复制的基于局部性的最少链接 Locality-Based Least Connections with Replication
  7. 目标地址散列 Destination Hashing
  8. 源地址散列 Source Hashing
内核Layer-7交换机KTCPVS

在基于IP负载调度技术中,当一个TCP连接的初始SYN报文到达时,调度器就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP头地址,保证此连接的后继报文被转发到该服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端服务器组提供相同的服务,不管请求被发送到哪一台服务器,返回结果都是一样的,但是,在有些应用中后端服务器功能不一,有的提供HTML文档,有的提供图片,有的提供CGI,这就需要基于内容的调度(Content-Based Scheduling)

LVS集群特点
  1. 有三种IP负载均衡和八种连接调度算法的IPVS软件
  2. 在IPVS内部实现上,采用了高效的Hash函数和垃圾回收机制,能正确处理所调度报文相关的ICMP消息
  3. 虚拟服务的设置数目没有限制,每个虚拟服务有自已的服务器集。
  4. 它支持持久虚拟服务(如HTTP Cookie和HTTPS等需要该功能的支持),并提供详尽的统计数据,如连接的处理速率和报文的流量等。
  5. 针对大规模拒绝服务(Deny of Service)攻击,实现了三种防卫策略。
  6. 有基于内容请求分发的应用层交换软件KTCPVS,它也是在Linux内核中实现。
  7. 有相关的集群管理软件对资源进行监测,能及时将故障屏蔽,实现系统的高可用性。
  8. 主、从调度器能周期性地进行状态同步,从而实现更高的可用性。

LVS与Nginx对比

负载均衡 4层负载均衡 7层负载均衡
技术原理 IP+TCP端口 URL应用层(内容交换)
典型代表 LVS Ngin、Haproxy、MySQL Proxy
优点和缺点 不理解mysql、ftp、http等应用协议,满足不了特定需求,如动静分离,缓存自定义等,但是配置简单,效率也很高 对负载均衡设备要求很高,处理七层能力一般低于四层模式的部署方式,但比较智能化,比如动态分离,根据不同请求定义图片,缓存,可以对客户端请求和服务器的相应进行自定义修改,极大提升了应用系统在网络层的灵活性
安全性 SYNFlood攻击,有的软四层应用则会转发到后端服务器,有的则可以防止攻击,这个和设备(软硬)有一定关系。 一般可以在七层进行拦截,不影响后台服务器正常运营,可以设置多种策略,过滤特定报文。
应用 对应TCP应用 比如c/s开发的ERP 应用广发HTTP协议,应用主要是网站或内部信息平台等B/S开发的系统
案例 接受客户的syn请求,通过上述方式选择后端指定服务器,并对报文中目标IP地址进行修改,改为后端服务器IP,TCP连接是直接建立,而负载均衡类似路由器作用 如果要根据真正的应用层内容在选择服务器,则先代理最终服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容报文,然后根据该报文中特定字段,加上负载均衡设备的服务器选择方式,决定最终选择的内部服务器。此时充当了代理服务器
发布了32 篇原创文章 · 获赞 0 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/h13140995776/article/details/101567877