一. 集群与分布式
1.1 系统性能扩展方式
当系统面临性能瓶颈时,通常有以下两种主流扩展思路:
- Scale Up(向上扩展):通过增强单台服务器的硬件配置来提升性能,这种方式简单直接,但受限于硬件物理极限,且成本会随着性能提升呈指数级增长,存在明显的缺点。
- Scale Out(向外扩展):通过增加服务器数量来分担负载,形成一个协同工作的整体。这种方式能线性扩展系统性能,成本相对可控,但需要解决多设备间的调度分配问题,因此诞生了集群Cluster技术。
1.2 什么是集群Cluster
集群是将多台计算机组合起来,协同工作以解决某个特定问题的系统,从外部看则为单一的系统。常见的集群类型有以下三种:
- LB(Load Balancing,负载均衡集群):由多台主机组成,每台主机承担部分访问请求,通过合理分配负载避免单点过载。例如多个 Web 服务器组成的集群,由负载均衡器将用户请求分发到不同节点。
- HA(High Availability,高可用集群):核心目标是减少单点故障(SPOF,Single Point Of Failure),确保服务持续可用。关键指标包括:
- MTBF(Mean Time Between Failure):平均无故障时间,即系统正常运行的平均时长。
- MTTR(Mean Time To Restoration):平均恢复时间,即系统发生故障后恢复正常的平均时长。
- 可用性 A:计算公式为
A=MTBF/(MTBF+MTTR)
,取值范围在 (0,1) 之间,通常用99%, 99.5%, 99.9%, 99.99%, 99.999%来表示。 - SLA(Service Level Agreement,服务等级协议):服务提供商与用户约定的可用性标准(如 “三个 9”“四个 9”),未达标可能触发惩罚措施,运维的核心目标之一就是达成 SLA。
- HPC(High-performance Computing,高性能计算集群):用于处理大规模复杂计算任务(如气象模拟、科学研究),属于国家战略资源,不在基础运维课程范围内。
1.3 什么是分布式
分布式是将一个复杂系统拆分为多个子模块,部署在不同服务器上协同工作的架构模式,常见应用场景包括以下几种:
- 分布式存储:如Ceph、GlusterFs、FastDFS等,将数据分散存储在多个节点,提升容量和可靠性。
- 分布式计算:如Hadoop、Spark,将计算任务分解到多个节点并行处理,加速大规模数据运算。
- 分布式应用:按功能拆分服务(如微服务架构),每个服务独立部署和扩展。
- 分布式静态资源:将图片、视频等静态资源存储在不同集群,减轻主服务压力。
- 分布式数据缓存:使用Redis等key-value缓存系统,分散数据访问压力。
1.4 集群与分布式的区别
- 集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的
- 分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务
- 效率提升方式:集群通过提高单位时间内执行的任务数来提升效率;分布式通过缩短单个任务的执行时间来提升效率。
- 故障影响:集群中某台服务器垮了,其他服务器可以顶上来;分布式中某个节点垮了,对应的子业务可能会失败。
二. lvs--Linux virtual server
2.1 lvs介绍
- LVS 即 Linux Virtual Server(Linux虚拟服务器),是一种负载调度器,其功能集成在 Linux 内核中,能够实现对多台服务器的负载均衡调度,提升服务的可用性和并发处理能力。
- LVS由章文嵩博士主导开发。在实际应用中,阿里巴巴的四层 SLB(Server Load Balance,服务器负载均衡)便是基于LVS结合 keepalived 实现的,这体现了 LVS 在大规模网络服务中的重要价值。
- LVS 官网: http://www.linuxvirtualserver.org/
- LVS主要工作在 OSI 模型的第四层(传输层),基于IP和端口进行负载均衡调度,支持 TCP、UDP 等协议。
- LVS相关术语
- VS:Virtual Server,负责调度
- RS:Real Server,负责真正提供服务
2.2 lvs集群体系结构
2.3 LVS的概念
访问流程1:CIP <--> VIP == DIP <--> RIP
访问流程2:CIP --> VIP == DIP --> RIP --> CIP
- VS(Virtual Server):调度器
- RS(Real Server):真实的资源主机
- CIP(Client IP):用户IP
- VIP(Virtual serve IP):用户访问的IP
- DIP(Director IP):负载均衡器的真实IP
- RIP(Real server IP):资源主机的IP
2.4 LVS集群的类型
- lvs-nat: 修改请求报文的目标IP,多目标IP的DNAT
- lvs-dr: 操纵封装新的MAC地址
- lvs-tun: 在原请求IP报文之外新加一个IP首部
- lvs-fullnat: 修改请求报文的源和目标IP
三. NAT模式
3.1 什么是NAT模式
- LVS-NAT(Linux Virtual Server - Network Address Translation)是 LVS 负载均衡的基础模式,通过网络地址转换实现流量分发。
- 本质是基于 Linux 内核的 iptables DNAT功能,支持多目标地址转换,是最容易实现的 LVS 模式。
- RIP和DIP应在同一个IP网段;RS 的默认网关
- 请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈
- 支持端口映射,可修改请求报文的目标PORT
- VS必须是Linux系统,RS可以是任意OS系统
3.2 NAT模式数字逻辑
流程:CIP --> VIP == DIP --> RIP --> DIP = VIP --> CIP
由于数据的进出都要经过调度器VS(Virtual Server),因此后端建议最多挂10台RS
- 客户端发出请求包,内容包括请求来源(cip)、访问目的地的IP(vip)、目标端口(port80)
- 到达vs后,访问目的地将会改变成真实的目标主机的IP(RIP),目标端口修改为RS1实际监听的 9000 端口
- RS1接收到后发送响应数据包,请求来源改为RIP1,响应目标CIP,相应端口9000
- vs收到响应数据包后,修改响应报文:请求来源修改为VIP,响应目标不变,端口改为80
- 客户端接收到vs发来的响应数据包
3.3 NAT模式实验环境配置
3.3.1 配置IP
本次实验一共需要四台主机:RS1、RS2、lvs、客户端client
仅主机网段:192.168.103.0
NAT模式网段:192.168.132.0
- RS1 仅主机 192.168.103.10
- RS2 仅主机 192.168.103.20
- lvs 仅主机 192.168.103.100 nat 192.168.132.100
- client nat 192.168.132.111
3.3.2 实验前配置
- RS1、RS2下载httpd并关闭防火墙
- RS1、RS2开启web服务
- 调度器lvs可以访问RS1、RS2
- 在lvs系统中开启 IP 转发功能
3.4 NAT模式实现过程
- 配置 LVS 的 NAT 模式负载均衡
- LVS关闭火墙
- 由于client有两个网段的IP,所以两个RS的网关需要指定为dip(192.168.103.100)
- client可以访问 LVS 集群虚拟 IP。第一次被调度到后端真实服务器 RS1,第二次被调度到后端真实服务器 RS2,体现了 LVS 负载均衡的效果
五. TUN模式(隧道模式)
5.1 什么是TUN模式
TUN 模式是 LVS 负载均衡的一种实现方式,特点是不修改原请求 IP 首部(源 IP 为客户端 CIP、目标 IP 为虚拟服务 VIP),而是在原 IP 报文外新增一层 IP 隧道封装(源 IP 为调度器 DIP、目标 IP 为真实服务器 RS 的 RIP ),将请求发往选定 RS。RS 直接响应客户端(源 IP 为 VIP、目标 IP 为 CIP ),无需再经过调度器转发响应。
- DIP、VIP、RIP 需为公网地址
- RS 的网关不能指向 DIP(响应直接回客户端,无需经调度器 )
- 不支持端口映射
- 请求必经调度器Director,响应直接走客户端 - RS 链路,调度器不参与响应转发
- RS 的操作系统必须支持 IP 隧道功能(如 Linux 需开启 IPIP 隧道模块 )。
5.2 数据传输流程
- 请求流程:客户端发请求,数据包含源 IP(CIP)、目标 IP(VIP)及端口。调度器(VS)收到后,给原数据包加新 IP 隧道头(源 DIP、目标 RIP ),转发给选定 RS。
- 响应流程:RS 接收带隧道的数据包,解封装后处理请求,直接以 VIP 为源 IP、CIP 为目标 IP 回包给客户端,无需经过调度器。
六. fullnet模式
6.1 什么是fullnet模式
FULLNAT 模式是 LVS 实现负载均衡的一种网络地址转换模式,核心是同时修改请求报文的源 IP 地址和目标 IP 地址来完成转发,适配复杂网络场景。
- VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络。无需 RS 网关指向 DIP,降低拓扑限制。
- RS收到的请求报文源地址是DIP,因此只需响应给DIP;但Director还要将其发往Client
- 请求和响应报文都经由Director
- 支持端口映射
6.2 数据传输流程
CIP --> DIP VIP --> RIP
- 请求流程:Client 发请求到 VIP,Director 接收后做 FULL NAT,把源 IP(CIP)换成 DIP,目标 IP(VIP)换成 RIP,再经 Router 转发给 RS。
- 响应流程:RS 响应报文源为自身 RIP、目标为 DIP,回给 Director;Director 再次 FULL NAT,将源 IP 换为 VIP、目标 IP 换为 CIP,最终发给 Client 。