LVS原理

LVS(Linux Virtual Server)是一个用于实现负载均衡的开源软件,它允许在 Linux 系统上创建一个虚拟服务器,将流量分发到多个真实服务器上。LVS 的实现原理主要涉及以下几个关键组件:

调度器(Scheduler)
LVS 的核心组件之一是调度器,负责分发客户端请求到后端的真实服务器。
调度器基于不同的调度算法来做出决策,如轮询、加权轮询、最少连接、加权最少连接等。

网络地址转换(Network Address Translation, NAT):
LVS 使用 NAT 技术将客户端请求的源地址改写为 LVS 服务器的地址。
当请求到达真实服务器时,真实服务器响应的数据包经过 LVS 服务器,LVS 会将其源地址还原为客户端的真实地址。

IP 负载均衡:
LVS 可以通过 IP 负载均衡工作在网络层(四层负载均衡),它通过将一个虚拟 IP(VIP)映射到多个真实服务器 IP,实现流量的分发。

IP 转发:
LVS 服务器上开启 IP 转发功能,使其能够接收来自客户端的请求,并将其转发到真实服务器。
三种工作模式:

LVS 支持三种工作模式:NAT 模式、直接路由(Direct Routing)模式和 IP 隧道(IP Tunneling)模式。
NAT 模式: LVS 服务器将请求的源地址改写为自己的地址,并通过 NAT 技术将请求转发给真实服务器。
直接路由模式: LVS 服务器和真实服务器在同一个子网中,LVS 服务器只负责修改 MAC 地址,不修改 IP 地址。
IP 隧道模式: LVS 服务器和真实服务器在不同的子网中,通过隧道技术进行通信。

Keepalived:
Keepalived 是一个用于实现高可用性的工具,通常与 LVS 结合使用。
Keepalived 可以监控 LVS 服务器的健康状况,如果一个 LVS 服务器不可用,它可以将 VIP 快速切换到另一个可用的 LVS 服务器上。

实际流程:

1. 当客户端的请求到达负载均衡器的内核空间时,首先会到达PREROUTING链。
2. 当内核发现请求数据包的目的地址是本机时,将数据包送往INPUT链。
3. LVS由用户空间的ipvsadm和内核空间的IPVS组成,ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作,IPVS工作在INPUT链上,当数据包到达INPUT链时,首先会被IPVS检查,如果数据包里面的目的地址及端口没有在规则里面,那么这条数据包将经过INPUT链送至用户空间,交给用户空间的进程来处理

可能的处理方式

a.应用层处理:

  1. 用户空间的进程通常是网络服务的后端进程,比如一个 Web 服务器、FTP 服务器或其他网络服务。
  2. 这个进程会接收数据包,并根据自身的逻辑来处理请求,可能包括解析应用层协议、进行身份验证、处理业务逻辑等。

b.防火墙处理:

  1. 如果系统上运行了防火墙软件,用户空间的进程可能是防火墙程序。
  2. 防火墙程序可以根据自定义的规则对数据包进行进一步的过滤和处理,比如丢弃不安全的流量、记录日志等。

c.系统默认处理:

  1. 如果没有明确的用户空间处理程序与数据包匹配,系统可能会采用默认的处理方式。
  2. 默认的处理方式通常是根据系统配置的策略,比如丢弃无效的数据包、记录日志等。

4. 如果数据包里面的目的地址及端口在规则里面,那么这条数据报文将被修改目的地址为事先定义好的后端服务器,并送往POSTROUTING链。LVS 调度器选择真实服务器

  1.    LVS 调度器根据预定的调度算法(如轮询、最少连接数等)选择一个真实服务器。

  2. 调度器决定将请求转发到哪个真实服务器。

5. 最后经由POSTROUTING链发往后端服务器。

6.真实服务器处理请求:真实服务器接收到请求后,执行相应的处理,如处理 HTTP 请求、数据库查询等。

7.真实服务器响应:真实服务器生成响应并将其发送回 LVS 服务器。

8.LVS 服务器转发响应到客户端:

  • LVS 服务器接收到真实服务器的响应后,将响应转发给客户端。
  • 如果使用了 NATLVS 服务器还会根据之前的映射关系将目标地址改写为客户端的真实地址。

9.客户端收到响应:

  • 客户端最终收到由真实服务器生成的响应。

SLB和LVS的区别

SLB(Server Load Balancing)和 LVS(Linux Virtual Server)都是负载均衡的概念,但它们之间存在一些区别,主要涉及实现方式、平台支持和功能特性等方面:

1.实现方式:
SLB: 通常是指硬件负载均衡器,这些设备是专门设计用于负载均衡的硬件。它们可以是独立的物理设备或虚拟设备。硬件 SLB 提供高性能、专业的硬件支持,适用于大规模、高流量的网络环境。
LVS: 是一种软件负载均衡方案,运行在 Linux 操作系统上。LVS 使用 IP 虚拟服务器技术,通过内核模块和用户空间工具实现负载均衡。LVS 可以部署在通用硬件上,并且是一个开源的解决方案。


2.平台支持:
SLB: 通常是商业厂商提供的硬件设备,支持多种应用场景和网络架构。它们通常有丰富的功能和管理界面。
LVS: 是一个基于 Linux 的开源项目,可以在通用硬件上运行。由于是开源的,LVS 在 Linux 平台上具有较好的灵活性和定制性。


3.功能特性:
SLB: 硬件负载均衡器通常提供丰富的功能,包括高级的负载均衡算法、SSL 加速、应用层健康检查等。它们也可能支持多个网络协议。
LVS: 提供基本的负载均衡功能,包括四层(传输层)和七层(应用层)的负载均衡。LVS 通常使用 IPVS 内核模块来实现。


4.管理和配置:
SLB: 硬件负载均衡器通常提供可视化的管理界面,管理员可以通过图形界面轻松配置和监控负载均衡器的状态。
LVS: 管理员主要通过命令行工具(如 ipvsadm)来配置 LVS,这对于有经验的 Linux 管理员可能更为熟悉。

总体而言,SLB和LVS是两种不同的负载均衡实现,选择取决于具体的需求、预算和部署环境。硬件负载均衡器适用于大型、高流量的企业网络,而 LVS 更适合小到中型规模的网络,并提供了在开源环境下实施负载均衡的选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值