一.集群和分布式:

集群:同一个业务系统,部署在多台服务器上,集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的
 

分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率,

对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败

二.LVS 介绍

定义
LVS 是基于 Linux 内核的四层(传输层)负载均衡解决方案,由章文嵩博士开发,用于构建高性能、高可用的服务器集群。

核心组件

  • Director(调度器):接收客户端请求并分发到后端 Real Server。

  • Real Server(真实服务器):实际处理请求的后端服务器集群。

  • VS:Virtual Server: 虚拟服务器

  • VIP(虚拟 IP):对外提供服务的虚拟 IP 地址。

  • RIP(真实 IP):后端服务器的真实 IP 地址。

  • CIP:Client IP

VS:负责调度
RS:负责真正的服务
访问流程:CIP VIP == DIP RIP

官网The Linux Virtual Server Project - Linux Server Cluster for Load Balancinghttp://www.linuxvirtualserver.org/ lvs集群体系结构

 LVS的三种工作模式

NAT

Ivs-nat:

本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发

RIP和DIP应在同一个IP网络,且应使用私网地址;RS的网关要指向DIP

请求报文和响应报文都必须经由Director转发,Director易于成为系统瓶颈支持端口映射,可修改请求报文的目标PORT

VS必须是Linux系统,RS可以是任意OS系统

 NAT模式的工作流程

1.客户端发送访问请求,请求数据包中含有请求来源(cip),访问目标地址(VIP)访问目标端口(9000port)

2.VS服务器接收到访问请求做DNAT把请求数据包中的目的地由VIP换成RS的RIP和相应端口

3.RS1相应请求,发送响应数据包,包中的相应保温为数据来源(RIP1)响应目标(CIP)相应端口(9000port)

4.VS服务器接收到响应数据包,改变包中的数据来源(RIP1-->VIP),响应目标端口(9000-->80)

5.VS服务器把修改过报文的响应数据包回传给客户端

6.lvs的NAT模式接收和返回客户端数据包时都要经过lvs的调度机,所以lvs的调度机容易阻塞

图解

客户请求到达vip后进入PREROUTING,在没有ipvs的时候因该进入本机INPUT,当IPVS存在后访问请求在通过PREROUTING后被ipvs结果并作nat转发

因为ipvs的作用点是在PREROUTING和INPUT链之间,所以如果在prerouting中设定规则会干扰ipvs的工作。所以在做lvs时要把iptables的火墙策略全清理掉。

DR

TUN

LVS三种工作模式对比

模式原理优点缺点
NAT修改数据包的IP/端口支持端口映射,配置简单Director 易成瓶颈
DR(Direct Routing)仅修改 MAC 地址,不修改 IP性能极高(90% 吞吐量)要求 Real Server 与 Director 同局域网
TUN(IP 隧道)通过 IP 隧道封装数据包可跨机房部署配置复杂,隧道开销高


 关键区别

  • NAT/FullNAT:请求和响应均经过Director。

  • DR/TUN:仅请求报文经过Director,响应报文由RS直接返回客户端。

vs-dr:通过封装新的MAC首部实现,通过MAC网络转发

lvs-tun:通过在原IP报文外封装新IP头实现转发,支持远距离通信

lvs-nat与lvs-fullnat:请求和响应报文都经由Director

lvs-nat:RIP的网关要指向DIP

LVS调度算法

LVS支持多种调度算法,分为静态和动态两类:

1. 静态算法(不考虑RS负载)
  • RR(轮询):均分请求到各RS。  ——适用场景:Real Server 性能均等

  • WRR(加权轮询):根据RS性能分配权重。 ——适用场景:Real Server 配置不均

  • SH(源地址哈希):同一客户端固定访问同一RS(会话保持)。 ——适用场景:需要会话保持的应用

2. 动态算法(基于RS负载状态)
  • LC(最少连接):优先选择连接数最少的RS。 ——适用场景:长连接服务(如数据库)

  • WLC(加权最少连接):默认算法,结合权重和连接数。 ——适用场景:Real Server 性能均等,但需动态平衡 “连接数”,避免节点过载。

  • SED/NQ:优化高权重节点的初始连接分配。 ——适用场景:Real Server 性能均等,但需 “优先让高权重节点承接初始连接”(哪怕连接数稍多 ),或需 “初始流量倾斜”。

  

lvs命令介绍

lvs软件相关信息

程序包:ipvsadm

Unit File: ipvsadm.service

主程序:/usr/sbin/ipvsadm

规则保存工具:/usr/sbin/ipvsadm-save

规则重载工具:/usr/sbin/ipvsadm-restore

配置文件:/etc/sysconfig/ipvsadm-config

ipvs调度规则文件:/etc/sysconfig/ipvsadm

ipvsadm命令

管理集群服务

ipvsadm -A|E -t(tcp)|u(udp)|f(防护墙标签) \

service-address(集群地址) \

[-s scheduler(调度算法)] \

[-p [timeout]] \

[-M netmask] \

[--pepersistence_engine] \

[-b sched-flags]


 

ipvsadm -D -t|u|f service-address 删除

ipvsadm –C 清空

ipvsadm –R 重载

ipvsadm -S [-n] 保存

 

管理集群中的real server

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  删除RS

ipvsadm -L|l [options]                  查看rs

ipvsadm -Z [-t|u|f service-address]        清楚计数器

lvs集群中的增删改

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

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]

-A #添加

-E #修改

-t #tcp服务

-u #udp服务

-s #指定调度算法,默认为WLC

-p #设置持久连接超时,持久连接可以理解为在同一个时间段同一个来源的请求调度到同一Realserver-f #firewall mask 火墙标记,是一个数字

形式 

#增加

[root@DR-server ~]# ipvsadm -A -t 172.25.254.100:80 -s rr

[root@DR-server ~]# ipvsadm -A -f 66 -p 3000

#修改

[root@DR-server ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 3000

#删除

[root@DR-server ~]# ipvsadm -D -t 172.25.254.100:80[root@DR-server ~]# ipvsadm -D -f 66

2.管理集群中RealServer的曾增删改

-a                     #添加realserver

-e                     #更改realserver-t #tcp协议

-u                      #udp协议

-f                       #火墙 标签

-r                       #realserver地址

-g                      #直连路由模式

-i                       #ipip隧道模式

-m                    #nat模式

-w                    #设定权重

-Z                     #清空计数器

-C                    #清空lvs策略

-L                     #查看lvs策略

-n                   #不做解析

--rate               #输出速率信息

形式

ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]


 

#添加

[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.30 -m

[root@DR-server ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.40 -m -w 2

#更改

[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -m -w 1

[root@DR-server ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.0.30 -i -w 1

#删除

[root@DR-server ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30

[root@DR-server ~]# ipvsadm -Ln

[root@DR-server ~]# ipvsadm -Ln --rate

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port                 CPS   InPPS   OutPPS   InBPS   OutBPS

   -> RemoteAddress:Port

TCP 172.25.254.100:80                  0          0                0           0            0   

   -> 192.168.0.30:80                       0          0                0           0            0

   -> 192.168.0.40:80                        0         0                0           0            0


[root@DR-server ~]# ipvsadm -C   ——清空所有策略

[root@DR-server ~]# ipvsadm -Z -t 172.25.254.20:80

[root@DR-server ~]# ipvsadm -Ln --rate

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port                 CPS   InPPS   OutPPS   InBPS   OutBPS

   -> RemoteAddress:Port

TCP 172.25.254.20:80                   0            0             0            0             0

  -> 192.168.0.30:80                       0            0              0           0             0 

   -> 192.168.0.40:80                      0            0               0          0             0

 

 

 

NAT模式集群实验:

实验环境

主机名IPVIP角色
lvs192.168.0.100172.25.254.100调度器(VS)
RS1192.168.0.10,GW192.168.0.100null真实服务器(RS)
RS2192.168.0.20,GW192.168.0.100null真实服务器(RS)
client172.25.254.111测试机

注:

此实验要关闭火墙然后网页里要写内容

systemctl disable --now firewalld.service

echo 20 > /var/www/html/index.html

实验开始:

1.在lvs中启用内核路由功能

]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf]# sysctl --system

2.在node1中安装ipvsadm

]# yum install ipvsadm -y

 3.在node1中添加调度策略

# ipvsadm -A -t 172.25.254.100:80 -s rr
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

4.查看策略

ipvsadm -Ln

 5.保存策略

ipvsadm -Sn

 

 6.删除所有策略

ipvsadm -C

 7.重新加载策略

]# ipvsadm -R < /etc/sysconfig/ipvsadm-config
]# ipvsadm -Ln

 8.以上操作均为临时,如果想开机启动,就得设置

]# systemctl enable --now ipvsadm.service

 9.测试:

for N in {1..6};do curl 172.25.254.100;done

 

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

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

相关文章

leetcode_27 移除元素

1. 题意 给定一个数组&#xff0c;把不等于val的元素全部移动到数组的前面来。 不需要考虑值为val里的元素。 2. 题解 2.1 同向双指针 我们利用双指针&#xff0c;慢指针指向下一个插入的位置。而快指针不断向前找到首个不为val的值&#xff0c;找到后将快指针位置值赋给慢…

Linux-Ubuntu下的git安装与配置

一、安装git1.打开终端&#xff0c;运行以下命令&#xff08;需要联网&#xff09;sudo apt-get update sudo apt-get install git2.验证安装安装完成之后&#xff0c;通过运行以下命令验证git是否已经正确安装&#xff1a;git --version二、配置git2.1.配置用户名及邮箱地址在…

2D和3D激光slam的点云去运动畸变

在使用激光雷达设备采集点云的时候&#xff0c;我们都知道&#xff0c;激光雷达是边运动边采集的&#xff0c;每一个点云采集时的激光雷达的中心和姿态都是不一样的&#xff0c;如果不加以矫正&#xff0c;那么这一帧数据就会出现问题&#xff0c;比如采集一个平面的结构的时候…

Java 热门面试题 200 道(Markdown表格版)【简化版】

Java 热门面试题 200 道(Markdown表格版)【简化版】 Java与数据库核心面试题摘要 本文精选200道Java与数据库高频面试题,重点涵盖: Java集合: HashMap原理(数组+链表/红黑树)、ConcurrentHashMap分段锁优化、红黑树改进目的(解决哈希冲突性能问题) MySQL索引: 最左前…

OpenCV探索之旅:多尺度视觉与形状的灵魂--图像金字塔与轮廓分析

在我们学会用Canny算法勾勒处世界的轮廓之后&#xff0c;一个更深层次的问题摆在了面前&#xff1a;这些由像素组成的线条&#xff0c;如何才能被赋予“生命”&#xff0c;成为我们能够理解和分析的“形状”&#xff1f;如果一个物体在图像中时大时小&#xff0c;我们又该如何稳…

Redis作缓存时存在的问题及其解决方案

Redis最常用的一个场景就是作为缓存&#xff0c;本文主要探讨Redis作为缓存&#xff0c;在实践中可能会有哪些问题&#xff1f;比如一致性, 穿击, 穿透, 雪崩, 污染等。 为什么要理解Redis缓存问题 在高并发的业务场景下&#xff0c;数据库大多数情况都是用户并发访问最薄弱的…

day17 力扣654.最大二叉树 力扣617.合并二叉树 力扣700.二叉搜索树中的搜索 力扣98.验证二叉搜索树

最大二叉树给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大…

天地图前端实现geoJson与wkt格式互转

geoJson与wkt都是WebGIS开发中经常用到的格式&#xff0c;天地图行政区划边界接口返回的是wkt格式数据&#xff0c;需要转换一下。 安装插件&#xff1a;terraformer/wkt npm install terraformer/wkt 两个函数&#xff1a; .wktToGeoJSON(WKT) ⇒ object.geojsonToWKT(Geo…

(1-7-3)数据库的基本查询

目录 1. 数据库的基本查询 1.1 简单的记录查询 1.2 使用列别名 2. 数据分页查询 &#xff08;1&#xff09;查询前五行数据 &#xff08;2&#xff09;查询 11 ~ 15 行数据 3. 结果集排序 3.1 单关键字排序 &#xff08;1&#xff09;升序排列 &#xff08;2&#…

宝塔配置pgsql可以远程访问及pdo_pgsql扩展的安装

本地navicat premium 17.0 可以远程访问pgsql v16.1宝塔的软件商店里&#xff0c;找到pgsql管理器&#xff1b;在pgsql管理器里找到客户端认证&#xff1a;第二步&#xff1a;配置修改&#xff0c;CtrlF 查找listen_addresses关键字&#xff1b;第三步&#xff1a;在navicat里配…

SQL进阶:自连接的用法

目录 一、可重排列、排列、组合 1、创建表 2、录入数据 3、获取可重排列的商品名称&#xff08;有序&#xff09; 4、获取排列的商品名称&#xff08;有序&#xff09; 5、获取组合的商品名称&#xff08;无序&#xff09; 6、获取3个元素的组合商品名称&#xff08;无序…

Spark集群优化配置指南

Spark集群优化配置指南 &#x1f4cb; 概述 本文档记录了5节点Spark集群的性能优化配置&#xff0c;主要解决Thrift Server内存不足(OOM)问题和CPU资源利用率低的问题。 文档内容 Spark架构原理: Driver与Executor的关系和工作机制Driver内存配置详解: 三个关键内存参数的作用和…

Layui —— select

前言&#xff1a;记录在修改bug时遇到的一些奇怪问题。遇到的奇怪问题1&#xff1a;项目中引入了 layui&#xff0c;而且也使用了 layui.use 按需导入了需要的组件&#xff0c;但是在页面每次刚初始化的时候去使用layui&#xff0c;控制台都会报 组件未定义的问题&#xff08;正…

代码随想录day32dp1

文章目录509. 斐波那契数70. 爬楼梯746. 使用最小花费爬楼梯确定dp数组&#xff08;dp table&#xff09;以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组509. 斐波那契数 题目链接 文章讲解 class Solution { public:int fib(int n) {// 1. 确定…

RedisJSON 技术揭秘`JSON.ARRTRIM`用窗口裁剪,让数组保持“刚刚好”

1、指令速查 JSON.ARRTRIM <key> <path> <start> <stop>key&#xff1a;Redis 键名path&#xff1a;JSONPath&#xff0c;默认 $ 根&#xff1b;可用 .[*]/.. 多路径匹配start / stop&#xff1a;要保留的 [start, stop] 闭区间索引 支持负值&#xff…

fpga调试经验

fpga调试经验 调测场景&#xff1a; 外接adc传感器芯片&#xff0c;采集压力&#xff0c;温度等模拟量&#xff0c;fpga通过spi/i2c接口与adc传感器芯片通信 问题1&#xff1a;adc芯片在稳定环境中&#xff0c;输出数字量不稳定。 结论&#xff1a;adc输入电压由fpga板供应&…

cefSharp.WinForms.NETCore 138.xx (cef138/Chromium 138.0.7204.97) 升级测试体验

一、版本说明及变化 该版本支持cef138.0.x系列,cefsharp138.0.170 无重大更新;该版本暂不支持h264,请关注后续 关注栏目,关注我,学习cefsharp少走弯路 不迷路! CefSharp 设置缓存的注意事项参考 说明:栏目是订阅文章,无附件,如需要单独获取(看底部介绍说明) 该版本1…

chatgpt是怎么诞生的,详解GPT1到GPT4的演化之路及相关背景知识

人工智能革命正在发生&#xff0c;我们是何其幸运的一代&#xff0c;能亲眼见证人类/机器智能的大爆发。 仅仅作为这场革命的看客显然是有些遗憾的&#xff0c;如何进一步了解它&#xff1f; 本文将讨论chatgpt的诞生过程&#xff0c;串联起OpenAI发表的一系列重要论文&#…

[笔记] 动态 SQL 查询技术解析:构建灵活高效的企业级数据访问层

文章目录一. 应用场景二. 使用示例示例1示例2示例3三. 实现1. 动态表查询构建器&#xff0c;模仿MyBatis-Plus2. mapper3. mapper.xml功能概述参数说明四. 动态 SQL 的优化与风险防控在企业级应用开发中&#xff0c;数据查询场景往往呈现出复杂多变的特点 —— 从简单的单表筛选…

.net天擎分钟降水数据统计

1.需求&#xff1a;计算滑动时间下的1小时、3小时、6小时、12小时、24小时降水数据&#xff0c;统计这个时间下的分钟级降水数据2.分析第一版本&#xff1a;降水分钟级数据保存时间不长&#xff0c;保存太多意义不大&#xff0c;以更新的形式来保存这些统计数据效果会比较好&am…