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

负载均衡策略 LVS

一、集群功能分类

1、LB

(1) 概念:

LB:负载均衡 (Load Balancing) 是一种分发网络流量的技术,LB 负载均衡的基本原理是将传入的网络流量分发到多个后端服务器,以确保这些服务器都承担相似的工作负载,从而避免某一台服务器过载而其他服务器处于空闲状态。

(2) 负载均衡产品分类:

① 软件负载均衡设备:

软件负载均衡设备是在软件层面实现负载均衡的工具或服务,通常运行在普通服务器或虚拟机上,无需专用硬件设备。

● LVS(Linux Virtual Server):

LVS 是一个内核级别的负载均衡解决方案,根据用户请求的IP与端口号,实现将用户的请求分发至不同的主机;

● HAproxy:

haproxy:主要功能是针对 http 协议实现负载均衡,也可以实现 tcp、udp 等协议的负载均衡。

② 硬件负载均衡设备:

硬件负载均衡设备是专门用于分发网络流量、管理服务器集群和确保应用程序高可用性的物理设备。

厂商及种类:F5 Networks - BIG-IP、Citrix - Citrix ADC、A10 Networks - Thunder ADC

2、HA

(1) 概念:

HA:高可用性集群(High Availability)是一种计算机系统或网络架构设计,旨在提高系统的稳定性和可用性,减少因硬件故障、软件问题或其他意外事件而导致的中断或停机时间。

(2) HA 衡量可用性:

衡量可用性:在线时间  /(在线时间+故障处理时间)

HA 通过百分比或其他指标来衡量可用性水平,通常以"几个9"的形式来表示:

99%:一年有三天不在线

99.9%:一年有0.3天不在线

99.99%:一年有0.03天不在线

99.999%:一年有0.003天不在线

二、负载均衡

1、负载均衡的主要方式:

① http 重定向:

通过 HTTP 协议的重定向来分发客户端请求到多个后端服务器,这种方法通常用于将流量从一个入口点引导到不同的服务或网站。

② DNS 负载均衡:

DNS 负载均衡是通过在 DNS 层面管理域名解析来分发网络流量到不同的服务器或资源。DNS服务器上配置多个域名对应IP的记录,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上。

③ 反向代理负载均衡:

反向代理器位于服务器端,负责接收客户端请求,将客户端的请求转发到多个后端服务器来分发流量。

④ IP 网络层负载均衡(lvs-nat):

在网络层和传输层修改 IP 地址。

用户访问请求到达负载均衡服务器,负载均衡服务器根据算法得到一台真实服务器地址,然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后再讲数据返回去。

⑤ 数据链路层负载均衡(lvs-DR)

在数据链路层修改 Mac 地址。

负载均衡服务器的 IP 和它所管理的 web 服务群的虚拟 IP 一致; 负载均衡数据分发过程中不修改访问地址的 IP 地址,而是修改 Mac 地址。

2、负载均衡层次:

● 四层负载(Layer 4 Load Balancing):

四层负载均衡工作在OSI模型的第四层,也称为传输层,这种负载均衡主要基于源IP地址、目标IP地址、源端口和目标端口等传输层信息进行负载分发。它不深入分析传输的数据内容。

● 七层负载(Layer 7 Load Balancing):

七层负载均衡工作在OSI模型的第七层,也称为应用层,这种负载均衡不仅考虑传输层信息,还深入分析应用层数据包,可以根据HTTP头、URL、Cookie等应用层特定的信息进行负载分发决策。

三、LVS

1、LVS 概述:

LVS(Linux Virtual Server)是一个虚拟的服务器集群系统。LVS 工作在一台server上,提供 Directory(负载均衡器) 的功能,把特定的请求转发给对应的real server(真正提供服务的主机),实现集群环境中的负载均衡。

● 框架:LB-server负载均衡器 - realy-server真实服务器

2、LVS - NAT:

(1) 工作原理:

① 客户端将请求发往负载均衡器,请求报文源地址是 CIP(客户端IP),目标地址为 VIP(负载均衡器地址);

② 负载均衡器收到报文后,将客户端请求报文的目标 IP 地址改为后端服务器的 RIP 地址,并将报文根据算法发送出去。

③ 报文送到后端服务器后,后端服务器会响应该请求,并将响应报文返还给 LVS;

④ LVS 将此报文的源地址修改为本机并发送给客户端。

(2) 地址分配:

client:vmnet8 → 192.168.198.133(vmnet8 需要联网)

LVS: vmnet8 → 192.168.198.132

vmnet10 → 192.168.48.128

web1:vmnet10 → 192.168.48.40

web2:vmnet10 → 192.168.48.50

(3) 配置:

① web 服务器:

systemctl start httpd

systemctl enable httpd

● route add -net 192.168.198.0/24 gw 192.168.48.128

配置外部网段与网关

web1:echo web1 > /var/www/html/index.html

web2:echo web2 > /var/www/html/index.html

② LVS 配置:

● echo 1 > /proc/sys/net/ipv4/ip_forward

启动路由功能。将1写入 /proc/sys/net/ipv4/ip_forward 文件,会启用IP数据包转发,允许Linux服务器将收到的IP数据包从一个网络接口转发到另一个网络接口。

yum install -y ipvsadm

● ipvsadm -A -t 192.168.198.132:80 -s rr

   -A:添加 lvs 集群ip(客户端将请求发送到的地址)

   -t:tcp协议

   -s rr:使用轮序调度算法

ipvsadm -a -t 192.168.198.132:80 -r 192.168.48.40:80 -m

ipvsadm -a -t 192.168.198.132:80 -r 192.168.48.50:80 -m

指定添加的真实服务器ip和端口

③ client 测试:

3、LVS - DR

(1) 工作原理:

① 客户端将请求发往负载均衡器,请求报文源地址是CIP,目标地址为VIP;

② 负载均衡器收到报文后,将客户端请求报文的源 MAC 地址改为自己 DIP 的 MAC 地址,目标 MAC 改为了 RIP 的 MAC 地址,并将此包发送给 RS;

③ RS 处理完请求报文后,将响应报文通过 lo 接口送给 eth0 网卡,直接发送给客户端。

(2) 地址分配:

client:192.168.198.129

LVS:192.168.198.130(虚拟ip:192.168.198.140)

web1:192.168.198.132(虚拟ip:192.168.198.140)

web2:192.168.198.133(虚拟ip:192.168.198.140)

(3) LVS 服务器配置:

① 添加虚拟ip(VIP)和路由条目:

● ifconfig ens33:0 192.168.198.140 broadcast 192.168.198.255 netmask 255.255.255.0 up

ens33:0 是网络接口的虚拟子接口(Virtual Subinterface),子接口允许将多个IP 地址分配给同一个物理网络接口 ;up 表示启用虚拟子接口。

● route add -host 192.168.198.140 dev ens33:0

将所有传往IP地址 192.168.198.140 的数据包发送到 ens33:0 虚拟子接口

② 设置路由转发:

开启路由转发功能 ;禁止转发重定向

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

③ 设置负载均衡条目:

yum install -y ipvsadm

ipvsadm -A -t 192.168.198.140:80 -s rr

ipvsadm -a -t 192.168.198.140:80 -r 192.168.198.132:80 -g

ipvsadm -a -t 192.168.198.140:80 -r 192.168.198.133:80 -g

(4) web 服务器部署:

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

systemctl start httpd

systemctl enable httpd

● ifconfig lo:0 192.168.198.140/32

分配给虚拟回环接口 lo:0 的IP地址。

● echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

忽略 arp 请求,不接收客户端发送的 arp

● echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

可以响应客户端的 arp 请求

(5) client 测试:

4、轮询算法:

(1) 静态调服方法:

静态调度方法是指按照预定的、不变的顺序或一组规则在一组服务器或资源之间分配请求或任务。

① 轮询 (RR):将外部请求按顺序轮流分配到集群中的真实服务器上;

② 加权轮询 (WRR):给服务器配置一个权重值,请求按照服务器的权重比例来分发。高权重的服务器将获得更多的请求,而低权重的服务器将获得相对较少的请求。

(2) 动态调服方法:

动态调度方法用于根据实时条件,在一组服务器或资源之间分发请求、任务或工作负载。

① 最小连接 (LC):将新请求定向到当前活动连接最少的服务器。

② 加权最小连接 (WLC):新连接被定向到具有最少活动连接的服务器,但是服务器的权重会影响它可以处理的连接数。

相关文章:

负载均衡策略 LVS

一、集群功能分类 1、LB (1) 概念: LB:负载均衡 (Load Balancing) 是一种分发网络流量的技术,LB 负载均衡的基本原理是将传入的网络流量分发到多个后端服务器,以确保这些服务器都承担相似的工作负载,从而避免某一台…...

驱动开发6 IO多路复用——epoll

核心操作&#xff1a;一棵树、一张表、三个接口 相关案例 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <sys…...

【python学习笔记——列表】

1、列表定义 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。 空列表 list[]非空列表 列表定义时例如list[‘csdn’, ‘is’ ,‘good’ ,2023]&#xff0c;直接给列表内赋值 2、列表索引规则 列表名[start:stop:step]&#xff0c;前闭后开&#xff0c;即取索引为start…...

TensorRT量化实战课YOLOv7量化:YOLOv7-PTQ量化(一)

目录 前言1. YOLOv7-PTQ量化流程2. 准备工作3. 插入QDQ节点3.1 自动插入QDQ节点3.2 手动插入QDQ节点 前言 手写 AI 推出的全新 TensorRT 模型量化实战课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 该实战课程主要基于手写 AI 的 Latte 老师所出的 Tens…...

[微信小程序踩坑]微信小程序editor富文本组件渲染字符串时,内部图片超出大小导致无法正常渲染或回显(数据传输长度为 3458 KB,存在有性能问题!)

坑一&#xff1a;回显问题 富文本组件&#xff1a; <editor id"editor" name"{{name}}" style"font-size: 28rpx;color: #C9CDD4" read-only"{{true}}" placeholder"{{placeholder}}" bind:input"onChange11"…...

USACO12OPEN Balanced Cow Subsets G(meet in the middle)

洛谷P3067 [USACO12OPEN] Balanced Cow Subsets G 题目大意 我们定义一个奶牛集合 S S S是平衡的&#xff0c;当且仅当满足以下两个条件&#xff1a; S S S非空 S S S可以被划分为两个集合 A , B A,B A,B&#xff0c;满足 A A A里的奶牛产量之和等于 B B B里的牛奶产量之和 …...

GIT常用操作记录

1、后悔药&#xff1a;强制回退到某个具体历史提交记录&#xff0c;并强制推送到远程仓库 强制回退到某个具体历史提交记录&#xff0c;即要删除它之后的所有提交&#xff0c;可以用 git reset 命令。 首先找到目标提交记录的ID&#xff0c;可以在github远程仓库的历史提交记…...

【ETL工具】Datax-ETL-SqlServerToHDFS

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…...

Kubernetes (K8S)概述

1、K8S 是什么&#xff1f; K8S 的全称为 Kubernetes (K12345678S)&#xff0c;PS&#xff1a;“嘛&#xff0c;写全称也太累了吧&#xff0c;不如整个缩写”。 1.1 作用 用于自动部署、扩展和管理“容器化&#xff08;containerized&#xff09;应用程序”的开源系统。 可以…...

11月14号|Move生态Meetup相约浪漫土耳其

Move是基于Rust编程语言&#xff0c;由Mysten Labs联合创始人兼CTO Sam Blackshear在Meta的Libra项目中开发而来&#xff0c;旨在为开发者提供比现有区块链语言更通用的开发语言。Sam的目标是创建Web3的JavaScript&#xff0c;即一种跨平台语言&#xff0c;使开发人员能够在多个…...

mac vim没有颜色 问题

vim ~/.vimrc syntax on set nu! set autoindent...

Servlet核心API

目录 HttpServlet init destory service 实例&#xff1a;处理get、post、put、delete请求 1.通过postman得到请求 2.通过ajax得到请求 HttpServletRequest 常见方法 前端给后端传参 1.GET,query string 2.POST,form 3.POST&#xff0c;json HttpSeverletRespons…...

crs 维护模式 exclusive mode

How To Validate ASM Instances And Diskgroups On A RAC Cluster (When CRS Does Not Start). (Doc ID 1609127.1)​编辑To Bottom [rootrac1 ~]# ps -ef|grep grid root 2477 1 1 20:47 ? 00:00:51 /opt/oracle.ahf/jre/bin/java -server -Xms32m -Xmx64…...

【OpenCV实现平滑图像形态学变化】

文章目录 概要目标腐蚀膨胀开运算结构元素&#xff08;内核&#xff09;小结 概要 形态学变化是一组简单的图像操作&#xff0c;主要用于处理二值图像&#xff0c;即只包含黑和白两种颜色的图像。这些操作通常需要两个输入&#xff0c;原始图像和一个内核&#xff08;kernel&a…...

Ubuntu服务器中java -jar 后台运行Spring Boot项目

问&#xff1a;我在我的服务器中java -jar 运行springboot项目&#xff0c;但是我操作不了命令了&#xff0c;必须要终止掉才能执行后面的操作&#xff0c;怎么样才能让他后台运行呢&#xff1f;比如我的jar包名是tools-boot-0.0.1-SNAPSHOT.jar 使用nohup命令&#xff1a; 在…...

微服务parent工程和子工程pom文件配置注意

parent工程 重要配置&#xff1a; <!-- 父工程 --><packaging>pom</packaging><!-- 聚合 --><modules><module>../base</module><module>../gateway</module><module>../user-service</module><mod…...

STM32G030F6P6点灯闪烁

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff08;2&#xff0…...

K8s开发人员也需要了解的相关知识

工作变动总结一下之前的笔记&#xff0c;整理一个速查的东西&#xff0c;方便之后查阅 K8s开发相关 1、k8s yml apiverison: Kubernetes (k8s) 的 API 版本表示资源定义在 API 服务器中的稳定性和支持程度。API 版本由一个字符串表示&#xff0c;如 v1 或 apps/v1&#xff0c…...

创建并启动华为HarmonyOS本地与远程模拟器及远程真机

1.打开设备管理器 2.选择要添加的手机设备,然后点击安装 3.正在下载华为手机模拟器 4.下载完成 5.创建新模拟器 下载系统镜像 点击下一步,创建模拟器 创建成功 启动模拟器 华为模拟器启动成功 6.登陆华为账号并使用远程模拟器 7.使用远程真机...

责任链模式应用案例

前几天系统商品折扣功能优化&#xff0c;同事采用了责任链模式重构了代码&#xff0c;现整理如下。 一、概念 责任链模式是为请求创建一个处理者对象的链条&#xff0c;所有处理者&#xff08;除最末端&#xff09;都含有下一个对象的引用从而形成一条处理链&#xff0c;该模…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...