4层负载均衡服务器 -- LVS

一. 基础介绍

LVS 全称 Linux Virtual Server,即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,已被集成到Linux内核模块中。

LVS 的工作过程:client 端的互联网用户访问系统,LVS负载均衡服务器把用户的Web请求发送给LVS调度器,调度器在按照预设的算法将请求发送给后端的某台Web服务器,Web服务器访问数据存储服务器,返回用户访问的数据;整个过程对用户而言是透明的。

LVS 的目标,是作为流量接入层,处理更多的用户连接/用户请求,hold住流量;LVS不提供真正的服务,接受客户的访问,为整个集群提供一个唯一的入口,真正提供服务的是Real Server(可以是虚拟机,也可以数物理机)。

LVS 的特点

  • 快,能够快速响应互联网终端用户的请求,同时支持几百万的并发连接,系统的吞吐量最大可接近10Gbits/s
  • 数据包级别的转发,不会和客户端进行握手
  • 后端服务器可运行在Linux,Unix,Mac/OS,Windows NT/2000 等多种操作系统,支持大多数的TCP和UDP协议
  • 对用户透明,无需对客户机和服务机做任何修改

LVS 的相关术语
DS:Director Server,调度器,LVS前端负载均衡器
real Server:后端真实的工作服务器,真正提供服务
VIP:对外公布的IP,用户请求的目标IP的地址
DIP:Director Server IP,主要用于和 Real Server 之间通讯的IP地址
RIP:Real Server IP,后端服务器的IP地址
CIP:Client IP,访问客户端的IP地址

网络体系结构:
在这里插入图片描述

二. 工作模式

1.LVS-NAT

NAT (NetWork Address Translation)即网络地址转换,转换的是客户请求的目标地址,实现的思路是网络层(IP层)数据欺骗,将互联网终端用发送到Director的数据IP包中的目标地址进行替换。

NAT 的网络要求:
real server 的 gateway(默认网关)要指向Director中。只有Director拥有公共IP,暴露在广域网上。

NAT 的实现过程
在这里插入图片描述
client 发出请求,发送请求给Director 的VIP,Director 修改请求报文中的目标IP为RIP,Real Server 将请求的内容发给Director,Director再将报文中的源IP改为VIP。

NAT 的特点:

  • 配置最简单
  • 非对称的,上行小下行大
  • 带宽是瓶颈
  • 消耗算力,Director需要按照调度算法进行VIP到RIP的转换

2.LVS-DR

DR 模式采用的是直接路由的技术实现虚拟服务器。在DR模式中,LVS会依据Real Server的负载情况,连接数多少,动态地选择一台server,不修改目标IP和目标端口,而是将请求报文的数据帧的目标MAC地址修改为Real Server 的Mac地址,RS接收到数据包之后,直接撕掉MAC地址,就能看到目标IP(VIP)。

DR模式的实现过程:

在这里插入图片描述

  1. 当用户请求到达DS,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP;
  2. PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链;
  3. IPVS比对数据包请求的服务是否为集群服务,若是,将请求报文中的源MAC地址修改为DIP的MAC地址,将目标MAC地址修改RIP的MAC地址,然后将数据包发至POSTROUTING链。 此时的源IP和目的IP均未修改,仅修改了源MAC地址为DIP的MAC地址,目标MAC地址为RIP的MAC地址;
  4. 由于DS和RS在同一个网络中,所以是通过二层来传输。POSTROUTING链检查目标MAC地址为RIP的MAC地址,那么此时数据包将会发至Real Server;
  5. 响应报文最终送达至客户端;

DR 模式的特点和要求:

  • 基于二层的,mac地址欺骗
  • 请求时经过LVS,响应时直接返回给client,速度快,成本低
  • 隐藏VIP,对内隐藏,对外可见,避免数据回传
  • LVS 需要与RS在同一局域网内,因为需要通过MAC地址改写机制实现转发

3.LVS-TUN

TUN 模式又称 隧道 模式,IP隧道将一个IP报文封装在另一个IP报文中,即IP的数据包携带IP的数据包,解决了DR模型的物理局限性,实现了VIP——CIP的传输。

TUN模式的实现过程:在这里插入图片描述
client 请求数据包,目标地址发送到LVS上,LVS收到client 的请求包,在数据包的包头加上IP隧道的包头,再发出去;RS根据包头信息收到请求包,解开IP隧道信息,得到client的请求包并进行处理,处理完之后,使用VIP的线路,将响应数据包发送给client。

三. LVS调度算法

active:活动连接,client与server有链接,并有数据传送
inactive:非活动连接,client与server有链接,但是没有数据传送
weight:权重

算法说明
rr轮询算法,将请求依次分配给不用的rs节点,实现均摊分配
wrr加权轮询调度算法,依次给不同的RS的权值分配任务,权值高的优先获得任务,分配的连接数更多,相同权值的RS得到的连接数相同
lc最少连接调度,RS 中谁的连接少,就把下一个请求发给谁
wlc加权最少连接,(active*256+inactive)/weight,谁小就发给谁
Dh目的地址hash调度,以目的地址为关键字查找一个静态hash表来获得需要的RS
SH源地址hash调度,以源地址为关键字查找一个静态hash表来获得需要的RS
sed最短期望延迟,基于wlc,(active+1)*256/weight,谁小发给谁
nq不用排队,基于sed,在sed的基础上,谁的连接数为0就发给谁
lblc基于局部性的最少连接,类似于dh,目标地址hash,主要用于集群,若当前服务器未满负荷就分配,否则分配给连接数最小的RS
lblcr带复制的基于局部性的最少连接,基于lblc,新请求直接发送给连接最少的RS

四. keepalived

在分布式系统中,若LVS故障,会导致负载的业务下线,发生单点故障;若部分RS故障,LVS仍有这部分RS的负载记录,会造成部分用户请求得不到响应,影响系统的运行;keepalived可以有效的解决这两种故障,实现HA(高可用)。
解决策略:

  • 单点问题,LVS实现一变多(主备/主主)
  • LVS消除故障RS的负载记录问题,可以采用keepalived检测RS状态,验证应用层的HTTP协议,判断返回code,从而消除故障RS的负载记录。
    keepalived的作用:
  • LVS Master监控自己的服务,通告自己在线,Backup监听M状态,若M故障,B将推举新的M
  • 对后端real server做健康检查
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值