请稍侯

linux 服务器集群系统,LVS学习

17 March 2016

###参考 本文参考章文嵩博士的LVS 服务器集群系统

###LVS 简介

LVS 是linux virtual server, 是通过一些手段,让服务可以承载大流量和大压力, 其中包括负载均衡技术和负载调度算法, 下面介绍在第四层(传输层)上的负载均衡技术

###负载均衡技术

  1. 网络地址转换实现虚拟服务器(virtual server via Network Address Translation, VS/NAT), 通过网络地址(IP 和Port)转换, 调度器重写请求报文的目的地址(IP 和 port),根据预设的调度算法,讲去请求分配给后端真实的服务器。后端真实服务器的响应报文经过调度器是, 报文的源地址被重写,再返回给客户端,完成整个负载调度过程。
  2. IP隧道实现虚拟服务器(virtual server via IP Tunneling, VS/TUN) , 采用NAT技术时,由于请求和响应报文都需要经过调度器进行地址重写, 当客户端的请求越来越多时,调度器的处理能力和网卡都可能成为瓶颈;为了解决这个问题,调度器把请求报文通过ip隧道转发给后端真实服务器, 真实服务器的响应报文直接发给客户端.这样调度器只需要处理请求报文.一般情况下,请求报文比响应报文小的多,才有IP TUN技术后,可以大大提高 系统的吞吐量。
  3. 直接路由实现虚拟服务器(Virtual Server Via Direct Routing, VS/DR), VS/DR 中,调度器通过修改请求报文的物理地址,将请求转发给真实服务器, 真实服务器的响应报文直接发给客户端。和IP 隧道技术一样DR可以大大提升系统吞吐量,但是要求调度器和真实服务器都有一个网卡连在同一个物理网段上。

如上简单介绍了三种IP层的负载均衡技术,详细的可以参考LVS中的负载均衡技术

###负载调度算法

  1. 轮叫(round Robin)
  2. 加权轮叫(Weighted Round Robin)
  3. 最少链接(Least Connections)
  4. 加权最少链接(Weighted Least Connections)
  5. 局部最少链接(Locality-Based Least Connections)
  6. 目标地址散列(destination hashing)
  7. 源地址散列(source hashing)

负载调度算法详情可以参考LVS的负载调度算法

###补充1

如上介绍的都是通过修改目的地址的IP和PORT来实现负载均衡的技术,是在第四层传输层实施的负载均衡技术;也可以在第七层应用层做负载均衡。 第四层和第七层有什么区别呢?

####第四层(传输层)负载均衡

传输层负载均衡技术,通过修改报文中的目标地址和端口,
再加上负载均衡设备设置的负载调度算法,
决定最终选择的真实服务器与请求客户端建立TCP连接,然后为客户端服务。

####第七层(应用层)负载均衡

应用层负载均衡技术,是通过HTTP的URL或者其他的真正有意义的信息,
以及负载调度算法,决定最终的真实服务器。第七层负载均衡技术中的调度器其实就是代理服务器。
客户端要和七层负载均衡技术中的调度器进行三次握手,完成对应用层的数据解析,
然后调度器在和后端真实服务器进行三次握手,转发用户请求到真实服务器,
真实服务器的响应报文,也需要通过调度器返回给客户端。这里调度器就相当于一个代理服务器。

####补充2

介绍下开放式系统互联七层网络模型和TCP/IP 五层网络模型

####OSI七层网络模型(Open System Interconnection, 开放式系统互联)

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

从下到上,分别为第一层(物理层),到第七层(应用层).

####TCP/IP 五层网络模型

  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层