LVS--负载均衡

LVS (Linux Virtual Server)

作用:实现负载均衡
特点:可跨平台 (window、linux)
核心组件:ip_vs、ipvsadm
ip_vs:Linux的内核功能模块,工作在内核,依赖该内核模块实现负载均衡功能。 (keepalived也可以对ip_vs进行管理)
ipvsadm:应用层程序,该程序可以和内核中的ip_vs模块通信,实现对负载均衡的管理和控制。

LVS相关术语
DS(Director Server):指的是前端负载均衡器的节点
RS(Real Server):后端真实的工作服务器
DIP(Director Server IP):主要用于和内部主机通信的IP地址
RIP(Real Server IP):后端服务器的IP地址
CIP(Client IP):访问客户端的IP地址
VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址

LVS的工作模式

DR模式、NAT模式、TUN模式、FULLNAT模式

DR(Direct Routing)模式:直接路由模式
其工作原理如下
第一步:客户端的请求会发送到机房,此时仅仅DR可以接收这个请求。因为目标IP、MAC都是DR,所以DR可以接收这个请求。
第二步:DR接收请求后,会重新封装请求
首先会通过预先定义好的算法找出一个RS的mac地址
然后将这个请求报文的目标mac改为这个mac
最后将这个修改mac后的请求报文发送出去
第三步:因为这是内部网络,所有节点都可以接收这个请求数据包,所以
首先判断IP MAC 是否与自己的IP MAC相同,只有相同才会接收和处理这个请求
处理完成后,会将处理结果直接发送给客户端(不再经过DR)

注意
一、为了让DR、RS可以接收请求,就得要求都需要有相同的那个IP,这个IP就是VIP,但是这样就会导致IP冲突,因此就要将VIP绑定在本地的回环接口之上。
二、因为多个节点都有VIP,因此客户端在请求获取MAC地址的时候,就会出现arp争抢的问题,因此在RS上要设置arp抑制(不让RS对arp请求做出应答)

DR模式总结
1、调度器仅仅修改目标MAC
2、响应报文是直接发送给客户端的,不在经过调度器
3、RS必须要和DR在同一个局域网中
4、DR无法修改请求报文中的目标端口,因此RS的端口必须和DR一致
5、DR和所有的RS都需要配置VIP
6、所有的RS都需要配置arp抑制
7、RS必须可以直接和外网通信
8、DR模式相率相对高,配置复杂,所以如果访问量小(pv小于2000),建议用更加简单的nginx haproxy

NAT模式
其工作过程
第一步:客户端发送请求,请求报文中的IP都是VIP
第二步:DR接收请求报文,然后通过算法找出一个RS,然后将请求报文中的目标IP改为找出的RS的RIP
第三步:RS接收到DR转发的请求之后,会进行处理,然后将处理的结果发送给DIP ,发送给DR
第四步:DR收到RS所返回的数据,然后会修改这个数据包,将IP 地址改为VIP,然后就可以发送给客户端了

注意
RS无法直接给客户端返回数据,其解决方式是将DR的内网卡作为所有RS的网关
DR需要启动路由转发功能

NAT模式总结
1、调度器在接收客户端的请求的时候,修改的是目标IP,在给客户端返回数据的时候,修改的是源IP
2、DIP和RIP必须在同一个网络,而且可以仅仅是一个私有地址
3、RS不需要连接外网也能正常工作(RS被保护起来)
4、请求的数据和应答的数据都需要经过DR的处理,所以在高并发的情况下,DR压力较大
5、NAT模式的使用场景在后端节点较少的情况(RS小于20)
6、RS的网关地址必须指向DR的内网卡IP地址
7、DR需要至少两个网卡(一个连接外网,一个个连接内网)
8、DR需要开启路由转发功能

TUNNEL模式 (隧道模式)
隧道模式下,RS 收到客户端请求,封装数据包,使源 IP 成为 VIP,目标 IP 成为RIP,当 RS收到数据包时,进行解封装,还原数据包,处理后,利用 VIP发出响应,从 RIP 所在的接口发出,直接达到客户端。

FULLNAT模式
这是NAT模式的扩展,RS和SR可以不在同一个网络
RIP和DIP可以是私有地址,他们也可以不在同一个网络,RS的网关可以不指向DR的内网卡IP

LVS的调度算法

所谓的调度算法就是,DR按照什么规则来从多个RS中筛选出来一个给用户提供服务
动态算法:DR会实时的检测后端的RS的负载情况,将新用户的请求调度到一个负载较少的RS之上
静态算法:无论后端的RS当前的服务器负载情况怎么样,都按照固定的方式来给RS分配用户请求

静态算法
rr:Round Robin,轮询,将客户端的请求交替分配给RS
wrr:Weighted Round Bobin,加权轮询,根据RS的性能不同,让他们来承担不同比例的用户请求
dh:Destination Hashing,目标地址哈希调度,基于用户所请求的地址做哈希表
作用:实现将对于相同的地址的请求调度到同一个RS之上
使用场景:适用于前端是一个DR,后端是多个cache的时候
sh:Source Hashing,源地址的哈希调度,基于用户的IP地址做哈希表
作用:实现将同一个客户端调度到相同的RS之上

动态算法
lc:Least Connection,最小连接数调度,本质是调度到当前负载最低的主机上
overhead=active256+inactive
wlc:Weighted Least Connection,加权最小连接数调度,本质是调度到当前负载最低的主机上
overhead=(active
256+inactive)/weight
sed:是wlc补充,为了降低overhead出现重复的情况
overhead=((active+1)*256+inactive))/weight
nq:Never Queue,算法基本和sed相同,为了避免性能差的RS长时间处于空闲状态
lblc:基于目标地址的最小连接数调度,这种算法是lc和dh的组合,适应于cache场景
lblcr:带有复制功能的lblc

算法的选型
一般的网络服务(http、mail、mysql)
选用:rr、wlc、wrr
缓存服务(web、cache/db、cache)
选用:dh、lblc、lblcr

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值