全网最最最全的LVS详解!!!

news2024/11/14 3:25:33

1 LVS-集群和分布式

1.1 集群

LVS(Linux Virtual Server)集群,即Linux虚拟服务器集群,是一个在Unix/Linux平台下实现负载均衡集群功能的系统。它由国人章文嵩博士在1998年开发,是中国国内最早出现的自由软件项目之一,现在LVS已经是Linux内核标准的一部分。LVS集群通过将多台服务器组织起来,共同对外提供服务,以提高系统的整体性能、可扩展性和高可用性。

1.1.1 集群的基本概念

  • 集群(Cluster):为解决某个特定问题将多台计算机组合起来形成的单个系统。这些计算机在对外提供服务时,只表现为一个整体,只提供一个访问入口(如域名或IP地址)。
  • LVS集群:特指使用LVS技术构建的服务器集群,它通过负载均衡调度器将客户端请求分发到后端的多台服务器上,从而实现请求的均衡处理和高可用性。

1.1.2 集群的组成

LVS集群主要由以下几个部分组成:

  • 调度器(Director/Dispatcher/Load Balancer):也称为代理服务器或前端服务器,负责接收客户端的请求,并根据预设的负载均衡算法将请求转发给后端服务器。调度器是集群对外提供服务的唯一入口。
  • 后端服务器(Real Server/Backend Server):负责处理调度器转发过来的请求,并将处理结果返回给客户端。后端服务器可以是一台或多台,根据集群的规模和需求进行配置。
  • 共享存储(可选):为后端服务器提供稳定、一致的文件存取服务,确保整个集群的统一性。共享存储可以使用NAS设备或提供NFS共享服务的专用服务器。

1.1.3 集群的工作模式

LVS集群支持多种工作模式,每种模式都有其特点和适用场景:

  1. NAT(Network Address Translation)模式
    • 修改请求报文的目标IP地址和端口,将请求转发给后端服务器。
    • 后端服务器的响应报文通过调度器返回给客户端,因此调度器容易成为瓶颈。
    • 支持端口映射,可以修改请求报文的目标端口。
  2. DR(Direct Routing)模式
    • 通过重新封装MAC地址来转发请求报文,不修改IP地址和端口。
    • 响应报文由后端服务器直接返回给客户端,不经过调度器,减轻了调度器的压力。
    • 需要确保前端路由器将目标IP为VIP的请求报文发往调度器。
  3. TUN(Tunneling)模式
    • 在请求报文之外再封装一个新的IP报文首部,将报文通过隧道转发给后端服务器。
    • 支持跨网络部署集群节点,但响应报文仍然由后端服务器直接返回给客户端。
    • 需要后端服务器支持隧道功能。
    • 集群常见的三种类型

 1.1.4 集群常见的三种类型

 LVS(Linux Virtual Server)集群常见的三种类型主要包括负载均衡集群(Load Balancing Cluster,简称LB)、高可用集群(High Availability Cluster,简称HA)和高性能运算集群(High Performance Computing Cluster,简称HPC)

1. 负载均衡集群(LB)

目标:以提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为目标,获得高并发、高负载的整体性能。

特点

  • 负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。

  • 常见的负载均衡技术包括“DNS轮询”、“应用层交换”、“反向代理”等。

  • 在LVS中,负载均衡集群通过LVS调度器将访问请求分发给后端的真实服务器(Real Server),实现请求的分散处理和响应的收集。

2. 高可用集群(HA)

目标:以提高应用系统的可靠性,尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果。

特点

  • 高可用集群通过冗余部署和资源监控,确保在单点故障发生时能够迅速切换到备用节点,保持服务不中断。

  • 常见的高可用技术包括“故障切换”、“双机热备”、“多机热备”等。

  • 在LVS中,高可用集群可以通过配置主备调度器实现热备份,确保在主调度器故障时能够自动切换到备调度器,保持负载均衡服务的连续性。

3. 高性能运算集群(HPC)

目标:以提高应用系统的CPU运算速度,扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力。

特点

  • 高性能运算集群通过整合多个服务器的CPU、内存等计算资源,实现超大规模的计算任务处理。

  • 常见的高性能运算技术包括“云计算”、“网格计算”等。

  • 在LVS中,虽然LVS本身主要关注负载均衡和高可用,但高性能运算集群的概念可以启发我们在构建大规模计算环境时,考虑将LVS作为其中的一部分,通过负载均衡优化计算任务的分配和执行。

1.1.5 集群的优势

  • 高性能:LVS工作在网络层,由操作系统内核直接处理流量,具有高效的数据处理能力。
  • 高可用性:通过负载均衡和容错机制,确保集群在部分服务器故障时仍能对外提供服务。
  • 可扩展性:支持动态添加或删除后端服务器,以适应业务规模的变化。
  • 低成本:将多台低性能的服务器组合成一个高性能的服务器集群,降低了硬件成本。

1.2 分布式

1.2.1 LVS分布式架构

在分布式架构中,LVS通常作为负载均衡层(Load Balancer)部署在前端,负责接收客户端的请求并根据一定的调度算法将请求分发给后端的服务器集群。LVS分布式架构主要由以下几个部分组成:

  1. 负载均衡层(Load Balancer)
    • 一台或多台LVS服务器构成负载调度器,也称为Director Server。
    • 负责接收客户端的请求,并根据调度算法将请求分发给后端的Real Server。
    • 监控Real Server的健康状况,动态地从LVS路由表中添加或剔除不健康的服务器。
  2. 服务器群组层(Server Array)
    • 由一台或多台实际运行的应用服务器构成,也称为Real Server。
    • 负责处理LVS分发过来的请求,并将处理结果返回给客户端。
    • Real Server之间可以通过有效网络互连,实现数据的共享和通信。
  3. 共享存储层(Shared Storage)(可选):
    • 提供共享存储空间和内容一致性的存储区域,如数据库、OSS存储、FS文件服务器等。
    • 在需要共享数据或资源的分布式系统中,共享存储层是不可或缺的。

2  LVS-NAT模式原理及部署方法

2.1 LVS-NAT模式原理

LVS-NAT(Linux Virtual Server Network Address Translation)模式是LVS(Linux Virtual Server)的一种工作模式,其原理基于网络地址转换(NAT)技术。在这种模式下,LVS服务器充当了网络中的网关角色,它接收来自客户端的请求,并根据配置的负载均衡算法选择一个合适的后端真实服务器(Real Server)来处理这些请求。然后,LVS服务器将请求报文中的目标IP地址和端口号修改为选中的Real Server的IP地址和端口号,并将修改后的请求报文转发给Real Server。Real Server处理完请求后,将响应报文发送给LVS服务器,LVS服务器再将响应报文中的源IP地址和端口号修改为虚拟IP地址(VIP)和客户端的IP地址,最后将响应报文发送给客户端。

具体来说,LVS-NAT模式的工作流程如下:

  1. 请求接收:LVS服务器监听虚拟IP地址上的特定端口,接收来自客户端的请求。
  2. 负载均衡:根据配置的负载均衡算法(如轮询、加权轮询等),LVS服务器选择一个合适的Real Server来处理请求。
  3. 地址转换:LVS服务器将请求报文中的目标IP地址和端口号修改为选中的Real Server的IP地址和端口号。
  4. 请求转发:将修改后的请求报文转发给选中的Real Server。
  5. 请求处理:Real Server处理请求,并将响应报文发送给LVS服务器。
  6. 响应转发:LVS服务器将响应报文中的源IP地址和端口号修改为VIP和客户端的IP地址,然后将响应报文发送给客户端。

2.2 LVS-NAT模式部署方法

LVS-NAT模式的部署主要包括以下几个步骤:

2.2.1 配置LVS

1.准备一台LVS,配置两块网卡,一块是NAT模式,一块是仅主机模式

2.对网卡eth0配置IP

3.对网卡eth1配置网关

4.wq退出保存并激活

6.配置成功

7.打开内核路由功能

8.wq退出保存

9.生效

2.2.2 配置两个webserver

1.两个webserver网卡都是仅主机模式

2.分别对两个webserver配置IP

webserver1

webserver2

3.分别对两个webserver配置网关

webserver1

wq退出保存并激活

webserver2

wq退出保存并激活

4.分别对两个webserver安装httpd

5.分别对两个webserver配置httpd

webserver1

webserver2

2.2.3 测试LVS到webserver

2.2.4 在LVS中安装LVS软件

2.2.5 在LVS中配置ipvsadm

2.2.6 测试

3 LVS-ipvsadm的常用参数

3.1 虚拟服务器管理

  1. 添加虚拟服务器
    • -A|--add-service:在内核的虚拟服务器表中添加一条新的虚拟服务器记录。
    • 示例:ipvsadm -A -t 192.168.1.100:80 -s rr,表示添加一个TCP服务的虚拟服务器,IP为192.168.1.100,端口为80,使用轮询(rr)调度算法。
  2. 编辑虚拟服务器
    • -E|--edit-service:编辑内核虚拟服务器表中的一条虚拟服务器记录。
  3. 删除虚拟服务器
    • -D|--delete-service:删除内核虚拟服务器表中的一条虚拟服务器记录。
  4. 清除所有虚拟服务器
    • -C|--clear:清除内核虚拟服务器表中的所有记录。
  5. 恢复虚拟服务器规则
    • -R|--restore:从标准输入恢复虚拟服务器规则。
  6. 保存虚拟服务器规则
    • -S|--save:将虚拟服务器规则保存到标准输出,输出格式为-R选项可读的格式。

3.2 真实服务器管理

  1. 添加真实服务器
    • -a|--add-server:在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。
    • 示例:ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200:80 -m -w 1,表示在虚拟服务器中添加一个真实服务器,IP为192.168.1.200,端口为80,使用NAT模式(-m),权值为1。
  2. 编辑真实服务器
    • -e|--edit-server:编辑一条虚拟服务器记录中的某条真实服务器记录。
  3. 删除真实服务器
    • -d|--delete-server:删除一条虚拟服务器记录中的某条真实服务器记录。

3.3 显示和设置

  1. 显示虚拟服务器表
    • -L|--list:显示内核虚拟服务器表。
    • 示例:ipvsadm -Ln,以数字形式输出地址和端口号。
  2. 虚拟服务表计数器清零
    • -Z|--zero:虚拟服务表计数器清零(清空当前的连接数量等)。
  3. 设置连接超时值
    • --set tcp tcpfin udp:设置TCP、TCP FIN和UDP的连接超时值。
  4. 启动/停止同步守护进程
    • --start-daemon:启动同步守护进程。
    • --stop-daemon:停止同步守护进程。
  5. 显示帮助信息
    • -h|--help:显示帮助信息。

3.4 其他选项

  • 服务类型
    • -t|--tcp-service:说明虚拟服务器提供的是TCP服务。
    • -u|--udp-service:说明虚拟服务器提供的是UDP服务。
    • -f|--fwmark-service:说明是经过iptables标记过的服务类型。
  • 调度算法
    • -s|--scheduler:使用的调度算法,如rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等。
  • 工作模式
    • -g|--gatewaying:指定LVS的工作模式为直接路由模式(默认模式)。
    • -i|--ipip:指定LVS的工作模式为隧道模式。
    • -m|--masquerading:指定LVS的工作模式为NAT模式。
  • 权值
    • -w|--weight:真实服务器的权值。
  • 持久服务
    • -p|--persistent [timeout]:持久稳固的服务,来自同一个客户的多次请求将被同一台真实的服务器处理。
  • --rate 

4 LVS实战项目-DR模式的实现

4.1 配置环境

1.LVS主机环境

2.router环境

3.client环境

4.webserver1环境

5.webserver2环境

4.2 在webserver1和webserver2中解决响应问题

webserver1

webserver2

4.3 在LVS、webserver1和webserver2中加回环IP

LVS

webserver1

webserver2

4.4 在client测试通不通到其他主机

4.5 在LVS中添加策略

4.6 测试

5 LVS-调度算法

LVS(Linux Virtual Server)是一种基于Linux内核的高可用性负载均衡软件,它通过将客户端请求分发到多个后端真实服务器(Real Server),来提高系统性能和可靠性。LVS支持多种调度算法,这些算法用于决定请求的转发方式,以实现负载均衡。以下是LVS中常见的调度算法及其简要说明:

5.1 静态调度算法

  1. 轮询(Round Robin, RR)
    • 将收到的请求按顺序轮流分配到集群中的Real Server。
    • 优点:简洁性,无需记录当前所有连接的状态,无状态调度。
  2. 加权轮询(Weighted Round Robin, WRR)
    • 根据Real Server的处理能力给予不同的权重,性能好的服务器分配更多的请求。
    • 优点:能够根据实际处理能力分配请求,提高资源利用率。
  3. 目标地址散列(Destination Hashing, DH)
    • 根据请求的目标IP地址作为哈希键从静态分配的哈希表中找出对应的服务器。
    • 优点:同一个目标地址的请求始终转发到第一次调度的Real Server,可用于实现正向代理缓存场景中的负载均衡。
  4. 源地址散列(Source Hashing, SH)
    • 根据请求的源IP地址作为哈希键从静态分配的哈希表中找出对应的服务器。
    • 优点:同一个IP地址的请求始终发往第一次调度的Real Server,可实现会话绑定。

5.2 动态调度算法

  1. 最少连接(Least-Connection, LC)
    • 动态地将网络请求调度到连接数最少的Real Server上。
    • 优点:如果集群各服务器性能相近,这种算法可以较好地均衡负载。
  2. 加权最少连接(Weighted Least-Connection Scheduling, WLC)
    • 集群服务器性能差异较大时,使用这种算法比较合适,具有较高权重值的服务器将承受较大比例的活动连接负载。
    • 优点:能够根据实际性能和负载情况动态调整请求分配。
  3. 最短期望延迟(Shortest Expected Delay Scheduling, SED)
    • 当使用WLC算法时,如果Real Server的连接数和权重比例一样,SED算法保障高权重优先。
    • 优点:确保性能最好的服务器优先处理请求。
  4. 永不排队(Never Queue Scheduling, NQ)
    • 如果有Real Server的连接数为0,就直接分配过去,无需进行SED运算。
    • 优点:减少等待时间,提高响应速度。
  5. 基于局部性的最少连接(Locality-Based Least Connections, LBLC)
    • 根据请求的目标IP找出该目标IP最近使用的服务器,若该服务器可用且没超载,就将请求发给它。
    • 优点:提高Cache命中率,优化集群系统的处理能力。
  6. 带复制的基于局部性的最少连接(LBLC with Replication, LBLCR)
    • 该算法维护从一个目标IP地址到一组服务器的映射,按最少连接原则从组内选出一台没有超载的服务器,将请求发给它。
    • 优点:解决LBLC负载不均衡的问题,提高系统的稳定性和性能。

5.3 其他调度算法

LVS还支持其他调度算法,如Overflow-connection(OVF)等,这些算法在不同的应用场景下具有各自的优势和适用场景。

6 LVS-mark标记解决调度问题

接着上面的环境

6.1 在LVS中修改策略

6.2 在webserver1和webserver中安装mod_ssl

webserver1

webserver2

6.3 轮询规则中可能会遇到的错误

6.4 防火墙标记解决轮询调度问题

6.5 测试

7 LVS-session会话问题解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1995539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov8 剪枝 - DepGraph

2024年8月5 5000张图片,2个类别。 yolov8n 初始: 185 layers, 3151904 parameters, 31936 gradients, 8.7 GFLOPs 经过三次finetune后: 185 layers, 2327024 parameters, 31936 gradients, 6.6 GFLOPs 经过第四次fintune后: …

“write()” 与 “ tcp缓冲区 ” 之间的关系

write()写入tcp缓冲区过程 write()将该文本写入到tcp缓冲区中本质是数据的拷贝,当write()调用完,数据不一定发给tcp发送缓冲区中 因为: 有没有拷贝成功,都不由write(&a…

史上最全Java初、中、高三级都适用的面试八股文(2024版含答案)

在Java编程的世界里,无论你是初出茅庐的新人,还是已经有一定经验的中级开发者,抑或是寻求突破的高级工程师,面试时总有一套通用的“八股文”知识点,就像是每位程序员的必备宝典。这套2024版的Java面试指南,…

mma.sync.aligned.m16n8k16.row.col.f16.f16.f16.f16测试

mma.sync.aligned.m16n8k16.row.col.f16.f16.f16.f16测试 1.参考文档2.numpy测试3.cuda kernel测试4.相关截图 本文演示了如何按PTX指令文档中的layout格式要求,加载数据,执行mma指令,并且跟numpy对比结果的一致性 1.参考文档 Matrix Fragments for mma.m16n8k16 with floatin…

MAVSDK添加自定义消息与函数实现云台(Gimbal)调整功能

1.找到action.proto文件并添加如下消息 2. 定义RPC方法AdjustGimbal方法如下: 3.运行generate_from_protos.sh重新根据.proto生成.cpp与.h文件 生成过程 生成完成 4. .proto生成的.h文件,成功包含同步与异步方法声明

零基础转行网络安全真的好就业吗?

网络安全作为近两年兴起的热门行业,成了很多就业无门但是想转行的人心中比较向往但是又心存疑惑的行业,毕竟网络安全的发展史比较短,而国内目前网安的环境和市场情况还不算为大众所知晓,所以到底零基础转行入门网络安全之后&#…

python自动化笔记:excel文件处理及日志收集

目录 一、openpyxl模块1.1、安装:pip install openpyxl1.2、openpyxl模块三大组件1.3、创建excel并写入数据1.4、读取excel 二、日志收集 一、openpyxl模块 1.1、安装:pip install openpyxl 注: openpyxl只支持xlsx格式,xls格式…

10+ Midjourney V6.1 提示:生成精美的角色海报

前言 近期图像生成界最大的更新是MidjourneyV6.1!我迫不及待地想要开始创作和分享,这次分享的重点是V6.1在角色创作方面的增强。 以下是半天测试的结果,包括提示,专注于角色摄影照片和角色插图。 网上关于这方面的教程虽然很多&…

【第22章】Spring Cloud之Gateway集成Knife4j(下)

文章目录 前言一、访问页面加权控制1. 加权控制2. 登录 二、生产环境如何屏蔽Knife4j、Swagger等Ui资源和接口1. 基于Spring Boot框架提供的Conditional条件控制相关Bean的生效2. 效果 三、聚合个性化配置1. 用户服务1.1 引入依赖1.2 Knife4j配置类1.3 控制器 2. 网关服务2.1 排…

JG08Z-GD系列 八轴智能测径仪系统介绍

1.测径仪: 主要用于轧制线,棒材,八个方向直径及椭圆度在线测量,轧制螺纹钢特钢尺寸在线测量。 2.功能介绍: (1)显示内容 主控室液晶显示器:管材截面的最大/最小直径、平均值、椭圆…

问题本记录(1):mac有网络但打不开网页

此学习类别,仅作为小许的问题本,方便后续再次遇到相关问题进行查看。 第一步: 第二步: 添加一个新的位置 第三步: 选择这个新建的位置,Wi-Fi显示已连接就 万事大吉啦啦啦

html+css+js+jquery实现一个 飘零的树叶

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>飘落的枫叶</title><style>.maple {position: absolute;top: 0;color: #ff0000;}</style><script src"https://www.jq22.com…

片上POR和BOR的区别

片上 POR 和 BOR 的区别 片上 POR&#xff08;Power On Reset&#xff09;和 BOR&#xff08;Brown-out Reset&#xff09;是微控制器中用于确保系统在电源异常情况下能够恢复正常运作的两种复位机制。 1. POR&#xff08;上电复位&#xff09; POR 是在微控制器上电时触发的…

多路RTSP转RTMP推送方案的两个选择

技术选型 RTSP转RTMP推送到流媒体服务器&#xff0c;说起来技术实现不难&#xff0c;简单来说&#xff0c;获取RTSP流后&#xff0c;拿到未经解码的H.264/H.265和audio数据&#xff0c;重新打包RTMP发送出去即可。需要注意的是&#xff0c;大多RTSP转RTMP模块&#xff0c;需要…

数学建模~~追逐仿真问题

目录 1.前景介绍 2.题目描述 3.核心思路 4.思路分析 5.代码分析 5.1准备工作 5.2设置循环 5.3终止循环 5.4绘制图形 5.5完整代码 1.前景介绍 今天上午的数学建模培训王老师介绍的这个数学建模相关的经验真的是让我受益匪浅&#xff0c;让我对于数学建模有了更加清晰的…

数据增强库albumentations使用指南

数据增强技术就是人为地生成真实数据集的不同版本以增加其数据大小。计算机视觉(CV)和自然语言处理 (NLP) 在模型训练过程中经常使用数据增强策略来处理数据稀缺和数据多样性不足的问题&#xff0c;避免模型因数据量而导致的过拟合、泛化性不足等问题。计算机视觉中常见的数据增…

Node.JS - 基础

目录 A. 简介 B. 安装和配置 C. npm A. 简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 一、运行原理 事件驱动和非阻塞 I/O 模型&#xff1a; Node.js 采用事件驱动、异步编程的方式。这意味着它不会在等待一个操作&#xff08;如读取文件或网络请求&a…

spfa算法判断是否存在负权回路

spfa算法判断是否存在负权回路 题目 当一个图中存在一个负权回路时&#xff0c;是无法利用spfa 算法去求最短路问题的&#xff0c;但是可以利用spfa 算法判断有没有负权回路 题目 给定一个 n n n 个点 m m m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边…

VisionPro二次开发学习笔记11-使用 Caliper和Fixture定位Blob工具检测方块

该示例演示了如何使用卡尺工具和夹具工具来固定 Blob 工具。示例代码将检测图像上部区域中小方块的存在。当点击“运行”按钮时&#xff0c;将读取一张新图像。卡尺工具将被运行&#xff0c;卡尺工具的输出 Y 信息将传递给夹具工具。夹具工具使用来自卡尺工具的 Y 信息和新图像…

新手养猫怎么选智能猫砂盆?不踩雷平价实用攻略测评分享!

众所周知&#xff0c;猫咪是非常爱干净的动物&#xff0c;一旦猫砂盆满了&#xff0c;它们就可能会选择其他角落“解决”&#xff0c;这不仅会让家里充满异味&#xff0c;还可能影响猫咪的健康。而长期堆积的猫砂&#xff0c;也容易滋生细菌&#xff0c;对猫咪的爪子也是一种伤…