云原生第一次作业(lvs)
1 集群与分布式简介1.1 集群(Cluster)--一活多人干概念集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统类型LB-LoadBalancing负载均衡由多个主机组成每个主机只承担一部分访问负载[用户访问压力]HAHigh Availiablity高可用SPOFsingle Point Of failure[调度器挂掉后有另一个替补]MTBF:Mean Time Between Failure 平均无故障时间正常时间MTTR:Mean Time To Restoration repair平均恢复前时间故障时间AMTBF/MTBFMTTR(0,1)99%, 99.5%, 99.9%, 99.99%, 99.999%SLAService level agreement服务等级协议是在一定开销下为保障服务的性能和可用性服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。在常规的领域中总是设定所谓的三个9四个9来进行表示当没有达到这种水平的时候就会有一些列的惩罚措施而运维最主要的目标就是达成这种服务水平。停机时间又分为两种一种是计划内停机时间一种是计划外停机时间而运维则主要关注计划外停机时间HPCHigh-performance computing高性能计算国家战略资源不在课程范围)1.2 分布式--多活分多人分布式存储:CephGlusterFsFastDFSMogileFs分布式计算:hadoopSpark分布式常见应用分布式应用-服务按照功能拆分使用微服务分布式静态资源--静态资源放在不同的存储集群上分布式数据和存储--使用key-value缓存系统分布式计算--对特殊业务使用分布式计算比如Hadoop集群1.3 集群与分布式的区别集群同一个业务系统部署在多台服务器上集群中每一台服务器实现的功能没有差别数据和代码都是一样的分布式一个业务被拆成多个子业务或者本身就是不同的业务部署在多台服务器上。分布式 中每一台服务器实现的功能是有差别的数据和代码也是不一样的分布式每台服务器功能加起 来才是完整的业务分布式是以缩短单个任务的执行时间来提升效率的而集群则是通过提高单位时间内执行的任务数 来提升效率对于大型网站访问用户很多实现一个群集在前面部署一个负载均衡服务器后面几台服务器 完成同一业务。如果有用户进行相应业务访问时负载均衡器根据后端哪台服务器的负载情况决 定由给哪一台去完成响应并且台服务器垮了其它的服务器可以顶上来。分布式的每一个节点都完成不同的业务如果一个节点垮了那这个业务可能就会失败2lvs(Linux virtual server)运行原理2.1 lvsLVSLinux Virtual Server负载调度器是一种基于Linux操作系统的虚拟服务器技术用于实现负载均衡和高可用性。LVS通过将客户端的请求分发到多台后端服务器上从而提高整体服务的处理能力和可靠性LVS 蕴含概念VSVirtual ServerRSReal ServerCIPClient IPVIP: Virtual serve IP VS外网的IPDIP: Director IP VS内网的IPRIP: Real server IP访问流程CIP -- VIP DIP -- RIPLVS相关术语VS: Virtual Server负责调度RS:RealServer负责真正提供服务LVS 支持三种主要的工作模式LVS-NATNetwork Address Translation在该模式下负载均衡器不仅需要修改请求报文的目标地址还需要修改响应报文的源地址适用于小规模集群。LVS-DRDirect Routing在该模式下负载均衡器只修改请求报文的目标MAC地址而不修改IP地址后端服务器直接将响应报文发回客户端适用于大规模集群。LVS-TUNIP Tunneling该模式通过IP隧道将请求转发到后端服务器后端服务器直接将响应报文发回客户端适用于地理位置分散的集群。lvs-fullnat修改请求报文的源和目标IP2.2nat模式本质是多目标IP的DNAT通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和 PORT实现转发RIP和DIP应在同一个IP网络且应使用私网地址;RS的网关要指向DIP请求报文和响应报文都必须经由Director转发Director易于成为系统瓶颈支持端口映射可修改请求报文的目标PORTVS必须是Linux系统RS可以是任意OS系统nat模式数据逻辑客户端发送访问请求请求数据包中含有请求来源cip访问目标地址VIP访问目标端口9000portVS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口RS1相应请求发送响应数据包包中的相应保温为数据来源RIP1响应目标CIP相应端口9000portVS服务器接收到响应数据包改变包中的数据来源RIP1--VIP,响应目标端口9000--80VS服务器把修改过报文的响应数据包回传给客户端lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机所以lvs的调度机容易阻塞注意:客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发因为ipvs的作用点是在PREROUTING和INPUT链之间所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉2.3DR模式DR(Direct Routing)直接路由LVS默认模式,应用最广泛,通过为请求报文重新封装一个MAC首部进行 转发源MAC是DIP所在的接口的MAC目标MAC是某挑选出的RS的RIP所在接口的MAC地址源 IP/PORT以及目标IP/PORT均保持不变DR模式数据传输过程DR模式的特点Director和各RS都配置有VIP确保前端路由器将目标IP为VIP的请求报文发往Director在前端网关做静态绑定VIP和Director的MARS的RIP可以使用私网地址也可以是公网地址RIP与DIP在同一IP网络RIP的网关不能指向DIP以确保响应报文不会经由DirectorRS和Director要在同一个物理网络请求报文要经由Director但响应报文不经由Director而由RS直接发往Client不支持端口映射端口不能修败RS可使用大多数OS系统2.4TUN模式了解TUN模式数据传输过程2.5fullnet模式了解3 实验内容3.1 nat模式实验3.1.1 实验环境四个虚拟机 :servera # 仅主机eth0:192.168.0.10/24,192.168.0.100serverb # 仅主机eth0:192.168.0.22/24,192.168.0.100lvs # 仅主机eth0:172.25.254.100/24,172.25.254.2nat模式eth1:192.168.0.100/24,192.168.0.2client #nat模式eth0:172.25.254.111/24,172.25.254.2###关闭火墙(所有主机) systemctl disable --now firewalld.service ###安装ipvsadm(仅在lvs主机) dnf install ipvsadm -y ###安装并应用httpd用于验证实验(仅在servera和serverb) dnf install httpd -y #servera 在集群真实业务中数据应该是相同的这里为了看到实验效果设置不同的index echo RS1 - 192.168.0.10 /var/www/html/index.html systemctl enable --now httpd #开启httpd服务 #serverb echo RS2 - 192.168.0.20 /var/www/html/index.html systemctl enable --now httpd ###使不同网段可通过lvs通讯 #lvs echo net.ipv4.ip_forward1 /etc/sysctl.conf sysctl -p3.1.2 实验过程#lvs [rootlvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr [rootlvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m [rootlvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m [rootlvs ~]# ipvsadm -Ln3.1.3 测试3.2 DR模式实验3.2.1 实验环境client同上route # eth0172.25.254.100/24,172.25.254.2# eth1192.168.0.100/24,192.168.0.2注serveraserverbDR_lvs都要额外加上vipservera # eth0192.168.0.10/24,192.168.0.100# lo①127.0.0.1/8 ②192.168.0.220/32serverb # eth0192.168.0.20/24,192.168.0.100# lo①127.0.0.1/8 ②192.168.0.220/32DR_lvs # eth0 俩ip192.168.0.200/24,192.168.0.100# lo①127.0.0.1/8 ②192.168.0.220/32###关闭防火墙 systemctl disable --now firewalld.service ###在DR_lvs上安装ipvsadm dnf install ipvsadm -y ###使不同网段能通过路由通讯 #route dnf install iptables-nft-services-1.8.10-11.el9_5.noarch -y echo net.ipv4.ip_forward1 /etc/sysctl.conf3.2.2 实验过程###使servera和serverb的vip不对外作用 #servera和serverb echo net.ipv4.conf.all.arp_announce2 /etc/sysctl.conf echo net.ipv4.conf.lo.arp_announce2 /etc/sysctl.conf echo net.ipv4.conf.lo.arp_ignore1 /etc/sysctl.conf echo net.ipv4.conf.all.arp_ignore1 /etc/sysctl.conf #DR_lvs [rootDRlvs ~]# ipvsadm -A -t 192.168.0.220:80 -s rr [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:80 -r 192.168.0.10:80 -g [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:80 -r 192.168.0.20:80 -g [rootDRlvs ~]# ipvsadm -Ln #route [rootlvs ~]# iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.0.100 [rootlvs ~]# iptables -t nat -A POSTROUTING -j SNAT --to-source 172.25.254.100 [rootlvs ~]# iptables -t nat -nL3.2.3 测试3.3 利用火墙标记解决轮询错误实验在DR实验基础上做的3.3.1 实验环境同上由于刚好做完DR实验所以实验环境直接在上个实验的基础上做###在DR_lvs上安装iptables dnf install iptables-nft-services-1.8.10-11.el9_5.noarch -y #RS1和RS2安装apache的加密组件 [rootrs1和rs2 ~]# dnf install -y mod_ssl [rootrs1和rs2 ~]# systemctl restart httpd #DR_lvs对ipvsadm调度进行配置 [rootDRlvs ~]# ipvsadm -A -t 192.168.0.220:443 -s rr [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:443 -r 192.168.0.10:443 -g [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:443 -r 192.168.0.20:443 -g [rootDRlvs ~]# ipvsadm -Ln3.3.2 实验过程问题---在下张图中可以看到当同时访问lvs的80和443端口时调度结果发现是独立响应的这明显是不合理的所以我们需要用火墙标记来将两个服务端绑定起来同步响应#DR_lvs [rootDRlvs ~]# iptables -t mangle -A PREROUTING -p tcp -m multiport --dport 80,443 -d 192.168.0.220 -j MARK --set-mark 6666 [rootDRlvs ~]# iptables -t mangle -nL [rootDRlvs ~]# ipvsadm -A -f 6666 -s rr [rootDRlvs ~]# ipvsadm -a -f 6666 -r 192.168.0.10 -g [rootDRlvs ~]# ipvsadm -a -f 6666 -r 192.168.0.20 -g [rootDRlvs ~]# ipvsadm -Ln3.3.3 测试3.4 利用持久连接实现会话粘滞(也在DR实验基础上做的)在我们客户上网过程中有很多情况下需要和服务器进行交互客户需要提交响应信息给服务器如果单纯的进行调度会导致客户填写的表单丢失为了解决这个问题我们可以用sh算法但是sh算法比较简单粗暴可能会导致调度失衡解决方案在进行调度时不管用什么算法只要相同源过来的数据包我们就把他的访问记录在内存中也就是把这个源的主机调度到了那个RS上如果在短期默认360S内同源再来访问我仍然按照内存中记录的调度信息把这个源的访问还调度到同一台RS上。如果过了比较长的时间默认最长时间360s同源访问再次来访那么就会被调度到其他的RS上#DR_lvs [rootDRlvs ~]# ipvsadm -E -f 6666 -s rr -p 1注意由于存在时间最低只能设置为60s所以这里的1指的是1分钟测试可以看到在存活时间内访问的话会调度到同一台RS上下图是查看存活时间当ASSURED时间结束时会看FIN_WAIT是否存在若存在则ASSURED再来一轮存活时间否则结束实战项目之利用lvs对数据库读动作做负载均衡集群也在DR实验基础之上RS1和RS2的配置#RS1RS2安装数据库服务 [rootrs1和rs2 ~]# dnf install mariadb-server -y #RS1RS2修改不同id以便实验区分 [rootrs1 ~]# vim /etc/my.cnf.d/mariadb-server.cnf ... server-id10 ... [rootrs2 ~]# vim /etc/my.cnf.d/mariadb-server.cnf ... server-id20 ... [rootrs1和rs2 ~]# systemctl start mariadb.service [rootrs1和rs2 ~]# mysql MariaDB [(none)] create user root% identified by 233; MariaDB [(none)] select server_id; MariaDB [(none)] exitRS1RS2DR_lvs的配置[rootDRlvs ~]# ipvsadm -C #清理之前的策略以免影响实验 [rootDRlvs ~]# ipvsadm -A -t 192.168.0.220:3306 -s rr [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:3306 -r 192.168.0.10:3306 -g [rootDRlvs ~]# ipvsadm -a -t 192.168.0.220:3306 -r 192.168.0.20:3306 -g [rootDRlvs ~]# ipvsadm -Ln测试

相关新闻

5分钟掌握Anime.js:打造流畅网页动画的JavaScript动画引擎终极指南

5分钟掌握Anime.js:打造流畅网页动画的JavaScript动画引擎终极指南

5分钟掌握Anime.js:打造流畅网页动画的JavaScript动画引擎终极指南 【免费下载链接】anime JavaScript animation engine 项目地址: https://gitcode.com/GitHub_Trending/an/anime Anime.js是一款轻量级、高性能的JavaScript动画库,专为现代网页…

2026/10/16 13:35:56 阅读更多 →
LLM在教育游戏中的应用:从个性化互动到技术实现

LLM在教育游戏中的应用:从个性化互动到技术实现

1. 先搞清楚 LLM 教育游戏到底解决什么实际问题如果你关注教育科技,最近可能频繁看到“LLM 教育游戏”这个组合。它听起来很新,但核心解决的问题其实非常具体:传统教育软件要么过于死板(比如选择题题库),要…

2026/10/16 1:09:51 阅读更多 →
Superpowers终极故障排除指南:让AI开发助手高效工作的7个关键技巧

Superpowers终极故障排除指南:让AI开发助手高效工作的7个关键技巧

Superpowers终极故障排除指南:让AI开发助手高效工作的7个关键技巧 【免费下载链接】superpowers An agentic skills framework & software development methodology that works. 项目地址: https://gitcode.com/GitHub_Trending/su/superpowers Superpow…

2026/10/16 14:06:20 阅读更多 →

最新新闻

全球DEM数据shp包:小而轻的地形分析利器

全球DEM数据shp包:小而轻的地形分析利器

简介:全球DEM数据(shp文件,不大很好用)是一份面向ArcGIS用户的数字高程模型资源,覆盖全球陆地范围,适用于地形渲染、坡度坡向分析、水文模拟和区域规划等基础GIS工作,尤其适合需要快速获取全球尺度地形数据的初学者与从…

2026/10/16 14:48:57 阅读更多 →
Win10下Matlab 2024b许可错误8的解决与排查

Win10下Matlab 2024b许可错误8的解决与排查

简介:在Windows10上安装Matlab 2024b后,不少用户使用常规Crack文件会遭遇“license checkout failed error-8”报错,而Windows11却正常,这并非版本不支持Win10,而是缺少对应补丁。这份支持Win10的Matlab 2024b Crack文…

2026/10/16 14:48:57 阅读更多 →
企业级大模型落地实战:从提示工程到安全对齐全链路解析

企业级大模型落地实战:从提示工程到安全对齐全链路解析

简介:《企业级生成式人工智能LLM大模型技术、算法及案例实战》是一份面向AI工程师、机器学习工程师、数据科学家及科研院所从业者的技术培训资料,专注于企业级大模型从原理到落地的完整链路,覆盖算法内核、工程实践与安全合规等关键维度。资源…

2026/10/16 14:48:57 阅读更多 →
AI 合规审计与不可变审计追踪:把文档当代码与可寻证治理闭环

AI 合规审计与不可变审计追踪:把文档当代码与可寻证治理闭环

摘要 10-16/01 画了义务地图、02 落地了模型卡证据,本文把「证据」固化成可寻证的治理闭环:AI 合规不是一次性项目,而是持续承诺。核心是四件事——不可变审计日志(集中化、加密、留存≥5 年、标准化 schema)、HITL 事…

2026/10/16 14:48:57 阅读更多 →
SpringBoot2+Vue3+MyBatis-Plus商城系统源码实战:从架构到部署

SpringBoot2+Vue3+MyBatis-Plus商城系统源码实战:从架构到部署

做商城系统这几年,我接手过不少类似的项目,也见过很多学生在毕设或课程设计里选这个方向。今天借“Java Web 欢迪迈手机商城设计与开发系统源码-SpringBoot2Vue3MyBatis-PlusMySQL8.0【含文档】”这个标题,把一套完整的商城系统从架构到落地聊…

2026/10/16 14:48:57 阅读更多 →
PhotoScan相机标定与畸变改正:从空三反解到批量去畸变实操指南

PhotoScan相机标定与畸变改正:从空三反解到批量去畸变实操指南

简介:这份资源是面向摄影测量与三维建模学习者的Photoscan相机标定与畸变改正操作文档,适合刚接触PhotoScan、需要掌握空三解算与镜头畸变处理流程的初、中级用户。压缩包内仅含1个docx文档,大小约2.37MB,以图文步骤形式梳理了从添…

2026/10/16 14:47:55 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →