本期来讲讲什么是LVS集群?

集群和分布式

集群(Cluster),解决某个问题将多台计算机组合形成的系统群。

常见的集群类型:

  • 负载均衡(LoadBalancing,简称LB):由多个相同配置的主机组成,每个主机经过调度承担部分访问,防止单点故障提高系统可用性。常用的负载均衡实现方式由Nginx,LVS等。
  • 高可用(High Availiablity,简称HA): ,是指系统或服务在规定时间内持续正常运行的能力,核心目标是最大限度减少停机时间,确保业务或功能在面对故障(如硬件损坏、软件错误、网络中断等)时仍能稳定提供服务。

        MTBF:Mean Time Between Failure 平均无故障时间,正常时间 MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间

        可用性等级计算方式:A=MTBF/(MTBF+MTTR),计算结果越接近“1”高可用性越高

  • 高性能计算(High-performance computing,HPC):高性能计算,国家战略资源

负载均衡与高可用的关系:

负载均衡是实现高可用的核心手段之一,高可用的目标是 “不中断服务”,而负载均衡通过分散流量和自动剔除故障节点,直接避免了 “单台服务器故障导致整体崩溃” 的风险。

分布式

一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务

分布式常见应用:

  • 分布式应用-服务按照功能拆分,使用微服务
  • 分布式静态资源--静态资源放在不同的存储集群上
  • 分布式数据和存储--使用key-value缓存系统
  • 分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

分布式图解

集群和分布式的区别:

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

LVS介绍

LVS概念

LVS(Linux virtual server):是一种负载调度器,是负载均衡的一种实现方式。

  • VS:虚拟服务器,LVS调度器
  • RS:内网真实服务器,提供服务
  • CIP:客户端IP
  • VIP:LVS的外网IP
  • DIP:LVS的内网IP
  • RIP:RS的IP

LVS集群结构图

LVS的集群类型

集群类型说明
nat修改请求报文的目标IP,多目标IP的DNAT
dr操纵封装新的MAC地址
tun在原请求IP报文之外添加一个IP首部
fullnat修改请求报文的源和目标IP

tun与fullnat只做了解并没有实验配置提及 ,常用的还是DR与NAT,默认为DR。

LVS的调度算法

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况。

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度。

静态调度算法作用
RR(roundrobin)轮询调度RS,配置有差异不推荐
WRR(Weighted RR)根据权重来进行轮询调度,配置高的加权调度被调度次数多
SH(Source Hashing)基于源地址哈希,将来自同一源地址的请求调度到同一服务器,可实现会话粘性
DH(Destination Hashing)基于目标地址哈希,将发往同一目标地址的请求调度到同一服务器
动态调度算法作用
LC(least connections)调度到当前连接数最少的服务器,使各服务器负载更均衡
WLC(Weighted LC)带权重的最少连接调度,综合考虑服务器权重和当前连接数进行调度
SED(:Shortest Expection Delay)计算服务器的预期延迟(考虑权重和当前连接数),调度到预期延迟最小的服务器
NQ(Never Queue)第一轮均匀分配,后续SED
LBLC(Locality-Based LC)动态的 DH 算法,基于局部性的最少连接调度,兼顾目标地址哈希和最少连接
LBLACR(LBLC with Replication)带复制功能的 LBLC,通过服务器复制进一步优化负载均衡和故障容错

在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布。

算法原理:

遍历虚拟服务所关联的真实服务器链表,找到还未过载的且权重最高的真实服务器,进行调度。当服务器承接大量连接,可以对此服务器进行过载标记,之后 VS 调度器就不会把连接调度到有过载标记的主机中。

2.OVF(Overflow-connection)调度算法:适用于服务器性能有差异且流量波动较大的场景,如电商。

算法原理:

基于真实服务器的活动连接数量和权重值实现。遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:

  • 未过载;
  • 真实服务器当前的活动连接数量小于其权重值;
  • 其权重值不为零 。

将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器。

实验

安装LVS

[root@client ~]# dnf install ipvsadm -y

ipvsadm命令参数

核心功能:

  • 集群服务器管理:增、删、改

  • 集群服务的RS管理:增、删、改

  • 查看

1.管理集群服务中的增删改

#命令格式
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]-A #添加-E #修改-t #tcp服务-u #udp服务-s #指点调度算法,默认为WLC,rr为轮询,wrr为权重轮询-p #设置吃就连接超时,将同一个时间段将一个访问请求调度给同一个RS-f #firewall mask 火墙标记,是一个数字-L #查看lvs策略 + n 不做解析ipvsadm -Ln #不做解析查看lvs策略

[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr	
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -D -t 172.25.254.100:80
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -L	#查看lvs调度策略	
[root@lvs ~]# ipvsadm -Ln	#n不做解析的查看调度策略

2.管理集群服务中的RS增删改

#命令格式
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]-a #添加-e #更改-t #tcp / -u #udp-f #火墙标签-r #指定RS地址-g #直连路由模式-i #ipip隧道模式-m #nat模式-w #设定权重-C #清空lvs策略-L #查看lvs策略 + n 不做解析ipvsadm -Ln #不做解析查看lvs策略--rate #输出速率信息ipvsadm -Ln --rate-Z #清空计数器
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.20 -g
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.20 -m -w 2
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.30 -i -w 2
[root@lvs ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

3.lvs调度策略的备份与恢复
#备份与恢复
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule    备份规则策略到文件中
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule    重载规则策略
4.lvs调度策略的开机启动

由于缺少备份到/etc/sysconfig/ipvsadm规则调度文件,所以不能开机启动。


#需要先把调度策略导入生成调度规则文件,具有调度规则文件后才能开启服务进程
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# systemctl enable --now ipvsadm
#开机启动后就会自动重载保存在调度规则的文件

LVS-NAT模式

环境

主机名IP
客户端(nat)172.25.254.70/24
LVS服务器(双网卡,nat与仅主机)

172.25.254.100/24

192.168.5.10/24

web服务器1(仅主机)192.168.5.100/24
web服务器2(仅主机)192.168.5.200/24

客户端:

        配好IP即可

LVS服务器:

        配置好IP和内核路由以及LVS规则

 开启内核路由:

  编写LVS规则:

  查看LVS规则:

web服务器(两台web服务器类似):

        安装httpd,开启服务、编写默认发布文件

开启服务:

编写默认发布文件:

记得关闭火墙(便于测试)

测试(用客户端连续访问172.25.254.100多次):

服务器1、2轮流应答客户端

LVS-DR模式

环境

主机名IP
客户端(nat)e0:172.25.254.111/24
路由器(双网卡)

e0:172.25.254.100/24

e1:192.168.44.100/24

调度器(仅主机)

e0:192.168.44.200/24

e1:192.168.44.220/24

服务器1(仅主机)

e0:192.168.44.10/24

lo:192.168.44.220/32

服务器2(仅主机)

e0:192.168.5.100

lo:192.168.5.250(vip)

客户端:

        配好IP即可

路由器配置:

         配置IP 并开启内核路由以及地址伪装

#开启内核路由
vim /etc/sysctl.confnet.ipv4.ip_forward = 1#开启地址伪装
firewall-cmd --permanent --add-masquerade#开启iptab地址转换亦可
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.5.10#地址伪装和iptable地址转换选一种即可

LVS主机配置: 

        配置ip 

配置LVS规则:

ipvsadm -A -t 192.168.5.250:80 -s rr
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.100:80 -g
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.200:80 -g

 查看LVS规则:

服务器(两台服务器类似)

        配置ip

 下载、启用、配置httpd

                 开启服务:

   编写默认发布文件:

记得关闭火墙(便于测试)

关闭服务器1与服务器2响应arp:

测试:

服务器1、2轮流应答客户端

lvs会话保持

解决问题:客户需要提交响应信息给服务器,如果单 纯的进行调度会导致客户填写的表单丢失

解决方案:

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把这个源的主机调度到了那个RS上,设置持久连接超时。

#跟踪链接
[root@lsv-dr ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.44.100:48534 192.168.44.220:80  192.168.44.10:80
TCP 01:55  FIN_WAIT    192.168.44.100:48518 192.168.44.220:80  192.168.44.20:80
#expire为长链接超时时间,在链接未超时再次访问不用经过三次握手,apache的一个长连接默认为两分钟#设置持久超时时间来将同一个时间段将一个访问请求调度给同一个RS
[root@lsv-dr ~]# ipvsadm -E -t 192.168.44.220:80 -s rr -p 1	#-p 1默认不是1s而是1min
[root@lsv-dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.44.220:80 rr persistent 1	#持久连接超时时间默认为360s-> 192.168.44.10:80             Route   1      0          0-> 192.168.44.20:80             Route   1      0          0

只有当最后一个FIN WATT结束,ASSURED才会倒计时最后一次apeach长连接超时时间默认为2分钟并且只有当最后一个ASSURED倒数结束下一个访问VIP的客户才会被调度到另一个RS上  

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

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

相关文章

JVM 类加载过程笔记

一、概述 JVM&#xff08;Java Virtual Machine&#xff09;在运行 Java 程序时&#xff0c;需要将 .class 字节码文件加载到内存中&#xff0c;并转换成可以被 JVM 执行的数据结构&#xff0c;这一过程就是 类加载过程&#xff08;Class Loading Process&#xff09;。 JVM 的…

基于爬虫技术的电影数据可视化系统 Python+Django+Vue.js

本文项目编号 25002 &#xff0c;文末自助获取源码 \color{red}{25002&#xff0c;文末自助获取源码} 25002&#xff0c;文末自助获取源码 目录 一、系统介绍二、系统录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状 六、核心代码6.1 查询数据6.2 新…

如何用 LUKS 和 cryptsetup 为 Linux 配置加密

在信息安全愈发重要的今天&#xff0c;为 Linux 系统盘配置全盘加密已经成为很多企业和个人的选择。LUKS&#xff08;Linux Unified Key Setup&#xff09;配合工具 cryptsetup 可以在不牺牲性能的前提下实现高强度加密。本文将通过一个故事化的场景&#xff0c;介绍整个配置过…

VIVADO技巧_BUFGMUX时序优化

1.版本说明日期作者版本说明2025xxxx风释雪初始版本 2.概述 基于VIVADO时序约束&#xff0c;BUFGMUX多路时钟选择原语的设计3.原语介绍 7系列FPGA/UltraSCale/UltraSCaleBUFGMUX_CTRL BUFGMUX_CTRL_inst (.O(O), // 1-bit output: Clock output.I0(I0), // 1-bit input: Cloc…

服务器系统时间不准确怎么办?

服务器系统时间不准确可能会导致日志错乱、任务调度失败、SSL证书校验错误等问题。以下是解决办法&#xff1a;&#x1f310; 一、同步系统时间的方法1. 使用 timedatectl 命令&#xff08;适用于 systemd 系统&#xff09;timedatectl set-ntp true # 开启自动同步 timedatect…

零信任产品联合宁盾泛终端网络准入,打造随需而变、精准贴合业务的网络安全访问体系

零信任网络访问控制&#xff08;Zero Trust Network Access&#xff0c;ZTNA&#xff0c;文中零信任皆指 ZTNA&#xff09;基于“永不信任&#xff0c;持续验证”的理念&#xff0c;打破了企业基于传统网络边界进行防护的固有模式。在当前日趋复杂的网络环境下&#xff0c;内部…

【未限制消息消费导致数据库CPU告警问题排查及解决方案】

一、背景 某天下午&#xff0c;上游系统同一时间突然下了三个大合同数据&#xff0c;平均每个合同数据实例在6万以上的量级&#xff0c;短短几分钟内瞬间有20万左右的流量涌入系统。 而在正常情况下&#xff0c;系统1天处理的流量也不过2千量级&#xff0c;当时数据库指标监控告…

iOS开发 Swift 速记2:三种集合类型 Array Set Dictionary

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

Apache基础配置

一、Apache安装# 安装apache [rootwebserver ~]# yum install httpd -y# 在防火墙中放行web服务 [rootwebserver ~]# firewall-cmd --permanent --add-servicehttp success [rootwebserver ~]# firewall-cmd --permanent --add-servicehttps success# 开启服务 [rootwebserver …

Python100个库分享第37个—BeautifulSoup(爬虫篇)

目录专栏导读&#x1f4da; 库简介&#x1f3af; 主要特点&#x1f6e0;️ 安装方法&#x1f680; 快速入门基本使用流程解析器选择&#x1f50d; 核心功能详解1. 基本查找方法find() 和 find_all()CSS选择器2. 属性操作3. 文本提取&#x1f577;️ 实战爬虫案例案例1&#xff…

石子入水波纹效果:顶点扰动着色器实现

水面波纹的真实模拟是计算机图形学中一个经典且重要的课题,广泛应用于游戏、影视和虚拟现实等领域。本文将从技术原理和实现细节出发,系统介绍如何利用**顶点扰动(Vertex Displacement)**技术,结合多种辅助方法,打造既真实又高效的水面波纹效果。 一、顶点扰动的核心思想…

【FFmpeg 快速入门】本地播放器 项目

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 整体架构 详细流程 &#x1f4c1; 数据流向​ &#x1f4c1; 队列设计​编辑 &#x1f4c1; 线程设计 &#x1f4c1; 音视频同步 &#x1f4c1; 音频输出设计 &#x1f4c1; 视频输出设计 &#x1f4c1; 总结 …

Maven dependencyManagement标签 properties标签

dependencyManagement标签properties标签

前端埋坑之element Ui 组件el-progress display:flex后不显示进度条解决方案

项目适用场景&#xff1a; <divs style"display&#xff1a;flex"> <span>这里是进度条前标题说明</span> <el-progress :percentage"50"></el-progress> </div> 问题呈现&#xff1a; el-progress进度条没啦&#xf…

嵌入式学习-土堆PyTorch(7)-day23

损失函数的调用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #损失函数 loss L1Loss…

【2025最新】使用neo4j实现GraphRAG所需的向量检索

学习笔记&#xff0c;比较混乱&#xff0c;介意慎点。 背景 在将UMLS或者LightRAG构造的数据库存入neo4j之后&#xff0c;我开始将知识图谱运用到实际场景的使用中、例如查询、推理。然而&#xff0c;由于字符串匹配导致大量术语在检索时出现缺失。导致检索效果不佳。我们需要…

【AI深究】随机森林(Random Forest)全网最详细全流程详解与案例(附Python代码演示)|集成学习|数学原理、案例流程、代码演示及结果解读|参数与调优、工程启示、单棵决策树的对比、优缺点

大家好&#xff0c;我是爱酱。本篇将会系统地讲解随机森林&#xff08;Random Forest&#xff09;的原理、核心思想、数学表达、算法流程、代码实现与工程应用。内容适合初学者和进阶读者&#xff0c;配合公式和可视化示例。 注&#xff1a;本文章含大量数学算式、详细例子说明…

6.String、StringBuffer、StringBuilder区别及使用场景

String固定长度&#xff0c;引用的字符串内容无法改变例如&#xff0c;String s abc;s def;那么 s 字符串对应的地址已经改变了StringBuider 声明一个对象时&#xff0c;指向堆中的一块空间&#xff0c;包括两个属性 value 和 count其中 value 属性类似动态数组&#xff0c;可…

Qualcomm Linux 蓝牙指南学习--验证 Fluoride 协议栈的功能(2)

前言 Qualcomm Technologies推出的Linux蓝牙指南详细介绍了基于Qualcomm RB3 Gen 2和IQ-9100 Beta开发套件的蓝牙解决方案。该文档涵盖BlueZ和Fluoride协议栈的功能验证流程,支持蓝牙5.2核心规范,包括WCN6750/WCN6856/QCA6698AQ芯片组的特性。主要内容分为三部分: ‌1. 功…