当前位置: 首页 > news >正文

Linux入门攻坚——40、Linux集群系统入门-lvs(1)

Cluster,集群,为了解决某个特定问题将多台计算机组合起来形成的单个系统。
  这个单个集群系统可以扩展,系统扩展的方式:scale up,向上扩展,更换更好的主机;scale out,向外扩展,增加更多的主机;

集群类型:
  LB:负载均衡集群,Load Balancing,并发处理能力
  HA:高可用集群(冗余),High Availablility,在线时间/(在线时间+故障处理时间)
  HP(HPC):高性能集群(高性能计算集群),High Performance(High Performance Computing Cluster),向量机,并行处理集群
  Availablility=90%,95%,99%,99.9%,99.99%,...

集群之前,是大规模分布式处理。

集群或是分布式都是一个系统。
度量一个系统:  可扩展性、  可用性、  容量、性能

系统运维:可用 ——> 标准化 ——> 自动化 

构建高可扩展性系统的重要原则:在系统内部尽量避免串行化和交互;

GSLB:Global Service Load Balancing,全局负载均衡
    SLB:Service Load Balancing

总结:
  分层;
  分割;
  分布式:分布式应用、分布式静态资源、分布式数据和存储、分布式计算;

LB集群的实现

硬件:
  F5 BIG-IP、Citrix NetScaler、A10 A10、Array 、Redware、...
软件:
  lvs、haproxy、nginx、ats(apache traffic server)、perbal、...

基于工作的协议层次划分:
  传输层:lvs,haproxy(mode tcp)
  应用层:haproxy、nginx、ats、perbal    

lvs:内核中进行的转发,工作于netfilter,负载均衡。(程序作者:章文嵩)
  ——linux virtual server,linux虚拟服务器,基于哪个协议的哪个端口进行分发。相应的后台真正进行服务的主机叫real server。
L4:四层交换,四层路由;
    根据请求报文的目标IP和PORT将其转发至后端主机集群中的某一台主机(根据挑选算法);
    netfilter:
        PREROUTING --> INPUT
        PREROUTING --> FORWARD --> POSTROUTING
        OUTPUT --> FORWARD --> POSTROUTING

lvs工作于INPUT链上,定义了集群规则,然后强行转发到POSTROUTING链上。
ipvsadm/ipvs:lvs在程序上叫做ipvs
  ipvsadm:用户空间的命令行工具,用于管理集群服务;
  ipvs:工作于内核中netfilter INPUT钩子上;

主机是否提供lvs功能:
  grep -i -A 10 'IPVS' /boot/config-3.10.0-1160.el7.x86_64 

说明内核已经编译了IPVS模块,可以使用。

支持TCP、UDP,AH,ESP,AH_ESP,SCTP等诸多协议;

lvs arch:lvs架构
  专用名称:
  调度器:director,dispatcher,balancer
  RS:Real Server
  Client IP:CIP
  Director Virtual IP:VIP
  Director IP:DIP
  Real Server IP:RIP

lvs type:
  lvs-nat:基于DNAT,MASQUERADE
  lvs-dr(direct routing):GATEWAY
  lvs-tun(ip tunneling):IPIP
  lvs-fullnat:

lvs-nat:多目标的DNAT(iptables);通过修改请求报文的目标IP地址(同时可能修改目标端口)至挑选出的某RS的RIP地址实现转发;请求和响应报文都经由director。
  1)RS和DIP应该使用私网地址,且RS的网关要指向DIP;
  2)请求和响应报文都要经由director转发;  极高负载的场景中,director可能会成为系统瓶颈;
  3)支持端口映射;
  4)RS可以使用任意OS;
  5)RS的RIP和Director的DIP必须在同一IP网络;

关键在第2步,Director调度时可以按算法选择后台的任一台RS实现负载均衡。

lvs-dr:direct routing
  通过修改请求报文的目标MAC地址进行转发;仅请求报文经由director,响应报文是由RS直接响应给Client。
  Director:VIP,DIP
  RS:RIP,VIP(在lo上,即本地回环接口上)
  1)保证前端路由器将目标IP为VIP的请求报文发送给director;
    解决方案:静态绑定、arptables、修改RS主机内核的参数,主要是使RS不响应对VIP的ARP查询。
  2)RS的RIP可以使用私有地址,也可以使用公网地址;
  3)RS跟Director必须在同一物理网络中;
  4)请求报文经由Director调度,但响应报文一定不能经由Director;
  5)不支持端口映射;
  6)RS可以是大多数OS;
  7)RS的网关不能指向DIP;

通过上面的示意图,dr模型主要是通过MAC地址实现。

lvs-tun:不修改请求报文的IP首部,而是通过在原有的IP首部(cip <--> vip)之外,再封装一个IP首部(dip <--> rip);
  1)RIP,DIP,VIP全部都是公网地址;
  2)RS的网关不能指向DIP;
  3)请求报文必须经由Director调度,但响应报文必须不能经由Director;
  4)不支持端口映射;
  5)RS的OS必须支持隧道功能;

lvs-fullnat:Director通过同时修改请求报文的源和目的IP地址进行转发;
  1)VIP是公网地址,RIP和DIP是私网地址,二者无须在同一网络中;
  2)RS接收到的请求报文的源地址是DIP,因此要响应给DIP;
  3)请求报文和响应报文都必须经由Director;
  4)支持端口映射机制;
  5)RS的OS可以使用任意OS;

http:stateless,http协议是无状态的协议
  session和cookie:实现状态追踪,无状态变为有状态。在集群中,涉及如何在不同集群服务器中对session的保持。
  session保持机制:
    session绑定:将来自同一个用户的请求,始终导向同一个RS;可以基于两种依据IP和cookie:
      source ip hash,基于源ip做哈希。
      cookie,基于cookie。
    session集群:
      session复制到其他所有RS中,可能网络中充斥session复制信息,浪费带宽;
    session服务器:
      使用一台服务器单独存放session信息,又引入了单点问题。

lvs scheduler:lvs调度器,多种不同的调度算法
  静态方法:仅根据算法本身进行调度;
      RR:round robin,轮询,论调;
      WRR:weighted rr,加权轮询
      SH:source hash,实现session保持的机制;将来自于同一个IP的请求始终调度至同一RS;
      DH:destination hash,将对同一个目标的请求始终发往同一个RS;
  动态方法:根据算法及各RS的当前负载状态进行调度;
        负载 Overhead=
      LC:Least Connection,最少连接数;Overhead=Active*256+Inactive
      WLC:Weighted LC,Overhead=(Active*256 + Inactive)/ weight
      SED:Shortest Expection Delay,Overhead=(Active+1)*256 / weight
      NQ:Never Queue,在RS有空时,依次按权重选择,然后按SED;
      LBLC:Locality-Based LC,即动态的DH算法;正向代理情形下的cache server调度;
      LBLCR:Locality-Based Least-Connection with Replication,带复制功能的LBLC算法;

ipvs的集群服务:
  tcp,udp,ah,esp,ah_esp,sctp
  1)一个ipvs主机可以同时定义多个cluster service;tcp、udp
  2)一个cluster service上至少应该有一个real server;
      定义时,指明lvs-type,以及lvs scheduler;
ipvsadm的用法:
  管理集群服务:
      ipvsadm -A|E -t|u|f service-address [-s scheduler]
      ipvsadm -D -t|u|f service-address    

      service-address:
          tcp:-t ip:port
          udp:-u ip:port
          fwm:-f mark
        -s scheduler:默认为wlc
管理集群服务中的RS:
      ipvsadm -a|e  -t|u|f  service-address -r server-address  [-g|i|m] [-w weight]
      ipvsadm -d -t|u|f service-address  -r server-address

        server-address:ip:[port]
        lvs-type:-g --> gateway,dr;-i --> ipip,tun;-m --> masquerade,nat
  查看和清空:
      ipvsadm -C
      ipvsadm -L|l [options]
       
-n:基于数字格式显示地址和端口;
        -c:connection,显示ipvs连接
        --stats:统计数据
        --rate:速率
        --exact:显示精确值

  保存和重载:
      ipvsadm -R
      ipvsadm -S [-n]

  置零计数器:
      ipvsadm -Z [ -t|u|f service-address]

实操测试
模拟环境:

在RS1和RS2上安装好httpd服务,在Director上确保iptables是空的:
iptables -F -t filter -t nat -t mangle 
确保Director上的转发功能开启:

添加规则
添加集群Director:
ipvsadm -A -t 192.168.61.129:80 -s rr     
ipvsadm -L -n

添加RS:
ipvsadm -a -t 192.168.61.129:80 -r 192.168.147.129 -m
ipvsadm -a -t 192.168.61.129:80 -r 192.168.147.130 -m

保存规则、清空规则、重载规则:

修改Director调度算法:
ipvsadm -E -t 192.168.61.129:80 -s sh

修改RS:
ipvsadm -e -t 192.168.61.129:80 -r 192.168.147.129:8080 -m
这个命令一直不成功,提示No such destination,不知是什么原因
删除一个RS:
ipvsadm -d -t 192.168.61.129:80 -r 192.168.147.129

查询:

相关文章:

Linux入门攻坚——40、Linux集群系统入门-lvs(1)

Cluster&#xff0c;集群&#xff0c;为了解决某个特定问题将多台计算机组合起来形成的单个系统。 这个单个集群系统可以扩展&#xff0c;系统扩展的方式&#xff1a;scale up&#xff0c;向上扩展&#xff0c;更换更好的主机&#xff1b;scale out&#xff0c;向外扩展&…...

momentum 和 weight_decay 的区别

momentum 和 weight_decay 的区别 两者在优化器中的作用不同,主要体现在优化的目的和机制上。 1. momentum(动量) 作用:加速收敛并减少优化过程中的震荡。 机制: momentum 是用于在梯度下降中积累动量的机制。它通过在每一步中综合之前的更新方向,帮助模型在陡峭区域加速…...

Vue 3 + TypeScript进阶用法

在掌握了 Vue 3 和 TypeScript 的基本使用后&#xff0c;你可以进一步探索一些进阶特性和最佳实践。这些包括更复杂的类型定义、自定义 hooks、全局状态管理等。下面是一些关键点&#xff1a; 1. 更复杂的类型定义 Props 和 Emits 的类型 对于组件的 props 和 emits&#xf…...

AbutionGraph-时序向量图谱数据库-快速安装部署

运行环境 1&#xff09;操作系统 最好是使用CentOS7或者Ubuntu18以上系统&#xff0c;不满足的话请升级系统内核gcc版本至8以上版本。 支持所有国产主流操作系统银河麒麟、统信OS、深度等等&#xff0c;均做过兼容性测试&#xff1b; 2&#xff09;CPU 为确保数据库每个进…...

Delphi-HTTP通讯及JSON解析

HTTP POST 请求函数 HttpPost 此函数用于发送带有JSON内容的POST请求到指定的URL&#xff0c;并接收服务器响应。它包括了必要的异常处理&#xff0c;确保在遇到错误时可以记录日志。 参数&#xff1a; sUrl&#xff1a;目标URL。sJson&#xff1a;要发送的JSON格式字符串。 返…...

Postgres 如何使事务原子化?

原子性&#xff08;“ACID”意义上的&#xff09;要求 对于对数据库执行的一系列操作&#xff0c;要么一起提交&#xff0c;要么全部回滚&#xff1b;不允许中间状态。对于现实世界的混乱的代码来说&#xff0c;这是天赐之物。 这些更改将被恢复&#xff0c;而不是导致生产环境…...

[Vue3]简易版Vue

简易版Vue 实现ref功能 ref功能主要是收集依赖和触发依赖的过程。 export class Dep { // 创建一个类&#xff0c;使用时使用new Depconstructor(value) { // 初始化可传入一个值this._val value;this.effects new Set(); //收集依赖的容器&#xff0c;使用set数据结构}…...

ElasticSearch学习记录

服务器操作系统版本&#xff1a;Ubuntu 24.04 Java版本&#xff1a;21 Spring Boot版本&#xff1a;3.3.5 如果打算用GUI&#xff0c;虚拟机安装Ubuntu 24.04&#xff0c;见 虚拟机安装Ubuntu 24.04及其常用软件(2024.7)_ubuntu24.04-CSDN博客文章浏览阅读6.6k次&#xff0…...

LabVIEW算法执行时间评估与Windows硬件支持

在设计和实现复杂系统时&#xff0c;准确估算算法的执行时间是关键步骤&#xff0c;尤其在实时性要求较高的应用中。这一评估有助于确定是否需要依赖硬件加速来满足性能需求。首先需要对算法进行时间复杂度分析并进行实验测试&#xff0c;了解其在Windows系统中的运行表现。根据…...

经验帖 | Matlab安装成功后打不开的解决方法

最近在安装Matlab2023时遇到了一个问题&#xff1a; 按照网上的安装教程成功安装 在打开软件时 界面闪一下就消失 无法打开 但是 任务管理器显示matlab在运行中 解决方法如下&#xff1a; matlab快捷方式–>右键打开属性–>目标 填写许可证文件路径 D:\MATLAB\MatlabR20…...

Ubuntu Linux 文件、目录权限问题

本文为Ubuntu Linux操作系统- 第五弹 此文是在上期文件目录的内容操作基础上接着讲权限问题 上期回顾&#xff1a;Ubuntu Linux 目录和文件的内容操作 文件访问者身份与文件访问权限 Linux文件结构 所有者&#xff08;属主&#xff09;所属组&#xff08;属组&#xff09;其他…...

LabVIEW密码保护与反编译的安全性分析

在LabVIEW中&#xff0c;密码保护是一种常见的源代码保护手段&#xff0c;但其安全性并不高&#xff0c;尤其是在面对专业反编译工具时。理论上&#xff0c;所有软件的反编译都是可能的&#xff0c;尽管反编译不一定恢复完全的源代码&#xff0c;但足以提取程序的核心功能和算法…...

yolo11经验教训----之一

一、格式转换 可以把python中的.pt文件&#xff0c;导出为libtorch识别的格式&#xff1a; model YOLO("yolo11n.pt") model.export(format"torchscript") 二、查看结构 在c中&#xff0c;我用qt&#xff0c;这样做的&#xff1a; #include "…...

异步处理优化:多线程线程池与消息队列的选择与应用

目录 一、异步处理方式引入 &#xff08;一&#xff09;异步业务识别 &#xff08;二&#xff09;明确异步处理方式 二、多线程线程池&#xff08;Thread Pool&#xff09; &#xff08;一&#xff09;工作原理 &#xff08;二&#xff09;直面优缺点和适用场景 1.需要快…...

Hadoop生态圈框架部署 伪集群版(一)- Linux操作系统安装及配置

文章目录 前言一、下载CentOS镜像1. 下载 二、创建虚拟机hadoop三、CentOS安装与配置1. 安装CentOS2. 配置虚拟网络及虚拟网卡2.1 配置虚拟网络2.2 配置虚拟网卡 3. 安装 SSH 远程连接工具 FinalShell3.1 简介3.2 下载和安装3.2.1 下载3.2.2 安装 3.3 查看动态ip地址3.4 使用Fi…...

Go的Gin比java的Springboot更加的开箱即用?

前言 隔壁组的云计算零零后女同事&#xff0c;后文简称 云女士 &#xff0c;非说 Go 的 Gin 框架比 Springboot 更加的开箱即用&#xff0c;我心想在 Java 里面 Springboot 已经打遍天下无敌手&#xff0c;这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗&#xff0c;非我要…...

pickle常见Error解决

1. pickle OverflowError: cannot serialize a bytes object larger than 4 GiB 进行pickle.dump时出现上述错误&#xff0c;可以加上“protocol4”参数。依据&#xff1a;https://docs.python.org/3/library/pickle.html#data-stream-format 2. pickle EOFError: Ran out of…...

认识Java数据类型和变量

数据类型分类 基本数据类型(8个)&#xff1a; 整数型 byte 8位 short 16位 int 32位 long 64位 默认整数类型是int类型 小数型/浮点型 float【单精度32位】 double【双进度64位】 字符型 char 16位 只能表示单个字符 布尔型 boolean 1位 只能有两个值 true 【真】 false 【…...

Qt开发技巧(二十四)滚动部件的滑动问题,Qt设置时区问题,自定义窗体样式不生效问题,编码格式问题,给按钮左边加个图,最小化后的卡死假象

继续记录一些Qt开发中的技巧操作&#xff1a; 1.滚动部件的滑动问题 再Linux嵌入式设备上&#xff0c;有时候一个页面的子部件太多&#xff0c;一屏放不下是需要做页面滑动&#xff0c;可以使用“QScrollArea”控件&#xff0c;拖来一个“QScrollArea”控件&#xff0c;将子部件…...

SHELL----正则表达式

一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下&#xff1a; -i 忽略大小写 -c 统计匹配的行数 -v 取反&#xff0c;不显示匹配的行 -w 匹配单词 -E 等价于 egrep &#xff0c;即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...