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

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

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

相关文章

关于报错java.util.ConcurrentModificationException: null的源码分析和解决

一般有这种问题,方法中至少会有List或者Map下的至少两个子类,有可能参数类型相同,也有可能不同都有可能触发这个问题!其主要原因是使用了ArrayList进行删除操作或者使用iterator遍历集合的同时对集合进行修改都有可能会出现这个问题 ArrayList属于List下的子类 需要区分的是Li…

1.让数组动起来

概述 对数组进行分析,目标如下 线性表的概念数组的存储结构数组查询,插入,删除操作的特点及对应的时间复杂度刷题(盛最多水的容器) 线性表 在数据结构中,数据的逻辑结构分为线性结构和非线性结构 线性结构: n个数据元素有序集合…

基于深度学习的单图像人群计数研究:网络设计、损失函数和监控信号

摘要 https://arxiv.org/pdf/2012.15685v2.pdf 单图像人群计数是一个具有挑战性的计算机视觉问题,在公共安全、城市规划、交通管理等领域有着广泛的应用。近年来,随着深度学习技术的发展,人群计数引起了广泛的关注并取得了巨大的成功。通过系统地回顾和总结2015年以来基于深…

Kafka - 消息队列的两种模式

文章目录 消息队列的两种模式点对点模式(Point-to-Point,P2P)发布/订阅模式(Publish/Subscribe,Pub/Sub) 小结 消息队列的两种模式 消息队列确实可以根据消息传递的模式分为 点对点模式发布/订阅模式 这两…

数字孪生协同仿真:复杂电机篇

​01.简介 电机仿真是现代机电工程研究领域中的重要环节,始于20世纪后半叶,为工程师提供了一种研究、设计和优化各种电机系统的新方式。时至今日,从传统的电动机到现代的电动汽车动力系统,电机仿真技术在电机设计、性能分析和控制…

微信小程序项目案例之导游证考试刷题小程序

前言 很多计算机专业的同学在做毕设选题时不知道该如何选题,有的同学是已经选择了要开发一款小程序,但是又不知道开发哪类小程序。本篇将为大家介绍一个小程序的开发方向,考试刷题类小程序是目前比较火的小程序项目之一,在小程序…

深入解析 Spring Framework 中 @Autowired 注解的实现原理

摘要 关于Autowired注解的作用 Autowired 注解在Spring中的作用是实现依赖注入(Dependency Injection),它用于自动装配(autowiring)Spring Bean 的依赖关系。具体来说, Autowired 注解有以下作用&#xf…

【rust/esp32】wsl2开发环境搭建与测试

文章目录 说在前面流程可能的问题wsl2相关rust相关vscode相关build相关 测试吐槽参考 说在前面 esp型号:esp32s3开发环境:wsl2rustc版本:rustc 1.73.0-nightlyesp idf版本:v5.1.1 流程 目前是按照这个demo的流程可以跑通修改demo…

win10 javaweb 项目8080端口被占用

文章目录 前言出现场景:解决思路: 前言 提示:生活该走向何处?也许你还不知道答案,但是你一定是答案的一部分。 出现场景: 解决思路: 找到运行的进程直接干掉 打开命令窗口(win r…

手机平板摄像头如何给电脑用来开视频会议

环境: Iriun Webcam EV虚拟摄像头 钉钉会议 问题描述: 手机平板摄像头如何给电脑用来开视频会议 解决方案: 1.下载软件 手机端和电脑端都下载这个软件,连接同一局域网打开软件连接好 另外一款软件Iriun 也是一样操作 2.打…

【Linux】NTP服务器配置、时间修改

查看当前系统时间date修改当前系统时间date -s "2018-2-22 19:10:30"查看硬件时间hwclock --show修改硬件时间hwclock --set --date "2018-2-22 19:10:30"同步系统时间和硬件时间hwclock --hctosys保存时钟clock –w1.设置NTP Server服务检查系统是否安装n…

SpringBoot中CommandLineRunner详解(含源码)

文章目录 前言实例导入库application.yamlRunnerSpringBootCommandLineRunnerApplication执行结果 先后顺序示例OrderRunner1OrderRunner2执行结果 通常用法加载初始化数据示例 启动后打印应用信息示例 启动异步任务示例 接口健康检查示例 外部服务调用示例 参数校验示例 动态设…

Apache Doris (四十八): Doris表结构变更-替换表

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

力扣第968题 监控二叉树 c++ hard题 二叉树的后序遍历 + 模拟 + 贪心

题目 968. 监控二叉树 困难 相关标签 树 深度优先搜索 动态规划 二叉树 给定一个二叉树,我们在树的节点上安装摄像头。 节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。 计算监控树的所有节点所需的最小摄像头数量。 示例 1: …

在CentOS上用yum方式安装MySQL8真实全过程记录(顺利版本)

此文参考我前面的文章《在CentOS上用yum方式安装MySQL8过程记录》,之前比较曲折,现在再安装一台mysql。 因为之前很多坑已经走过,加上这台Linux之前没安装过MYSQL,所以整个过程算是非常顺利。 安装环境:centos7 mysql…

如何实现可靠的数据调度同步,数据同步方案看一下!

随着企业规模不断扩大,分支机构越来越多,跨区域跨国的集团越来越多,越来越多的企业要求内部各种业务数据在服务器、数据中心甚至云上,能够进行实时的调度和同步,从而需要部署一套数据同步方案,实现服务器与…

甘特图组件DHTMLX Gantt用例 - 如何自定义任务、月标记和网格新外观

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表。可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。 本文将为大家揭示DHTMLX Gantt自定义的典型用例,包括自定义任务、网格的新外观等,来展示其功能的强大性&…

浙江爱知道控股集团,数字化经营的实践者,科技降本增效,助力基业长青

拥抱时代浪潮,加速科技变革。10月27日,浙江爱知道控股集团于西子智慧产业园西子音乐厅举办“AIGC可持续发展峰会”,重点探讨了数字化经营的重要意义。 提高效率和降低成本:数字化经营可以优化和自动化企业的业务流程,提…

软信天成:数据质量管理对企业有什么意义?

在这个信息爆炸的时代,数据已经成为了企业决策的基础,是企业成功的关键要素。然而,如果企业所获取的数据质量不佳,会对企业产生何种影响呢? 事实上,有效而准确的数据可以揭示出潜在的业务机遇,…

接触式静电压测量仪的用途和操作方法

接触式静电压测量仪是一种用于测量静电电荷的仪器,主要用于工业生产和科学研究领域。它可以测量静电电压、静电场强、静电电荷等参数,对于静电控制和环境监测等方面具有重要的作用。 接触式静电压测量仪的操作方法如下: 接通电源:…