负载均衡策略 LVS

news2024/10/5 21:25:45

一、集群功能分类

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):新连接被定向到具有最少活动连接的服务器,但是服务器的权重会影响它可以处理的连接数。

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

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

相关文章

【CSS】CSS 属性计算过程

1. 概述 我们所书写的任何一个 HTML 元素&#xff0c;实际上都有完整的一整套 CSS 样式。如果没有修改某样式&#xff0c;大概率可能使用默认值。 例如&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

笔记本Win10系统一键重装系统教程

在Win10笔记本电脑中&#xff0c;用户发现系统出现了崩溃、卡顿等问题&#xff0c;这时候就可以重新安装系统。新安装的系统会更稳定流畅&#xff0c;可以带来更好的操作体验&#xff0c;如果您不知道具体的重装操作步骤&#xff0c;那么就可以参考下面小编分享的笔记本Win10系…

Real- Time Rendering-图形渲染管线(The graphics rendering pipeline)

1、图像渲染管线描述的是什么 图像渲染管线的主要功能是决定在给定虚拟相机&#xff0c;三维物体&#xff0c;光源&#xff0c;照明模式以及纹理等诸多条件的情况下&#xff0c;生成或者绘制一幅二维图像的过程。 渲染图像的位置&#xff0c;形状是由他们的几何形状&#xff0c…

使用GoQuery实现头条新闻采集

概述 在本文中&#xff0c;我们将介绍如何使用Go语言和GoQuery库实现一个简单的爬虫程序&#xff0c;用于抓取头条新闻的网页内容。我们还将使用爬虫代理服务&#xff0c;提高爬虫程序的性能和安全性。我们将使用多线程技术&#xff0c;提高采集效率。最后&#xff0c;我们将展…

火锅食材店配送小程序商城的作用是什么

每个城市中都有大量火锅店、自助转转店&#xff0c;当然还包括个人在家中涮菜&#xff0c;其对火锅食材的需求量非常高&#xff0c;而在市场中也有很多专营店或超市经营&#xff0c;行业中也不乏头部品牌。 对火锅食材店来说&#xff0c;长期经营及生意好的因素除了食品新鲜质…

移动端之Unity嵌入Android项目开发

目录 前言1 搭建开发环境2 创建Unity项目 2.1 新建项目2.2 Unity构建配置2.3 Android环境相关配置2.4 导出Unity库文件3 创建Android项目 3.1 新建Android项目3.2 Android环境相关配置3.2 导入Unity相关的库3.3 Android中跳转到Unity视图4 进阶扩展 4.1 包体积优化 4.1.1 mono…

Babylonjs学习笔记(六)——贴图的使用

书接上回&#xff0c;这里讨论贴图的运用&#xff01;&#xff01;&#xff01; // 创建球网格const ball MeshBuilder.CreateSphere(ball,{diameter:1},scene)ball.position new Vector3(0,1,0)// 创建PRB材质const ballMat new PBRMaterial(pbr,scene)// albedoTexture 反…

通过实例理解Go Web身份认证的几种方式

在2023年Q1 Go官方用户调查报告[1]中&#xff0c;API/RPC services、Websites/web services都位于使用Go开发的应用类别的头部(如下图)&#xff1a; 我个人使用Go开发已很多年&#xff0c;但一直从事底层基础设施、分布式中间件等方向&#xff0c;Web应用开发领域涉及较少&…

14 结构性模式-适配器模式

1 适配器模式介绍 适配器模式(adapter pattern )的原始定义是&#xff1a;将类的接口转换为客户期望的另一个接口&#xff0c;适配器可以让不兼容的两个类一起协同工作。 2 适配器模式原理 3 适配器模式应用实例 /*** SD卡接口**/ public interface SDCard {//读取SD卡Strin…

【Docker】什么是Docker?看这一篇干货文章就够了!

目录 前言 容器技术的起源 容器技术 vs 虚拟机 什么是容器 什么是docker 如何使用docker docker的底层实现 总结 前言 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux或…

斯德博STOBER伺服驱动器维修MDS5040A

STOBER斯德博驱动器常见故障维修如下&#xff1a; 当伺服驱动器给出移动指令而机床不移动&#xff0c;则伺服器维修故障原因可能是&#xff1a;机械传动卡住。如果故障发生在垂直轴控制时&#xff0c;则故障为伺服电动机的电磁制动回路。伺服电动机及动力线有断相故障或伺服电…

2024通信保研-电磁场电磁波复习

标量场的梯度的旋度恒等于0&#xff0c;旋度的散度等于0。 旋度&#xff1a; rot ⁡ F ( e x ∂ ∂ x e y ∂ ∂ y e z ∂ ∂ z ) ( e x F x e y F y e z F z ) e x ( ∂ F z ∂ y − ∂ F y ∂ z ) e y ( ∂ F x ∂ z − ∂ F z ∂ x ) e x ( ∂ F y ∂ x − ∂ F x …

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…

JAVA 版多商家入驻 直播带货 商城系统 B2B2C 商城源码之 B2B2C产品概述 商城免费搭建

涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis …

美团圈圈私域社群app拉新怎么做,申请推广渠道

首先说下美团私域社群app拉新申请渠道&#xff0c;可以通过“聚量推客”进行申请聚量推客首码邀请&#xff1a;000000 1、流程&#xff1a;用户点击活动专属链接进入扫码进群页面&#xff0c;长按二维码进入美团圈 圈多重福利群&#xff0c;用户首次进群且保持 10 天不退群即符…

地方门户系统源码 同城信息系统源码 家政外卖跑腿同城信息门户源码

地方门户系统源码 同城信息系统源码 家政外卖跑腿同城信息门户源码 系统介绍&#xff1a; 一&#xff1a;系统 后台设置:菜单列表 管理员管理:角色管理,操作日志,禁止访问IP段列表,管理员登录日志 二&#xff1a;设置 基础设置&#xff1a;站点设置&#xff0c;附件设置&a…

转岗项目经理后,我是如何分析需求的

项目经理有一项工作就是需求分析&#xff0c;需求的本质是根据认知进行假设&#xff0c;然后给出判断。如果需求分析的结果出了问题&#xff0c;那么产品也必然会失败。本文针对如何进行需求分析展开分析&#xff0c;希望能对你有所启发。 一、什么是需求 为什么要明确需求的…

笔记本触摸板怎么开?教你5个实用方法!

“新买了一个笔记本&#xff0c;但是触摸板一直无法打开&#xff0c;应该怎么进行操作呢&#xff1f;有什么方法可以打开笔记本触摸板吗&#xff1f;” 为了方便办公和使用笔记本&#xff0c;笔记本电脑上通常都会有一个触摸板。我们可以用它代替鼠标&#xff0c;更好地进行操作…

可视化沟通解析

如果我们去吃饭看到如下菜单 我想对于当事人而言&#xff0c;这个绝对不是点菜吃饭&#xff0c;而是一场韩语考试。 但是我们看到如下这个菜单会怎么样 如果我们看到这种菜单&#xff0c;即使我们不知道菜的名字我们也能很快的做出我们想要的选择&#xff0c;那样得到的菜不会…

JVM进阶(2)

一)方法区: java虚拟机中有一个方法区&#xff0c;该区域被所有的java线程都是共享&#xff0c;虚拟机一启动&#xff0c;运行时数据区就被开辟好了&#xff0c;官网上说了方法区可以不压缩还可以不进行GC&#xff0c;JAVA虚拟机就相当于是接口&#xff0c;具体的HotSpot就是虚…