负载平衡介绍

news2024/11/28 8:48:29

        负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展 网络设备 和 服务器 的带宽、增加 吞吐量 、加强网络数据处理能力、提高网络的灵活性和可用性。

1.1. 四层负载均衡 层负载均衡 vs 七层负载均衡

 1.1.1. 四层负载均衡( 目标地址和端口交换 )

主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择
的内部服务器。
以常见的 TCP 为例,负载均衡设备在接收到第一个来自客户端的 SYN 请求时,即通过上述方选
择一个最佳的服务器,并对报文中目标 IP 地址进行修改(改为后端服务器 IP),直接转发给该服务
器。TCP 的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类
似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在
转发报文的同时可能还会对报文原来的源地址进行修改。

实现四层负载均衡的软件有:
F5 :硬件负载均衡器,功能很好,但是成本很高。
lvs :重量级的四层负载软件 。
nginx :轻量级的四层负载软件,带缓存功能,正则表达式较灵活 。
haproxy :模拟四层转发,较灵活

1.1.2. 七层负载均衡(内容交换)

所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,
再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

七层应用负载的好处,是使得整个网络更智能化。例如访问一个网站的用户流量,可以通过七层
的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可
以转发到特定的文字服务器并可以使用压缩技术。

实现七层负载均衡的软件有:
haproxy :天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
nginx :只在 http 协议和 mail 协议上功能比较好,性能与 haproxy 差不多;
apache :功能较差
Mysql proxy :功能尚可。

1.2. 负载均衡算法 

1.2.1. 轮循均衡(Round Robin)

每一次来自网络的请求轮流分配给内部中的服务器,从 1 至 N 然后重新开始。此种均衡算法适合
于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。

1.2.2. 权重轮循均衡(Weighted Round Robin)

根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请
求。例如:服务器 A 的权值被设计成 1,B 的权值是 3,C 的权值是 6,则服务器 A、B、C 将分
别接受到 10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用
率,避免低性能的服务器负载过重。

1.2.3. 随机均衡(Random)

把来自网络的请求随机分配给内部中的多个服务器。

1.2.4. 权重随机均衡(Weighted Random)

此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。

1.2.5. 响应速度均衡(Response Time 探测时间)

负载均衡设备对内部各服务器发出一个探测请求(例如 Ping),然后根据内部中各服务器对探测
请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映
服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时
间,而不是客户端与服务器间的最快响应时间。

1.2.6. 最少连接数均衡(Least Connection)

最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在
处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡
更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如 FTP。

1.2.7. 处理能力均衡(CPU、内存)

此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器 CPU 型号、CPU 数量、内存大小
及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行
状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况
下。

1.2.8. DNS 响应均衡(Flash DNS)

在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在
同一时间内把此域名解析成各自相对应服务器的 IP 地址并返回给客户端,则客户端将以最先收到
的域名解析 IP 地址来继续请求服务,而忽略其它的 IP 地址响应。在种均衡策略适合应用在全局负
载均衡的情况下,对本地负载均衡是没有意义的。

1.2.9. 哈希算法

一致性哈希一致性 Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往
该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

1.2.10. IP 地址散列( 保证客户端服务器对应关系稳定 )

通过管理发送方 IP 和目的地 IP 地址的散列,将来自同一发送方的分组(或发送至同一目的地的分
组)统一转发到相同服务器的算法。当客户端有一系列业务需要处理而必须和一个服务器反复通信
时,该算法能够以流(会话)为单位,保证来自相同客户端的通信能够一直在同一服务器中进行处
理。

1.2.11. URL 散列

通过管理客户端请求 URL 信息的散列,将发送至相同 URL 的请求转发至同一服务器的算法。

1.3. LVS

1.3.1. LVS 原理

IPVS
LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 是 LVS 集群系统的核心软件,它的主要作用是:安装在 Director Server 上,同时在 Director Server 上虚拟出一个 IP 地址,用户必须通
过这个虚拟的 IP 地址访问服务器。这个虚拟 IP 一般称为 LVS 的 VIP,即 Virtual IP。访问的请求
首先经过 VIP 到达负载调度器,然后由负载调度器从 Real Server 列表中选取一个服务节点响应用
户的请求。 在用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的 Real Server 节
点,而 Real Server 节点如何返回数据给用户,是 IPVS 实现的重点技术。
ipvs : 工作于内核空间,主要用于使用户定义的策略生效
ipvsadm : 工作于用户空间,主要用于用户定义和管理集群服务的工具

 ipvs 工作于内核空间的 INPUT 链上,当收到用户请求某集群服务时,经过 PREROUTING 链,经
检查本机路由表,送往 INPUT 链;在进入 netfilter 的 INPUT 链时,ipvs 强行将请求报文通过
ipvsadm 定义的集群服务策略的路径改为 FORWORD 链,将报文转发至后端真实提供服务的主机。

1.3.1. LVS NAT 模式

 ①.客户端将请求发往前端的负载均衡器,请求报文源地址是 CIP(客户端 IP),后面统称为 CIP),目
标地址为 VIP(负载均衡器前端地址,后面统称为 VIP)。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目
标地址改为了后端服务器的 RIP 地址并将报文根据算法发送出去。
③.报文送到 Real Server 后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还
给 LVS。
④.然后 lvs 将此报文的源地址修改为本机并发送给客户端。
注意:在 NAT 模式中,Real Server 的网关必须指向 LVS,否则报文无法送达客户端
特点:
1、NAT 技术将请求的报文和响应的报文都需要通过 LB 进行地址改写,因此网站访问量比较大的
时候 LB 负载均衡调度器有比较大的瓶颈,一般要求最多之能 10-20 台节点
2、只需要在 LB 上配置一个公网 IP 地址就可以了。
3、每台内部的 realserver 服务器的网关地址必须是调度器 LB 的内网地址。
4、NAT 模式支持对 IP 地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。
优点:
集群中的物理服务器可以使用任何支持 TCP/IP 操作系统,只有负载均衡器需要一个合法的 IP 地
址。
缺点:

扩展性有限。当服务器节点(普通 PC 服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇
在负载均衡器那,速度就会变慢!

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

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

相关文章

UML/SysML建模工具更新(2023.10)(1)StarUML、Software Ideas Modeler

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 工具最新版本:Software Ideas Modeler 14.02 更新时间:2023年10月9日 工具简介 轻量级建模工具,支持UML、BPMN、SysML。 平台:Windo…

前端学习基础知识

环境搭建 windows环境 nodejs版本管理工具NVM nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 安装学习访…

vue-cli创建自定义preset预设项目

vue-cli创建自定义preset预设项目 背景自定义预设创建默认预设创建预设项目preset.jsonprompts.jstemplate预设模板generator.js 本地预设创建项目 背景 一个 Vue CLI preset 是一个包含创建新项目所需预定义选项和插件的 JSON 对象,让用户无需在命令提示中选择它们…

【LeetCode】每日一题 2023_11_9 逃离火灾(bfs 练习)

文章目录 刷题前唠嗑题目:最长平衡子字符串题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode? 启动!!! 嗯?什么?今天是 hard?陷入沉思。。。先看看题吧 题目:最长平…

【面经】如何查看服务器内存和磁盘空间占用

查看服务器内存占用 free -g查看服务器磁盘空间占用 df -h

基于React开发的chatgpt网页版(仿chatgpt)

在浏览github的时候发现了一个好玩的项目本项目,是github大神Yidadaa开发的chatgpt网页版,该开源项目是跨平台的,Web / PWA / Linux / Win / MacOS都可以访问。非常有意思,本人就部署了一套,喜欢的同学可以体验一番。 …

一篇文章揭秘JetBrains的 AI 图形发展历程

JetBrains IDE正式版下载 JetBrains 不断完善用作网站元素和发布图形的图稿创建方式,使命是将平面设计师从日常任务中解放出来,让他们能够专注于自己的核心能力 – 创造力,JetBrains 用于生成图稿的内部工具的历史大约开始于十年前。起初主要…

Web APIs——BOM和延迟函数setTimeout

1、window对象 1.1 BOM(浏览器对象模型) BOM(Browser Object Model)是浏览器对象模型 window对象是一个全局对象,也可以说是JavaScript中的顶级对象像document、alert()、console.log()这些都是window的属性&#xf…

用POST请求在Linux之间传输文件(Python在Linux间传输文件)

背景 实际需求: 已通过iperf和dd命令测试过两台不同区域之间的Linux服务器带宽,均为1000Mb网络。但发送post请求传输文件至对象存储时,总是卡在14Mb/s。除了排查区域之间的防火墙,也应该尝试检查Linux(KylinV10&…

家用AIO系统架构图(Openwrt 群晖 IPV6 DDNS)

折腾几个月了,摸索出的最合适的系统架构。其余的系统架构也都行得通,但是从逻辑角度,下列方案更加的自然通顺。 系统架构图 疑问解答 为什么用IPV6? 2222年了都不会真有人能从运营商哪里搞到ipv4或者还没有ipv6吧。 光猫为什么桥接? 抠门运…

Maven-构建生命周期与插件

一、概念和基础 Maven针对项目的构建和发布定义了一系列明确的步骤,根据作用不同这些步骤分属于不同的生命周期。Maven针对每个步骤都有对应的默认插件,Maven在构建过程中是通过调用这些插件完成整个过程的。开发者只需要通过简单的命令就可以驱动maven…

layui table合计 totalRow 保留4位小数\ 异步请求数据的表格 新增行之后 如何更新数据

layui table合计 totalRow 保留4位小数: 例: totalRowMethod:(column: any, dataSource: any[]) > { let total 0; dataSource.forEach((item) > { total total Number(item[column.key]); …

公益理发暖人心,爱心助老绿萝先行

为更好地关爱老年人的生活,为老年人带来更实在的便利,2023年11月8日,绿萝志愿服务队从老人们的实际需求出发,在拱辰一街二社区开展关爱空巢老人助老志愿活动。 绿萝理发师志愿者们又一次来到老人们熟悉的场地,为老人们…

Qt 二维码生成与识别

1.简介 QZXing是一个基于Qt框架的二维码解码库,它是对ZXing(Zebra Crossing)开源项目的一个Qt封装。ZXing是一个功能强大的开源二维码解码库,支持多种类型的码,包括QR码、DataMatrix码、Aztec码等。 QZXing提供了一个…

PTA_乙级_1011

#include<iostream> using namespace std;int main(){long long A,B,C,T;// 注意AB如果特别大是可能超过int类型最大范围所以用longlong最好// 在C中&#xff0c;int 类型的范围通常是在-2147483648到2147483647之间&#xff0c;这是32位有符号整数的范围。// 在C中&…

软件开发项目文档系列之十四如何撰写系统试运行报告

目录 1 系统试运行的平台及网络环境1.1 系统软件平台1.2 系统网络环境 2 系统概要说明2.1 系统主要模块2.2 系统权限 3 系统试运行的工作时间3.1 集中培训时间3.2 系统试运行环境搭建3.3 系统试运行阶段 4 系统试运行的用户对象和受众范围5 系统试运行对提高工作效率的作用分析…

互联网企业该如何进行风险管理

谈到风险管理&#xff0c;首先我们应该了解如何评估威胁。 威胁可以根据攻击的类型和目标来分类。STRIDE是微软开发出来对计算机安全威胁进行分类的威胁建模系统。 STRIDE代表&#xff1a; 假冒篡改抵赖信息披露拒绝服务提升权限 假冒 即试图通过使用错误的ID访问某个系…

牛客网:链表分割

一、题目 函数原型&#xff1a; ListNode* partition(ListNode* pHead, int x) 二、思路 根据题意&#xff0c;可以设置两个新的链表&#xff0c;将原链表中所有小于x的结点链接到链表1中&#xff0c;大于x的结点链接到链表2中&#xff0c;最后再将两个链表合并即可。 此题有两…

HT4344 2通道 立体声 DAC转换器的特性

HT4344 2通道 立体声 DAC转换器的特性&#xff1a; 1.支持多种音频数字输入格式, 支持24-bit字节 2.可自动检测采样频率&#xff0c;Z高192kHz 3.105dB动态范围 4.-90dB THDN 5.集成多比特位的Δ-Σ调制器 6.支持3.3V/5V单电源供电 7.具有强抗时钟抖动能力 8.内部集成输…

ssm+vue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的高校学生课堂考勤系统设计与实现&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转…