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

news2024/12/26 19:16:10

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

查询:

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

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

相关文章

威联通-001 手机相册备份

文章目录 前言1.Qfile Pro2.Qsync Pro总结 前言 威联通有两种数据备份手段&#xff1a;1.Qfile Pro和2.Qsync Pro&#xff0c;实践使用中存在一些区别&#xff0c;针对不同备份环境选择是不同。 1.Qfile Pro 用来备份制定目录内容的。 2.Qsync Pro 主要用来查看和操作文…

Docker单机网络:解锁本地开发环境的无限潜能

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元 个人主页&#xff1a;团儿.-CSDN博客 目录 前言&#…

【Linux操作系统】多线程控制(创建,等待,终止、分离)

目录 一、线程与轻量级进程的关系二、进程创建1.线程创建线程创建函数&#xff08;pthread&#xff09;查看和理解线程id主线程与其他线程之间的关系 三、线程等待&#xff08;回收&#xff09;四、线程退出线程退出情况线程退出方法 五、线程分离线程的优点线程的缺点 一、线程…

解决IDEA的easycode插件生成的mapper.xml文件字段之间逗号丢失

问题 easycode插件生成的mapper.xml文件字段之间逗号丢失&#xff0c;如图 解决办法 将easycode(在settings里面的othersettings)设置里面的Template的mapper.xml.vm和Global Config的mybatisSupport.vm的所有$velocityHasNext换成$foreach.hasNext Template的mapper.xml.vm(…

Android 实现中英文切换

在开发海外项目的时候&#xff0c;需要实现app内部的中英文切换功能&#xff0c;所有的英文都是内置的&#xff0c;整体思路为&#xff1a; 创建一个sp对象&#xff0c;存储当前系统的语言类型&#xff0c;然后在BaseActivity中对语言进行判断&#xff1b; //公共Activitypubl…

11月 | Apache DolphinScheduler月度进展总结

各位热爱 Apache DolphinScheduler 的小伙伴们&#xff0c;社区10月份月报更新啦&#xff01;这里将记录 DolphinScheduler 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度Merge之星 感谢以下小伙伴11月份为 Apache DolphinScheduler 所做的精彩贡献&#xff08;排…

[软件开发幼稚指数评比]《软件方法》自测题解析010

第1章自测题 Part2 **9 [**单选题] 以下说法和其他三个最不类似的是: A)如果允许一次走两步&#xff0c;新手也能击败象棋大师 B)百米短跑比赛才10秒钟&#xff0c;不可能为每一秒做周密计划&#xff0c;凭感觉跑就是 C)即使是最好的足球队&#xff0c;也不能保证每…

【JavaWeb后端学习笔记】使用IDEA连接MySQL数据库

IDEA连接MySQL IDEA中集成了DataGrip&#xff0c;因此可以直接使用IDEA操作MySQL数据库。 1.创建一个新的空工程。点击右侧的数据库标志。 2.选择要连接的数据库。第一步&#xff1a;点击“”&#xff1b;第二步&#xff1a;点击 Data Source&#xff1b;第三步&#xff1a;选…

大模型分类2—按训练方式

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl根据训练方式,大模型可分为监督学习、无监督学习、自监督学习和强化学习大模型。 1. 监督学习大模型 1.1 定义与原理 监督学习大模型是一种机器学习范式,它依赖于标记数据集进行训练。这些数据…

鸿蒙特色实战2

服务卡片开发 创建服务卡片 创建一个新的工程后&#xff0c;可以通过如下方法进行创建服务卡片&#xff1a; 创建服务卡片包括如下两种方式&#xff1a; 选择模块&#xff08;如entry模块&#xff09;下的任意文件&#xff0c;单击菜单栏File > New > Service Widget创…

LCD1602液晶显示屏指令详解

文章目录 LCD1602液晶显示屏1.简介2. 液晶引脚说明3. 指令介绍3.1 清屏指令3.2 光标归位指令3.3 进入模式设置指令3.4 显示开关设置指令3.5 设定显示或光标移动方向指令3.6 功能设定指令3.7 设定CGRAM地址指令3.8 设定DDRAM地址指令3.9 读取忙或AC地址指令3.10 总图3.11 DDRAM …

Python毕业设计选题:基于大数据的旅游景区推荐系统_django

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页界面 用户注册界面 用户登录界面 景点信息界面 景点资讯界面 个人中心界面 …

引领素养教育行业,猿辅导素养课斩获“2024影响力教育品牌”奖项

近日&#xff0c;由教育界网、校长邦联合主办&#xff0c;鲸媒体、职教共创会协办的“第9届榜样教育年度盛典”评奖结果揭晓。据了解&#xff0c;此次评选共有近500家企业提交参评资料进行奖项角逐&#xff0c;历经教育界权威专家、资深教育从业者以及专业评审团队的多轮严格筛…

十七、监控与度量-Prometheus/Grafana/Actuator

文章目录 前言一、Spring Boot Actuator1. 简介2. 添加依赖2. 开启端点3. 暴露端点4. 总结 二、Prometheus1. 简介2. Prometheus客户端3. Prometheus服务端4. 总结 三、Grafana1. 简介2. Grafana安装3. Grafana配置 前言 系统监控‌ 在企业级的应用中&#xff0c;系统监控至关…

PHP语法学习(第六天)

&#x1f4a1;依照惯例&#xff0c;回顾一下昨天讲的内容 PHP语法学习(第五天)主要讲了PHP中的常量和运算符的运用。 &#x1f525; 想要学习更多PHP语法相关内容点击“PHP专栏” 今天给大家讲课的角色是&#x1f34d;菠萝吹雪&#xff0c;“我菠萝吹雪吹的不是雪&#xff0c;而…

关于遥感图像镶嵌后出现斑点情况的解决方案

把几张GF1的影像镶嵌在一起后&#xff0c;结果在Arcgis里出现了明显的斑点情况&#xff08;在ENVI里显示则不会出现&#xff09;&#xff0c;个人觉得可能是斑点噪声问题&#xff0c;遂用Arcgis的滤波工具进行滤波处理&#xff0c;但由于该工具本身没有直接设置对多波段处理方式…

【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

单链表---合并两个链表

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 struct ListNode {int val;struct ListNode* next; }; w 方法一---不使用哨兵位 我们创建一个新链表用于合并两个升序链表&#xff0c; 将两个链表中最小的结点依次尾插到…

vue聊天对话语音消息播放动态特效

vue2写法&#xff0c;vue3也能用&#xff0c;粘之即走&#xff1a; 示例&#xff1a; <template><div class"voice-hidden"><divclass"voice-play-chat":class"[className, { animate-stop: !isPlaying }]"><div class&q…

深度学习7 梯度下降优化、过拟合、手机价格预测

三、BP算法 3、梯度下降 w w - lr * grad&#xff1a; w 表示权重&#xff0c;lr表示学习率&#xff0c;grad表示梯度 传统下降方式分三类&#xff1a;&#xff08;BGD&#xff09;批量梯度下降、&#xff08;MBGD&#xff09;小批量梯度下降、&#xff08;SGD&#xff09;随…