当前位置: 首页 > 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 将指定目录内的文件打…...

CertMagic故障恢复终极指南:如何从证书失效中快速恢复的10个关键步骤

CertMagic故障恢复终极指南&#xff1a;如何从证书失效中快速恢复的10个关键步骤 【免费下载链接】certmagic Automatic HTTPS for any Go program: fully-managed TLS certificate issuance and renewal 项目地址: https://gitcode.com/gh_mirrors/ce/certmagic CertMa…...

The-Forge安全实践指南:跨平台渲染框架的终极安全保障方案

The-Forge安全实践指南&#xff1a;跨平台渲染框架的终极安全保障方案 【免费下载链接】The-Forge The Forge Cross-Platform Framework PC Windows, Steamdeck (native), Ray Tracing, macOS / iOS, Android, XBOX, PS4, PS5, Switch, Quest 2 项目地址: https://gitcode.co…...

014、硬件加速篇:利用GPU、NPU及专用芯片优化RAG推理与检索

014、硬件加速篇&#xff1a;利用GPU、NPU及专用芯片优化RAG推理与检索从一次深夜调试说起 有次凌晨两点&#xff0c;我盯着监控面板上那条刺眼的99%分位延迟曲线——我们的RAG系统在晚高峰时响应时间飙到了3秒以上。拆开看&#xff0c;检索阶段倒还稳定&#xff0c;问题出在重…...

在 MyBatis 的映射元素 <resultMap> 中,<id> 和 <result> 都用于将查询结果集的列映射到 Java 对象的属性

在 MyBatis 的 <resultMap> 中&#xff0c;<id> 和 <result> 都用于将查询结果集的列映射到 Java 对象的属性&#xff0c;但它们的语义和内部处理机制有本质区别。下面从多个维度详细讲解。 1. <resultMap> 简介 <resultMap> 是 MyBatis 中最重…...

保姆级教程:用Python+Socket实现西门子CNC产量数据自动采集(附避坑指南)

PythonSocket实现西门子CNC产量数据自动化采集实战指南 在工业4.0时代&#xff0c;生产数据的实时采集与分析已成为智能制造的核心环节。对于使用西门子数控系统&#xff08;如828D、840DSL等&#xff09;的制造企业而言&#xff0c;如何绕过复杂的授权流程&#xff0c;通过编程…...

别再只盯着Logits了!聊聊知识蒸馏里‘注意力图’那点事儿(从AT论文到理解误区)

注意力蒸馏&#xff1a;超越Logits的知识迁移新范式 在深度学习模型压缩领域&#xff0c;知识蒸馏早已不是新鲜话题。大多数实践者会条件反射地想到教师网络输出的logits或中间层特征——这些确实是最直观的知识载体。但当我们把目光投向人类的学习过程时&#xff0c;会发现一个…...

IM1281B电量计模块避坑指南:从接线到数据解析的全流程实战

IM1281B电量计模块实战全解析&#xff1a;从硬件对接到数据处理的完整解决方案 在智能电表、能耗监测和物联网设备开发中&#xff0c;精确测量电能消耗是核心需求之一。IM1281B作为一款高性价比的单相电能计量模块&#xff0c;以其Modbus通信协议和直接电能脉冲输出功能&#x…...

深度学习特征分解、SVD 与 PCA —— 矩阵的“质因数分解“(六)

1. 定位导航 本篇是第2章线性代数的终篇,覆盖三个最有力的矩阵分析工具:特征分解、奇异值分解(SVD)、主成分分析(PCA)。此外还包括三个辅助工具:Moore-Penrose 伪逆、迹运算、行列式。 这些工具贯穿深度学习的方方面面——PCA 用于数据预处理和降维,SVD 用于模型压缩…...

Windows Cleaner终极攻略:系统优化与空间释放完整指南

Windows Cleaner终极攻略&#xff1a;系统优化与空间释放完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开…...

Ostrakon-VL-8B在VMware虚拟机中的一站式部署与性能调优

Ostrakon-VL-8B在VMware虚拟机中的一站式部署与性能调优 想在本地隔离环境里跑通一个强大的多模态大模型&#xff0c;比如Ostrakon-VL-8B&#xff0c;但又不想折腾物理机或者担心影响主系统&#xff1f;VMware虚拟机是个不错的选择。不过&#xff0c;在虚拟机里部署AI应用&…...