LVS集群调度器

目录

集群和分布式

LVS运行原理

LVS概念

LVS的集群类型

实验配置

安装LVS

ipvsadm命令参数

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

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

3.lvs调度策略的备份与恢复

4.lvs调度策略的开机启动

LVS-NAT模式

LVS-DR模式


集群和分布式

集群(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的集群类型

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

实验配置

安装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模式

环境

主机名网卡类型网卡配置
clientNATeth0:172.25.254.111/24
lvsNAT与仅主机eth0:172.25.254.100/24,eth1:192.168.44.100/24
RS1仅主机eth0:192.168.44.10/24
RS2仅主机eth0:192.168.44.20/24

 配置

#lvs配置
#lvs开启内核路由功能
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
sysctl -p
net.ipv4.ip_forward = 1
#添加规则策略
[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 -m

测试

#测试的服务使用http所以要在lvs调度器上火墙放行80端口
#还要把RS网关指向为lvs的DIP
[root@lvs ~]# for i in {1..10};
> do
> curl 172.25.254.100;
> done

LVS-DR模式

环境

主机名网卡类型网卡配置
clientNATeth0:172.25.254.111/24
routerNAT/仅主机eth0:172.25.254.100/24,eth1:192.168.44.100/24
lvs仅主机eth0:192.168.44.200/24,192.168.44.220/24
RS1仅主机eth0:192.168.44.10/24,lo:192.168.44.220/32
RS2仅主机eth0:192.168.44.20/24,lo:192.168.44.220/32

 配置

#client配置
#由于要经过路由器router去通信VIP所以要配置指向router的网关
[root@client ~]# ip route add default via 172.25.254.100#router配置
#开启内核路由功能
[root@router ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1
#要充当路由器就要开启地址伪装
[root@router ~]# firewall-cmd --permanent --add-masquerade
[root@router ~]# firewall-cmd --reload	#由于地址命令是生效在配置文件中所以要重载#lvs配置
#火墙放行80端口或者关闭火墙
[root@lsv-dr ~]# systemctl disable --now firewalld
#编写规则策略
[root@lsv-dr ~]# ipvsadm -A -t 192.168.44.220:80 -s rr
[root@lsv-dr ~]# ipvsadm -a -t 192.168.44.220:80 -r 192.168.44.10 -g
[root@lsv-dr ~]# ipvsadm -a -t 192.168.44.220:80 -r 192.168.44.20 -g
[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-> 192.168.44.10:80             Route   1      0          0-> 192.168.44.20:80             Route   1      0          0#RS1
#安装并开启httpd服务供client访问
[root@RS1 ~]# dnf install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo RS1 > /var/www/html/index.html	#生成测试文件
#火墙放行80端口或者关闭火墙
[root@lsv-dr ~]# systemctl disable --now firewalld
#设定lo接口上的VIP不对外相应
[root@RS1 ~]# echo net.ipv4.conf.all.arp_ignore = 1 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.lo.arp_ignore = 1 >> /etc/sysctl.conf
[root@RS1 ~]# echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf
[root@RS1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
#配置网关指向路由器内网接口
[root@RS1 ~]# ip route add default via 192.168.44.100#RS2同RS1配置一样

 测试

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

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

相关文章

【React Natve】NetworkError 和 TouchableOpacity 组件

NetworkError公共组件 import SimpleLineIcons from "expo/vector-icons/SimpleLineIcons"; import { StyleSheet, Text, View } from "react-native";export default function NetworkError() {return (<View style{styles.container}><SimpleL…

Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比

Linux 驱动中 Timer / Tasklet / Workqueue 的作用与对比 &#x1f9e9; 1. 使用场景概览&#xff08;对比表&#xff09;机制执行上下文是否可睡眠使用场景常用接口Timer中断上下文❌ 不可睡眠延迟执行&#xff08;如防抖、超时处理&#xff09;add_timer() 等Tasklet软中断上…

JavaScript中关于proxy的作用以及和Object.defineProperty的区别

之前写了一篇介绍 Object.defineProperty的&#xff0c;提到proxy&#xff0c;二者有一些共性&#xff0c;也都是前端框架Vue的核心机制&#xff0c;所以再写一篇介绍一下proxy的基础原理和使用。 在 JavaScript 中&#xff0c;Proxy 是 ES6 引入的一个元编程特性&#xff0c;用…

HTTP性能优化实战技术

HTTP性能优化实战技术文章大纲 理解HTTP性能优化的核心指标 关键指标&#xff1a;延迟、吞吐量、TTFB&#xff08;Time To First Byte&#xff09;、页面加载时间影响性能的因素&#xff1a;网络延迟、服务器响应时间、资源大小、协议效率 减少HTTP请求数量 合并资源文件&#…

ubuntu(22.04)系统上安装 MuJoCo

在 Linux 系统上安装 MuJoCo 的完整步骤如下&#xff1a; ​​1. 下载 MuJoCo​​ 访问 MuJoCo 官方 GitHub下载最新 Linux 版本&#xff08;如 mujoco-3.3.4-linux-x86_64.tar.gz&#xff09;获取对应的 SHA256 校验值&#xff08;在发布页面可以找到,&#xff0c;文件名后面…

理解大模型的对话和检索能力

RAG和联网搜索均通过“检索生成”模式扩展模型能力&#xff0c;但RAG基于内部知识库&#xff08;如企业文档&#xff09;&#xff0c;适合专业领域问答&#xff1b;联网搜索实时检索互联网&#xff0c;解决时效性问题&#xff08;如新闻、股价&#xff09;。RAG响应快且可控&am…

跟着Carl学算法--回溯【2】

IP复原&#xff08;难&#xff09; 力扣链接&#xff1a;IP复原 题目&#xff1a;有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201"…

PyTorch生成式人工智能(17)——变分自编码器详解与实现

PyTorch生成式人工智能(17)——变分自编码器详解与实现 0. 前言1. 潜空间运算2. 变分自编码器2.1 自编码器与变分自编码器对比2.2 模型训练流程3. 构建变分自编码器3.1 模型构建3.2 模型训练3.3 生成图像4. 向量运算小结系列链接0. 前言 虽然自编码器 (AutoEncoder, AE) 在重…

SpringMVC2

一、接口声明的稳定性- 接口声明不能轻易变&#xff1a;接口是前后端、服务间通信的约定。要是接口的 URL、请求方法、参数、返回值变了&#xff0c;调用方&#xff08;比如前端、其他服务&#xff09;就得跟着改&#xff0c;容易出问题。所以设计接口要谨慎&#xff0c;别老变…

LVS集群实践

一、LVS概念VS: Virtual Sever &#xff08;调度器&#xff09;RS: Real Sever &#xff08;资源主机&#xff09;CIP: Client IP &#xff08;用户IP&#xff09;VIP: Virtual sever IP &#xff08;VS外网的IP&#xff0c;客户访问的IP&#xff09;DIP: Director IP &#xf…

使用Django框架构建Python Web应用

前言Django个高级Python Web框架&#xff0c;遵循MTV&#xff08;Model-Template-View&#xff09;设计模式&#xff1a;模型(Model)&#xff1a;数据层&#xff0c;定义数据结构模板(Template)&#xff1a;表现层&#xff0c;处理用户界面视图(View)&#xff1a;业务逻辑层&am…

[AI-video] 数据模型与架构 | LLM集成

第五章&#xff1a;数据模型与架构 欢迎来到第五章&#xff01; 在前几章中&#xff0c;我们学习了网页用户界面&#xff08;UI&#xff09;&#xff08;控制面板&#xff09;、应用配置&#xff08;系统参数设置&#xff09;、任务编排&#xff08;视频生成流程的总调度&…

HTTP 性能优化实战:突破高并发瓶颈的工业级方案

在互联网高并发场景中&#xff0c;HTTP 性能表现直接决定系统生死。当每秒请求量突破十万级甚至百万级时&#xff0c;哪怕 100 毫秒的延迟都会引发用户流失、交易失败等连锁反应。本文基于五大行业实战案例&#xff0c;拆解 HTTP 性能瓶颈的底层逻辑&#xff0c;输出可直接落地…

Xsens人形机器人拟人动作AI训练,提升机器人工作精度与效率

随着人工智能与机器人技术的深度融合&#xff0c;人形机器人正从实验室走向工业制造、医疗护理、公共服务等真实场景。然而&#xff0c;要让机器人真正"像人类一样工作"&#xff0c;其动作的流畅性、精准度与环境适应性仍是技术突破的关键。Xsens动作捕捉系统通过创新…

IIS网站间歇性打不开暴力解决方法

背景 网站使用 Asp.NET 框架开发&#xff0c;使用 SQL Server 2012 IIS 8.5 运行。开发上线以后&#xff0c;经常出现网站间歇性打不开&#xff0c;但是重启 IIS 就可以正常访问。 问题排查过程 打开日志记录 观察 CPU&#xff0c;内存&#xff0c;带宽流量等占用正常&#xf…

JavaScript 动态访问嵌套对象属性问题记录

问题描述不能解析 2 层 只能解析一层在 Vue 项目中&#xff0c;尝试通过动态路径&#xff08;如 otherInfo.businessPlacePhotoUrlLabel&#xff09;访问或修改嵌套对象属性时&#xff0c;发现 this[a.b.c] 无法正确解析&#xff0c;导致返回 undefined。错误示例removeImg(val…

7.17 滑动窗口 | assign

lc3015.法1&#xff1a;暴力bfs&#xff0c;数据范围only 100&#xff0c;可以过法2&#xff1a;加入了x,y&#xff0c;可以思考加入的x,y影响了什么呢? 通过数学找规律class Solution { public:vector<int> countOfPairs(int n, int x, int y) {vector<int> ret(…

预训练模型:大规模数据预学习范式——定义、原理与演进逻辑

本文由「大千AI助手」原创发布&#xff0c;专注用真话讲AI&#xff0c;回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我&#xff0c;一起撕掉过度包装&#xff0c;学习真实的AI技术&#xff01; 以下基于权威教材、学术论文及行业技术报告&#xff0c;对“预训练模型…

【kubernetes】--安全认证机制

文章目录安全认证1. **身份认证&#xff08;Authentication&#xff09;**2. **授权&#xff08;Authorization&#xff09;**3. **准入控制&#xff08;Admission Control&#xff09;**4. **机密信息管理**5. **其他安全实践**安全认证 Kubernetes 的安全机制覆盖了从身份验…

扣子工作流详解

《扣子开发AI Agent智能体应用&#xff08;人工智能技术丛书&#xff09;》(宋立桓&#xff0c;王东健&#xff0c;陈铭毅&#xff0c;程东升)【摘要 书评 试读】- 京东图书 《扣子开发AI Agent智能体应用》案例重现 开发agent智能体的书籍-CSDN博客 工作流是指一系列相互关联…