LVS负载均衡集群

发布于:2025-06-19 ⋅ 阅读:(14) ⋅ 点赞:(0)

LVS负载均衡集群

什么是集群?

一、集群的核心目标

  1. 高性能计算:通过多节点并行处理复杂任务(如科学计算、大数据分析)。
  2. 高可用性(HA):避免单点故障,部分节点失效时服务仍可正常运行。
  3. 可扩展性:通过添加节点提升整体处理能力,支持业务规模增长。
  4. 资源整合:集中管理分散的计算、存储资源,提高利用率。

二、集群的常见类型及特点

根据应用场景,集群可分为以下几类:

1. 负载均衡集群(Load Balancing Cluster)
  • 目标:将流量或任务均匀分配到多个节点,避免单节点过载。

  • 典型场景:Web 服务、API 接口、数据库读写分离。

  • 技术示例

    • LVS(4 层负载均衡)、Nginx(7 层负载均衡)用于流量分发;
  • Redis Cluster 通过分片(Sharding)分摊数据存储压力。

2. 高可用性集群(High Availability Cluster)
  • 目标:通过冗余节点和故障转移机制,确保服务持续可用。

  • 核心机制

    • 心跳检测(节点间实时监控状态);
    • 主备切换(Master-Slave 模式,主节点故障时备节点接管)。
  • 典型场景:数据库主从集群(如 MySQL Replication)、Keepalived+LVS 的虚拟 IP 漂移。

3. 高性能计算集群(HPC Cluster)
  • 目标:通过并行计算处理大规模科学计算、AI 训练等任务。
  • 技术特点
    • 节点间通过高速网络(如 InfiniBand)互联;
    • 使用分布式计算框架(如 Hadoop、Spark、TensorFlow Distributed)。
  • 典型场景:气象预报、基因测序、自动驾驶模型训练。
4. 存储集群(Storage Cluster)
  • 目标:将分散的存储资源整合为统一存储池,提供海量数据存储和冗余备份。
  • 核心技术
    • 分布式文件系统(如 HDFS、Ceph);
    • 块存储集群(如 GlusterFS)、对象存储集群(如 MinIO)。
  • 典型场景:云计算存储(如 AWS S3)、大数据日志存储。
5. 容器集群(Container Cluster)
  • 目标:管理和调度容器化应用(如 Docker),实现服务自动化部署与弹性伸缩。
  • 代表技术:Kubernetes(K8s),通过 Pod、Service、ReplicaSet 等组件管理容器实例。
  • 优势:服务快速部署、资源动态分配、故障自动恢复。

三、集群的关键技术与组件

  1. 分布式协调
    • ZooKeeper、etcd 用于维护集群节点状态一致性(如选举主节点、配置同步)。
  2. 通信协议
    • RPC(远程过程调用,如 gRPC)、消息队列(如 Kafka)用于节点间数据交互。
  3. 数据一致性
    • 强一致性(如 Raft 算法)、最终一致性(如 Cassandra 的读写策略),根据业务需求选择。
  4. 资源管理
    • YARN(Hadoop 资源管理器)、Kubernetes 调度器负责分配 CPU、内存等资源。

四、集群与单机的对比优势

维度 单机系统 集群系统
性能 受限于硬件规格(如 CPU 核数) 可通过添加节点线性扩展性能
可用性 单点故障风险高 多节点冗余,故障影响可隔离
扩展性 硬件升级成本高、复杂度大 支持 “横向扩展”(添加节点)
成本 高端硬件采购成本高 可使用廉价服务器,成本更灵活
复杂度 管理简单 需要处理分布式一致性、网络通信等问题

五、典型集群架构示例

  1. Web 服务集群

    客户端 → 负载均衡器(LVS/Nginx) → 应用服务器集群(Tomcat/Node.js) → 数据库集群(MySQL主从)
    
  2. 大数据集群

    数据采集 → HDFS(存储) + Spark集群(计算) → 结果存储(HBase)
    

六、集群面临的挑战

  1. 分布式一致性:多节点数据同步时可能出现冲突(如 “脑裂” 问题)。
  2. 网络延迟:节点间通信依赖网络,高并发下可能成为瓶颈。
  3. 故障排查:多节点环境下定位故障源比单机更复杂。
  4. 管理复杂度:需专业工具(如 Prometheus 监控、Grafana 告警)辅助运维。

总结

集群是现代 IT 架构的核心基础,通过 “分而治之” 的思想将多台设备整合成强大的计算实体。从企业级 Web 服务到前沿的 AI 训练,集群技术解决了单机系统在性能、可用性和扩展性上的局限,但也引入了分布式系统的复杂性。理解集群的类型和技术原理,是设计高可用、高性能系统的关键。

LVS(Linux Virtual Server)的全面解析

一、LVS 是什么?

LVS(Linux 虚拟服务器)是一个由章文嵩博士开发的开源负载均衡解决方案,基于 Linux 内核实现,主要用于构建高可用、高性能的服务器集群。它工作在 OSI 模型的第 4 层(传输层),通过 IP 和端口进行流量转发,可视为 “网络流量调度器”。

二、LVS 的核心作用
  1. 负载均衡:将客户端请求分发到多个后端真实服务器(RS),避免单台服务器过载,提升系统整体处理能力。
  2. 高可用性:通过健康检查机制监控 RS 状态,自动剔除故障节点,确保服务持续可用。
  3. 流量调度:支持多种负载均衡算法,根据业务需求灵活分配流量,优化资源利用率。
三、LVS 的优点
维度 具体优势
性能卓越 工作在内核层,几乎不消耗 CPU 资源,转发效率极高,单台 LVS 节点可支撑数百万级并发连接(取决于硬件)。
稳定性强 基于 Linux 内核原生实现,与系统深度集成,长期运行稳定性高,适合作为关键业务的流量入口。
兼容性广 支持 TCP、UDP 等多种协议,可负载均衡 Web、数据库、流媒体等各类服务,且对后端 RS 的操作系统、应用架构无特殊要求。
功能灵活 支持多种工作模式(DR、NAT、TUN)和负载均衡算法(轮询、加权轮询、最少连接等),可根据网络环境和业务场景灵活配置。
成本低廉 纯开源方案,无需商业软件授权费用,仅需普通 Linux 服务器即可搭建高性能集群。
四、LVS 的缺点
维度 具体限制
配置复杂度高 原生 LVS(通过ipvsadm命令配置)需手动编写规则,对运维人员技术要求较高;虽可通过 Keepalived 简化配置,但底层原理仍需深入理解。
健康检查能力有限 原生 LVS 仅支持简单的 TCP 端口检查,若需更复杂的应用层检查(如 HTTP 响应码、内容校验),需结合 Keepalived 或额外工具(如 Nagios)。
会话保持实现复杂 会话保持(Persistence)依赖内核模块,配置不当可能导致连接中断,且跨 LVS 节点的会话同步需额外方案(如分布式存储会话状态)。
不支持 7 层负载均衡 仅工作在 4 层,无法基于 URL、HTTP 头信息等 7 层参数进行流量调度,需搭配 Nginx、HAProxy 等 7 层负载均衡器使用。
运维门槛高 出现故障时,需深入排查内核层、网络层、RS 层等多层问题,定位难度较大,对运维团队的技术深度要求较高。
五、LVS 的典型应用场景
  1. 大型网站流量入口:如早期的淘宝、京东等电商平台,利用 LVS+Keepalived 构建高可用负载均衡集群,支撑海量用户访问。
  2. 金融 / 银行核心系统:对稳定性和性能要求极高的场景,LVS 可作为流量调度中枢,确保服务持续可用。
  3. 云计算平台:OpenStack 等云平台常使用 LVS 作为虚拟路由器,实现租户流量的负载均衡和隔离。
  4. CDN 节点调度:在内容分发网络中,LVS 用于将用户请求调度到离其最近的缓存节点,提升响应速度。
六、LVS 与其他负载均衡工具的对比
工具 工作层 性能 功能丰富度 适用场景
LVS 4 层 极高 基础负载均衡 + 高可用 大流量、高并发的 4 层流量调度
HAProxy 4/7 层 丰富的 7 层功能 需基于 URL、header 调度的场景
Nginx 4/7 层 中高 7 层负载均衡 + 缓存 + 代理 Web 服务、API 网关、动静资源分离
Traefik 7 层 容器化环境自动配置 Kubern

示例 lvs+web+nfs

NAT模式

环境配置

192.168.10.101 nfs (安装nfs-utils)

192.168.10.102 web1 (安装 httpd nfs-utils)

192.168.10.103 web2 (安装 httpd nfs-utils)

lvs 192.168.10.104内 172.16.16.172 外 (安装 ipvsadm)

客户端 172.16.16.200

分别安装他们对应所需要的软件

配置 lvs

# 1. 创建虚拟服务(Virtual Server),定义负载均衡入口
ipvsadm -A -t 172.16.16.172:80 -s rr

# 参数解释:
# -A:添加一个新的虚拟服务(--add-service)
# -t:指定TCP协议的服务(--tcp-service)
# 172.16.16.172:80:虚拟IP地址(VIP)和端口,客户端通过此地址访问负载均衡器
# -s rr:使用轮询(Round Robin)调度算法,按顺序将请求分发给后端服务器

# 2. 添加第一台真实服务器(Real Server),权重为2
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 2

# 参数解释:
# -a:向虚拟服务中添加真实服务器(--add-real-server)
# -t 172.16.16.172:80:指定要关联的虚拟服务
# -r 192.168.10.102:80:真实服务器的IP地址和端口
# -m:使用NAT模式(Masquerade)进行负载均衡
# -w 2:设置权重为2,表示这台服务器处理请求的优先级是其他服务器的2倍

# 3. 添加第二台真实服务器,权重为1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1

# 参数解释:
# 与第二条命令类似,不同之处在于:
# - 真实服务器IP为192.168.10.103
# - 权重为1,表示这台服务器处理请求的优先级是第一台的一半

# NAT模式说明:
# 在NAT模式下,负载均衡器会修改请求和响应的IP地址,客户端和真实服务器之间的通信必须通过负载均衡器
# 这种模式的优点是配置简单,缺点是所有流量都要经过负载均衡器,可能成为性能瓶颈

# 验证配置:
# 执行以下命令查看当前的LVS配置
ipvsadm -L -n    
[root@lvs /]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 rr
  -> 192.168.10.102:80            Masq    2      0          0         
  -> 192.168.10.103:80            Masq    1      0          0         


 
在etc/sysctl.conf 下  
在lvs上开启net.ipv4.ip_forward = 1  启用 Linux 内核的 IP 转发功能。
sysctl -p  生效

配置httpd

俩个web上操作但内容要不一样区分出来配置验证lvs的轮训算法

[root@web1 conf]# echo "测试" >/var/www/html/index.html
####将web的网管改为lvs的集群地址

使用客户端访问lvs 验证案例是否成功

[root@kehuduan]# curl 172.16.16.172
测试
[root@kehuduan]# curl 172.16.16.172
测试
[root@kehuduan]# curl 172.16.16.172
测试2
####我们采用是加权轮询算法

配置nfs服务器

[root@nfs wwwroot]# dnf -y install nfs-utils  ###安装nfs工具集
[root@nfs wwwroot]# vim /etc/exports
/opt/wwwroot/ 192.168.10.0/24(rw,sync,no_root_squash)
#1. 共享目录路径
#/opt/wwwroot/:指定 NFS 服务器上要共享的目录路径。客户端挂载后将访问此目录的内容。
#2. 允许访问的客户端范围
#192.168.10.0/24:这是一个 CIDR 表示法,指允许访问该共享目录的客户端 IP 范围,即从192.168.10.0到192.168.10.255的所有 IP #地址(通常是一个局域网段)。
#192.168.10.0:网络地址
#/24:子网掩码,表示前 24 位是网络位(相当于255.255.255.0)
#3. 挂载选项(括号内参数)
#这些选项控制客户端如何访问共享目录:

#rw:Read-Write,允许客户端读写该目录(默认是只读)。
#sync:同步模式,服务器在确认写操作完成前,会等待数据真正写入磁盘。这保证数据一致性,但可能降低性能(相比async)。
#no_root_squash:特殊权限设置,允许客户端的 root 用户直接以 root 权限访问共享目录。
#默认情况下(root_squash),客户端的 root 用户会被映射为 NFS 服务器上的匿名用户(通常是nobody),防止客户端 root 用户随意修#改服务器文件。
#使用no_root_squash会取消这种限制,存在安全风险,通常仅在测试环境或信任客户端时使用。

[root@nfs wwwroot]# cat index.html 
gagagag


验证
[root@localhost]# curl 172.16.16.172
gagagag


网站公告

今日签到

点亮在社区的每一天
去签到