LVS负载均衡

本文深入探讨了LVS(Linux虚拟服务器)的工作原理,详细解释了其如何通过调度层、Server集群层和共享存储实现高性能高可用的服务器集群。文章还介绍了LVS的八大调度算法及其优缺点,以及如何结合Keepalive进行健康检查,确保服务稳定性和高可用性。

LVS是 Linux Virtual Server 的简称,即Linux虚拟服务器。LB负载均衡集群是load balance的简写。常用的负载均衡开源软件有nginx、lvs、haproxy,硬件设备有F5、Netscale。

LB集群原理:当用户的请求过来时,直接分发到Director Server上,它把用户请求根据设置好的调度算法,智能均衡地分发到后端的真实服务器(real server)上。为避免不同机器上用户请求得到的数据不一样,需要用到共享存储,保证所有用户请求的数据一样。

一、基本介绍

通过 LVS 达到的负载均衡技术和 Linux 操作系统实现一个高性能高可用的 Linux 服务器集群,LVS架构从逻辑上可分为调度层、Server集群层和共享存储。

主要特点:

高并发连接:基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器可支持上万并发连接。

稳定性强:工作在网络4层上仅作分发之用,这个特点决定了它在负载均衡里的性能最强,稳定性最好,对内存和cpu消耗极低。

成本低廉:硬件负载均衡器少则十几万,多则几十上百万,LVS只需一台服务器和就能免费部署使用。

配置简单:仅需几行命令即可完成配置,也可写脚本进行管理。

多种算法:可根据业务场景灵活调配进行使用。

多种工作模式:可根据业务场景,使用不同的工作模式。

应用范围广:工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等。

缺点:

工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。

二、工作原理

在这里插入图片描述
在这里插入图片描述

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链

  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链

  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

三、八种调度算法

  1. 轮询调度 rr

按依次循环的方式将请求调度到不同的服务器上。轮询算法假设所有的服务器处理请求的能力都一样,调度器将所有请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。

  1. 加权轮询 wrr

比 rr 的算法多了权重的概念,可以给 RS 设置权重,权重越高,分发的请求数越多,权重的取值范围 0~100。如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求是服务器A的2倍。权值越高的服务器,处理的请求越多。

  1. 最少链接 lc

根据后端 RS 连接数来决定把请求分发给谁,比如 RS1 连接数比 RS2 连接数少,请求就优先发给 RS1。

  1. 加权最少链接 wlc

比 lc 多了一个权重的概念。

  1. 基于局部性的最少连接调度算法 lblc

请求数据包的目标 IP 地址,先根据请求的目标 IP 寻找最近的该目标 IP 所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行服务器。

  1. 复杂的基于局部性最少的连接算法 lblcr

记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

  1. 目标地址散列调度算法 dh

根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

  1. 源地址散列调度算法 sh

与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

四、LVS结合keepalive

LVS可以实现负载均衡,但不能进行健康检查,比如一个rs出现故障,LVS仍然会把请求转发给故障的rs,这样就导致请求无效。keepalive 可以进行健康检查,且能同时实现LVS的高可用性,解决LVS单点故障的问题。

### LVS负载均衡配置指南 #### 选择合适的LVS工作模式 对于LVS的配置,首先要决定采用哪种工作模式。常见的有NAT、DR和TUN三种模式[^2]。 - **NAT (Network Address Translation)** 这种模式下,真实服务器不需要知道虚拟IP地址的存在,所有的流量都通过负载均衡器转发。适用于小型网络环境。 - **DR (Direct Routing)** DR模式允许客户端直接访问后端的真实服务器,而不必经过负载均衡器返回响应。这可以显著减少负载均衡器的压力并提高效率[^3]。 - **TUN (Tunneling)** TUN模式利用隧道技术来传递数据包,在某些特定场景中有其独特优势,比如跨数据中心部署时可选此方案。 #### 安装与基本设置 安装LVS通常涉及以下几个方面: 1. 确认操作系统支持ip_vs模块; 2. 加载必要的内核模块如`ip_vs`, `ip_vs_rr`, `ip_vs_wrr`, 和 `ip_vs_lc`; 3. 设置防火墙规则以允许所需的通信协议和服务端口; ```bash modprobe ip_vs modprobe ip_vs_rr modprobe ip_vs_wrr modprobe ip_vs_lc ``` #### 配置调度算法 根据需求选取适合的调度策略,例如加权轮询(WRR),它是在标准轮询基础上加入了权重参数,使得更强大的机器能承担更多任务[^4]。 ```bash # 使用WRR算法添加服务到VIP上 ipvsadm -A -t VIP:port -s wrr ``` 为了进一步优化性能,还可以考虑使用最少连接数(LC)作为调度方法之一,这种做法会优先把新请求发送给当前活跃连接数量较少的服务实例。 #### 实现高可用性 为确保系统的稳定性和可靠性,建议配合Keepalived工具一起使用,它可以监控主节点的状态并在必要时候自动切换至备用节点继续提供服务[^1]。 ```bash yum install keepalived -y systemctl start keepalived systemctl enable keepalived ``` 完成上述步骤之后,便可以根据具体的应用场景调整各项参数直至达到最优效果。值得注意的是实际操作过程中可能还会遇到其他细节问题,因此务必参照官方文档以及社区资源深入学习掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值