7月27日第一次作业

LVS 项目知识点总结作业:

一、什么是集群(Cluster)

1. 描述
集群是指一组相互独立的计算机(服务器),通过高速网络连接,作为一个整体对外提供服务。对于客户端来说,访问集群就像访问一台高性能的服务器一样。集群系统通过多台服务器的协同工作,提供了高可用性、高并发处理能力和可扩展性。

2.步骤(集群工作流程)

  • 步骤 1:客户端向集群的虚拟IP(VIP)发起服务请求。

  • 步骤 2:调度器(负载均衡器)接收到请求。

  • 步骤 3:调度器根据预设的算法,将请求分发到后端的某一台真实服务器(Real Server)上。

  • 步骤 4:后端服务器处理请求,并将结果返回给客户端。

二、集群分类

1. 描述
根据主要目的不同,计算机集群通常分为三类:

  • 高可用性集群(High Availability Cluster, HA)

    • 作用:保证服务的连续性。当主节点宕机时,备用节点能立即接管服务,避免业务中断(如双机热备)。

  • 负载均衡集群(Load Balancing Cluster, LBC)

    • 作用:将大量的用户访问请求分摊给多台服务器处理,提高系统的整体响应速度和并发处理能力(LVS 属于此类)。

  • 高性能计算集群(High Performance Computing Cluster, HPC)

    • 作用:利用多台服务器的计算能力,进行复杂的科学计算、数据分析等任务(如大数据处理、天气预报模拟)。

三、LVS 的作用

1. 描述
LVS(Linux Virtual Server,Linux 虚拟服务器)是 Linux 内核自带的负载均衡软件。它的核心作用是在 Linux 操作系统上构建一个高性能、高可用的负载均衡集群。

  • 负载均衡:将客户端的请求分发到后端多台真实服务器(RS)。

  • 高可用性:当后端某台服务器宕机时,LVS 能够自动检测并将其剔除出集群,不影响整体服务。

  • 性能提升:利用多台服务器分担请求,极大地提高了业务的并发处理能力。


四、LVS 的4种模式及原理

1. 描述
LVS 主要有四种工作模式:NAT、DR、TUN、FULLNAT。其中 DR 模式最常用。

(1)LVS-NAT(网络地址转换模式)

  • 原理:客户端请求到达 LVS(调度器),LVS 修改请求报文的目标 IP 地址(VIP 改为 RIP),转发给后端 RS。RS 处理完毕后,将响应报文返回给 LVS,LVS 再将源 IP 改为 VIP 返回给客户端。

  • 特点:请求和响应都必须经过 LVS,LVS 容易成为瓶颈。

(2)LVS-DR(直接路由模式)

  • 原理:LVS 只修改请求报文的目标 MAC 地址,将请求直接转发给后端的 RS。RS 处理完毕后,直接将响应报文返回给客户端,不回传给 LVS

  • 特点:响应流量不经过 LVS,性能极高,是生产环境最常用的模式。要求 LVS 和 RS 必须在同一个物理网段。

(3)LVS-TUN(隧道模式)

  • 原理:LVS 将请求报文通过 IP 隧道(IPIP)封装,转发给后端的 RS。RS 收到后解封装,处理请求,并直接返回响应给客户端。

  • 特点:LVS 和 RS 可以不在同一个网段,支持跨网段调度,但开销较大。

(4)LVS-FULLNAT(完全 NAT 模式)

  • 原理:在 NAT 基础上,不仅修改目标 IP,还修改源 IP(CIP 改为 LVS 的 IP)。这样确保了请求和响应都能正常返回 LVS,再转发给客户端。

  • 特点:后端 RS 不需要配置网关指向 LVS,部署更灵活,但性能损耗较大。

2.步骤(DR 模式配置简要步骤)

  • 步骤 1:在 LVS 调度器上配置 VIP(绑定在 lo 口或物理网卡上)。

  • 步骤 2:在 LVS 上配置 ipvsadm 规则(设置 VIP 和调度算法)。

  • 步骤 3:在 RS 服务器上配置 VIP 绑定到 lo 口(抑制 ARP 响应,防止 VIP 冲突)。

  • 步骤 4:在 RS 服务器上配置内核参数 arp_ignore 和 arp_announce,禁止响应 VIP 的 ARP 请求。

  • 步骤 5:验证访问,测试负载均衡效果。


五、LVS 的13种算法

1. 描述
LVS 的调度算法决定了调度器如何将新请求分配给后端的真实服务器(RS)。分为静态算法动态算法两大类,共 13 种。

静态调度算法(4种):不考虑后端服务器的当前负载情况。

  1. RR(轮询):按顺序轮流分配。

  2. WRR(加权轮询):根据权重比例分配,权重高的服务器获得更多请求。

  3. DH(目标地址哈希):根据请求的目标 IP 地址进行哈希分配,相同目标 IP 始终发给同一台 RS。

  4. SH(源地址哈希):根据请求的源 IP 地址进行哈希分配,相同客户端 IP 始终发给同一台 RS(实现会话保持)。

动态调度算法(9种):根据后端服务器的实时负载情况动态分配。

  1. LC(最小连接数):分配当前连接数最少的 RS。

  2. WLC(加权最小连接数):在 LC 基础上加入权重,计算 (当前连接数 / 权重) 最小的 RS 优先分配(LVS 默认算法)。

  3. SED(最短期望延迟):计算 (当前连接数 + 1) / 权重,选取值最小的 RS。

  4. NQ(永不排队):如果有空闲的 RS,直接分配;否则使用 SED 算法。

  5. LBLC(基于本地的最少连接):针对目标 IP 的调度,尽量将相同目标 IP 的请求发给同一台 RS,但如果该 RS 过载,则找其他 RS。

  6. LBLCR(带复制的本地最少连接):在 LBLC 基础上,如果某台 RS 负载过高,可以将其承载的部分目标 IP 复制到其他 RS。

  7. DH(目标地址哈希,也属动态):注意不同版本的归类,有些将其归为基于目标地址的动态哈希。

  8. SH(源地址哈希,也属动态):类似。

  9. MQ(最低队列):LVS 内核较少直接使用。

(注:实际常说的 RR、WRR、LC、WLC、SH、DH 等是核心算法,13 种是统称)


六、LVS 的多端口轮询问题解决方案

1. 描述
问题:LVS 默认配置下,ipvsadm 只能针对单一端口进行调度。如果后端服务器同时运行了多个服务(如 Web 的 80 端口 和 HTTPS 的 443 端口),我们需要分别配置两条规则。如果服务端口数量非常多(例如几十个),手动配置会非常繁琐,且不容易维护。

 解决方案与步骤(FWMARK 防火墙标记法)

  • 步骤 1:使用 iptables 的 multiport 模块,将多个需要调度的目标端口(如 80, 443)打上一个相同的防火墙标记(例如 --set-mark 10)。

  • 步骤 2:在 ipvsadm 中不绑定具体的端口,而是使用 -f 参数绑定这个防火墙标记号(例如 ipvsadm -A -f 10)。

  • 步骤 3:添加后端真实服务器时,端口指定为 0(表示由标记决定)。

  • 效果:一个规则管理了所有端口的流量,实现了多端口统一轮询。


七、LVS 的会话粘滞解决方案

1. 描述
问题:用户在访问网站时,通常会产生会话状态(Session),例如登录状态、购物车信息等。如果使用轮询(RR)等算法,用户第一次请求到了服务器 A,第二次请求被分发到了服务器 B,由于服务器 B 没有该用户的 Session,用户会被迫重新登录,导致体验极差。这就是“会话粘滞(Session Sticky)”问题。

2.解决方案与步骤

方案一:使用 LVS 的源地址哈希算法(SH)

  • 步骤 1:在 LVS 配置中,将调度算法设置为 sh(Source Hashing)。

  • 步骤 2:配置好后,同一个客户端 IP 的所有请求都会被哈希算法固定分发到同一台真实服务器上,从而保证 Session 不丢失。

  • 缺点:如果该服务器宕机,用户的 Session 还是会丢失(虽然此时会切换到其他服务器)。

方案二:统一会话存储(Redis/Session 共享,更推荐)

  • 步骤 1:在后端所有的 Web 服务器(如 Tomcat、PHP)中,不将 Session 存放在本地内存。

  • 步骤 2:搭建一个独立的 Redis 或 Memcached 缓存集群。

  • 步骤 3:将所有服务器的 Session 存储全部指向这个统一的 Redis 集群(如修改 Tomcat 的 context.xml 配置)。

  • 步骤 4:这样无论 LVS 将请求分配给哪一台 Web 服务器,服务器都能从同一个 Redis 中读取到用户的 Session 数据。

  • 优点:彻底解决了 LVS 调度带来的会话问题,即使某一台服务器坏掉,用户的登录状态依然不受影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值