linux 服务器集群系统,LVS学习
###参考 本文参考章文嵩博士的LVS 服务器集群系统
###LVS 简介
LVS 是linux virtual server, 是通过一些手段,让服务可以承载大流量和大压力, 其中包括负载均衡技术和负载调度算法, 下面介绍在第四层(传输层)上的负载均衡技术
###负载均衡技术
- 网络地址转换实现虚拟服务器(virtual server via Network Address Translation, VS/NAT), 通过网络地址(IP 和Port)转换, 调度器重写请求报文的目的地址(IP 和 port),根据预设的调度算法,讲去请求分配给后端真实的服务器。后端真实服务器的响应报文经过调度器是, 报文的源地址被重写,再返回给客户端,完成整个负载调度过程。
- IP隧道实现虚拟服务器(virtual server via IP Tunneling, VS/TUN) , 采用NAT技术时,由于请求和响应报文都需要经过调度器进行地址重写, 当客户端的请求越来越多时,调度器的处理能力和网卡都可能成为瓶颈;为了解决这个问题,调度器把请求报文通过ip隧道转发给后端真实服务器, 真实服务器的响应报文直接发给客户端.这样调度器只需要处理请求报文.一般情况下,请求报文比响应报文小的多,才有IP TUN技术后,可以大大提高 系统的吞吐量。
- 直接路由实现虚拟服务器(Virtual Server Via Direct Routing, VS/DR), VS/DR 中,调度器通过修改请求报文的物理地址,将请求转发给真实服务器, 真实服务器的响应报文直接发给客户端。和IP 隧道技术一样DR可以大大提升系统吞吐量,但是要求调度器和真实服务器都有一个网卡连在同一个物理网段上。
如上简单介绍了三种IP层的负载均衡技术,详细的可以参考LVS中的负载均衡技术
###负载调度算法
- 轮叫(round Robin)
- 加权轮叫(Weighted Round Robin)
- 最少链接(Least Connections)
- 加权最少链接(Weighted Least Connections)
- 局部最少链接(Locality-Based Least Connections)
- 目标地址散列(destination hashing)
- 源地址散列(source hashing)
负载调度算法详情可以参考LVS的负载调度算法
###补充1
如上介绍的都是通过修改目的地址的IP和PORT来实现负载均衡的技术,是在第四层传输层实施的负载均衡技术;也可以在第七层应用层做负载均衡。 第四层和第七层有什么区别呢?
####第四层(传输层)负载均衡
传输层负载均衡技术,通过修改报文中的目标地址和端口,
再加上负载均衡设备设置的负载调度算法,
决定最终选择的真实服务器与请求客户端建立TCP连接,然后为客户端服务。
####第七层(应用层)负载均衡
应用层负载均衡技术,是通过HTTP的URL或者其他的真正有意义的信息,
以及负载调度算法,决定最终的真实服务器。第七层负载均衡技术中的调度器其实就是代理服务器。
客户端要和七层负载均衡技术中的调度器进行三次握手,完成对应用层的数据解析,
然后调度器在和后端真实服务器进行三次握手,转发用户请求到真实服务器,
真实服务器的响应报文,也需要通过调度器返回给客户端。这里调度器就相当于一个代理服务器。
####补充2
介绍下开放式系统互联七层网络模型和TCP/IP 五层网络模型
####OSI七层网络模型(Open System Interconnection, 开放式系统互联)
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
从下到上,分别为第一层(物理层),到第七层(应用层).
####TCP/IP 五层网络模型
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层