LVS工作原理

一、集群分类

  1. LB负载均衡集群:Load Balancing clusters
  2. HA高可用集群:High-availability clusters
  3. BP高性能计算集群:High-performance clusters
  4. 网格计算:Grid computing

(1)LB负载均衡集群
负载均衡集群运行时,一般通过一个或者多个前端负载均衡器,将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群有时也被称为服务器群(Server Farm)。

一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件。

LB在提供负载均衡的时候,如果提供的是DNS负载均衡,由于DNS缓存服务存在的
机制,造成负载均衡的效果会大打折扣。所以在此出现了调度方法,常用的有两个调度
方法:

RR:Round Robin 论调
WRR:Weight Round Robin 加权论调

负载均衡:以提高服务的并发能力为集群的重点的集群
衡量标准:并发处理能力

(2)HA高可用集群

一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。

高可用集群:为了保证服务一直在线的高可用能力的集群

衡量标准:可用性=在线时间/(在线时间+故障处理时间)

(3)BP高性能计算集群

高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。比较流
行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通
常运行特定的程序以发挥HPC cluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。

HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它
节点计算结果的情况。

高性能处理集群:利用的是分布式存储:分布式文件系统,分布式文件系统把一个大任务切割为小任务、分别进行处

(4)网格计算

网格计算或网格集群是一种与集群计算非常相关的技术。网格与传统集群的主要差别是网格是连接一组相关并不信任
的计算机,它的运作更像一个计算公共设施而不是一个独立的计算机。还有,网格通常比集群支持更多不同类型的计算机
集合。

网格计算是针对有许多独立作业的工作任务作优化,在计算过程中作业间无需共享数据。网格主要服务于管理在独立执行工作的计算机间的作业分配。资源如存储可以被所有结点共享,但作业的中间结果不会影响在其他网格结点上作业的
进展。

二、负载均衡器设备类型

分为硬件和软件两种

硬件设备:
- F5的BIG IP负载均衡器
- Citrix的Netscaler负载均衡器
- A10

软件:
分为基于四层和七层的两种类型

  • 四层:
    lvs是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立的,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器
  • 七层:反向代理
    Nginx:支持http,pop3,smtp,imap
    haproxy:支持http,tcp(mysql,smtp)

ipvsadm:管理集群服务的命令行工具,工作于用户空间

ipvs:为lvs提供服务的内核模块,工作于内核空间

在linux内核2.4.23之前的内核中模块默认是不存在的,需要自己手动打补丁,然后把此模块编译进内核才可以正常
使用。


三、LVS的4种类型

为了便于表述下面的内容,在此插几句关于相关服务和名词的定义:

  • Director Server:复制调度集群的主机

  • VIP:Virtual IP,向外提供服务的IP

  • RIP:real IP,内部真的提供服务的主机IP

  • DIP:向内部的IP通信的IP,在Director主机上

  • CIP:客户端IP

1. LVS/NAT

LVS/NAT其实就是用力iptables的NAT表做的转发,只要懂得iptables的NAT表和它涉及的几条链,对LVS/NAT理解就很简单了。

流程:

  • 用户请求到达Director Server,请求报文(源IP为CIP,目标IP为VIP)先到达iptables的PREROUTING链;

  • PREROUTING链检查目标IP是本机,转发报文到iptables 的INPUT链;

  • IPVS修改报文IP为后端Real Server的IP,将报文转发至iptables的POSTRPUTING链,此时源IP为CIP,目标IP为RIP;

  • POSTROUTING链通过选路,将数据包发送给Real Server;

  • Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server, 此时报文的源IP为RIP,目标IP为CIP;

  • Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP。

特点:
- Real Server使用私有地址,网关指向DIP。
- DIP、RIP必须在同一个网段。
- 请求和响应报文都需要经过Director Server,高负载场景中,Director Server易成为性能瓶颈。
- 支持端口映射。
- Real Server可以使用任意操作系统。

2. LVS/TUN (IP隧道模式)

在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IIP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)。

流程:
- 用户请求到达Director Server,请求报文(源IP为CIP,目标IP为VIP)先到达iptables的PREROUTING链;

  • PREROUTING链检查目标IP是本机,转发报文到iptables 的INPUT链;

  • IPVS在请求报文的首部再次封装一个IP报文,封装的源IP为DIP,目标IP为RIP,然后将报文转发至iptables的POSTRPUTING链,此时源IP为CIP,目标IP为RIP;

  • Real Server接收到报文后发现是自己的IP地址,就将报文接收下来,拆除掉最外层的IP后,会发现里面还有一层IP首部,而且目标是自己的lo接口VIP,那么此时RS开始处理此请求,处理完成之后,通过lo接口送给eth0网卡,然后向外传递。 此时的源IP地址为VIP,目标IP为CIP

  • 响应报文最终送达至客户端

特点:
- RIP、VIP、DIP都是公网地址。
- RS的网关不会也不能指向DIP。
- 所有请求报文经过Director。 Server,但响应报文不经过Director Server.
- 不支持端口映射。
- Real Server必须支持隧道。

3. LVS/FULLNAT

Full NAT是相对NAT模式而存在的。在NAT模式中,LVS会对进入的报文进行DNAT,对出去的报文进行SNAT;而Full NAT模式对进入的报文同时进行DNAT + SNAT,对出去的报文也进行SNAT + DNAT。

Full NAT是针对特殊应用场景(CIP同样是属于集群内部的某台机器时,NAT模式下,RS回包就不用经过网关了,因此DS就收不到,导致有路由问题)提出来的,不需要在RS配置指向DS的路由网关策略,它保证了保证RS回包一定能够回到LVS,因为源地址就是LVS。

更加详细的了解可以参考:https://ieevee.com/tech/2015/12/08/fullnat.html

4. LVS/DR(直接路由)

通过改写请求报文的MAC地址,将请求发送到RS中,RS直接返回给用户,只是需要DS和RS有一块网卡连在同一个物理网段上。

流程:
- 用户请求到达Director Server,请求报文(源IP为CIP,目标IP为VIP)先到达iptables的PREROUTING链;

  • PREROUTING链检查目标IP是本机,转发报文到iptables 的INPUT链;

  • IPVA将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改为RIP的MAC地址,然后将数据包转发至POSTROUTING链,此时源IP和目的IP都没有修改,锦绣改了了源MAC地址和目标MAC地址;

  • 由于DS和RS在同一个网络中,所以可以通过链路层进行报文传输,POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server;

  • RS处理完成后,将响应报文通过lo接口传送给eth0网卡向外发出。此时源IP是VIP,目标IP是Cip

  • 响应报文最终送达至客户端

特点:
- Real Server可以是私有地址也可以是公有地址。如果使用公网地址,此时可以通过互联网对RIP进行直接访问
- Real Server 和 Director Server必须处于同一物理网络中
- 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server。
- 不支持地址转换,也不支持端口映射。
- RS的网关绝不允许指向DIP(因为我们不允许他经过director)。
- RS上的lo接口配置VIP的IP地址。

5. 性能

DR模式、TP TUNELL 模式都是在package in 时经过LVS ;在package out是直接返回给client;所以二者的性能比NAT 模式高。

但IP TUNNEL 因为是TUNNEL 模式比较复杂,其性能不如DR模式。

FULL NAT 模式因为不仅要更换 DST IP 还更换 SOURCE IP 所以性能比NAT 下降10%
DR > IP Tunnel > NAT > Full NAT

6. LVS的八种调度算法:
静态方法:仅根据算法本身进行调度

rr:Round Robin # 即轮询
wrr:Weighted RR # 即加权轮询
sh:Source Hashing # 即来源IP地址hash
dh:Destination Hashing # 即目标地址hash(不常用,仅用于前端多防火墙的场景,保证防火墙的连接追踪功能有效)

动态方法:根据算法及RS当前的负载情况
lc:Least Connection
# 评判标准:Overhead=Active*256+Inactive
# Overhead最小者胜出

wlc:Weighted LC
# 评判标准:Overhead=(Active*256+Inactive)/weight
# Overhead最小者胜出

sed:Shortest Expect Delay
# 评判标准:Overhead=(Active+1)*256/weight
# Overhead最小者胜出

nq:Never Queue # 集群开始时工作时,每台服务器都至少分配一个连接请求,然后再根据sed算法调度;

lblc:Locality-based Least Connection # 类似于dh+lc

lblcr:Relicated and Locality-based Least Connection # 主要用于后端服务器是缓存服务器时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值