负载均衡原理与技术实现

article/2025/10/10 3:08:00

负载均衡(Load Balance,简称LB)是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。负载均衡基本概念有:实服务、实服务组、虚服务、调度算法、持续性等,其常用应用场景主要是服务器负载均衡,链路负载均衡。

一 服务器负载均衡

服务器负载均衡根据LB设备处理到的报文层次,分为四层服务器负载均衡和七层负载均衡,四层处理到IP包的IP头,不解析报文四层以上载荷(L4 SLB);七层处理到报文载荷部分,比如HTTP,RTSP,SIP报文头,有时也包括报文内容部分(L7 SLB)。

1.四层服务器负载均衡技术

客户端将请求发送给服务器群前端的负载均衡设备,负载均衡设备上的虚服务接收客户端请求,通过调度算法,选择真实服务器,再通过网络地址转换,用真实服务器地址重写请求报文的目标地址后,将请求发送给选定的真实服务器;真实服务器的响应报文通过负载均衡设备时,报文的源地址被还原为虚服务的VSIP,再返回给客户,完成整个负载调度过程。报文交互流程如下:

新一代负载均衡产品技术实现 图1

NAT方式的服务器负载均衡报文交互流程图报文交互流程说明:

(1)Host发送服务请求报文,源IP为Host IP、目的IP为VSIP

(2)LB Device接收到请求报文后,借助调度算法计算出应该将请求分发给哪台Server

(3)LB Device使用DNAT技术分发报文,源IP为Host IP、目的IP为Server IP

(4)Server接收并处理请求报文,返回响应报文,源IP为Server IP、目的IP为Host IP

(5)LB Device接收响应报文,转换源IP后转发,源IP为VSIP、目的IP为Host IP

2.七层服务器负载均衡技术

七层负载均衡和四层负载均衡相比,只是进行负载均衡的依据不同,而选择确定的实服务器后,所做的处理基本相同,下面以HTTP应用的负载均衡为例来说明。

由于在TCP握手阶段,无法获得HTTP真正的请求内容,因此也就无法将客户的TCP握手报文直接转发给服务器, 必须由负载均衡设备先和客户完成TCP握手,等收到足够的七层内容后,再选择服务器,由负载均衡设备和所选服务器建立TCP连接。

七层负载均衡组网和四层负载均衡组网有一个显著的区别:四层负载均衡每个虚服务对应一个实服务组,实服务组内的所有实服务器提供相同的服务;七层负载均衡每个虚服务对应多个实服务组,每组实服务器提供相同的服务。根据报文内容选择对应的实服务组,然后根据实服务组调度算法选择某一个实服务器。

新一代负载均衡产品技术实现 图2

七层负载均衡组网图

上图中描述了基于HTTP的URI目录信息进行的七层负载均衡部署,报文交互流程图如下:

新一代负载均衡产品技术实现 图3

七层负载均衡报文交互流程图报文交互流程说明:

(1)-(3):Client和LB建立TCP连接;

(4):Client发送HTTP请求,目的IP为虚IP;

(5):LB设备分析报文,根据调度算法选择实服务器,注意此时会缓存该报文;

(6):LB设备向实服务器发Syn报文,序列号为Client的Syn报文序列号

(7):Server发送Syn/Ack报文,目的IP为Client;

(8):LB接收Server的Syn/Ack报文后,回应ACK报文

(9):修改步骤(5)中缓存的报文目的IP和TCP序列号,然后发给Server;

(10):Server发送响应报文到LB;

(11):LB修改步骤(9)中的报文的源地址和TCP序列号后转发给Client。

二 链路负载均衡

在企业网、运营商链路出口需要部署LB设备以优化链路选择,提升访问体验,链路负载均衡按照流量发起方向分为Inbound负载均衡和Outbound负载均衡

1.Inbound入方向负载均衡

Inbound负载均衡技术是DNS智能解析的一种,外网用户通过域名访问内部服务器时,Local DNS的地址解析请求到达LB设备,LB根据对Local DNS的就近性探测结果响应一个最优的IP地址,外网用户根据这个最优的IP响应进行对内部服务器的访问。

新一代负载均衡产品技术实现 图4

Inbound链路负载均衡组网图

新一代负载均衡产品技术实现 图5

 入方向负载均衡

流程简述如下:

(1)外部用户进行资源访问前先进行DNS解析,向其本地DNS服务器发送DNS请求。

(2)本地DNS服务器将DNS请求的源IP地址替换为自己的IP地址,并转发给域名对应的权威服务器——LB device。

(3)LB device根据DNS请求的域名和配置的Inbound链路负载均衡规则进行域名解析。

(4)LB device按照域名解析的结果,将DNS应答发送给本地DNS服务器。

(5)本地DNS服务器将解析结果转发给用户。

(6)用户使用解析结果选择的链路,直接对LB device进行资源访问。

2.Outbound出方向负载均衡

内网用户访问Internet上其他服务器。 Outbound链路负载均衡中VSIP为内网用户发送报文的目的网段。用户将访问VSIP的报文发送到负载均衡设备后,负载均衡设备依次根据策略、持续性功能、就近性算法、调度算法选择最佳的链路,并将内网访问外网的业务流量分发到该链路。

新一代负载均衡产品技术实现 图6

Outbound链路负载均衡组网图

Outbound负载均衡报文交互流程如下:

新一代负载均衡产品技术实现 图7

 Outbound 链路负载均衡流程图

Outbound负载均衡报文交互流程说明:

(1)LB Device接收内网用户流量 -

(2)LB Device依次根据策略、持续性功能、就近性算法、调度算法进行链路选择 在Outbound链路负载均衡组网中,通常使用就近性算法或带宽调度算法实现流量分发

(3)LB device按照链路选择的结果将流量转发给选定的链路 -

(4)LB Device接收外网用户流量 -

(5)LB Device将流量转发给内网用户

三 负载均衡优化及应用

1.TCP连接复用

连接复用功能通过使用连接池技术,可以将前端大量的客户的HTTP请求复用到后端与服务器建立的少量的TCP长连接上,大大减小服务器的性能负载,减小与服务器之间新建TCP连接所带来的延时,并最大限度减少后端服务器的并发连接数,降低服务器的资源占用。

新一代负载均衡产品技术实现 图8

TCP连接复用示意图上图给出了TCP连接复用的简单过程描述。由Client端发送的Req1/ Req2/ Req3三个HTTP请求,经过LB设备后,复用了LB设备和Server端已经建立好的连接,将Client端的三个请求通过两个TCP连接发送给了服务器端。

2.SSL卸载

为了避免明文传输出现的安全问题,对于敏感信息,一般采用SSL协议,如HTTPS,对HTTP协议进行加密,以保证整个HTTP传输过程的安全性。SSL是需要耗费大量CPU资源的一种安全技术,如果由后端的服务器来承担,则会消耗很大的处理能力。应用交付设备为了提升用户的体验,分担服务器的处理压力,将SSL加解密集中在自身的处理上,相对于服务器来说LB能提供更高的SSL处理性能,还能够简化对证书的管理,减少日常管理的工作量,LB的该功能又称为SSL卸载。

下图中Client端发送给Server的所有的HTTPS流量都被LB设备终结,LB设备将SSL终结后,与Server之间可采用HTTP或者弱加密的HTTPS进行通讯。LB设备承担了SSL的卸载工作,从而极大的减小了服务器端对SSL处理的压力,将服务器的处理能力释放出来,更加专注于处理服务器本身承担的业务逻辑。

新一代负载均衡产品技术实现 图9

SSL卸载示意图

SSL卸载的处理流程如下:

新一代负载均衡产品技术实现 图10

SSL卸载过程

(1)客户端向服务器端发送SSL握手请求。

(2)LB设备作为中间的卸载设备,代替服务器端和客户端交互,完成SSL握手过程。

(3)客户端发送SSL加密后的请求数据。

(4)LB设备解密数据。

(5)LB设备将解密后的明文发送给Server。

(6)服务器返回给LB设备回应报文。

(7)LB设备将返回的应答报文加密。

(8)LB设备将加密后的应答报文传给客户端。

3.DRX云环境应用交付

业务负载监控平台通过H3C负载均衡设备的参数设定和监控可以动态感知业务负载变化,并通知云管理平台动态调整业务资源。由此实现用户业务资源的实时动态调整、业务资源优化调配。

当业务负载监控平台发现业务资源需要调整时:业务负载超限—增加资源;业务资源过剩——回收资源,云管理平台通过自动创建、启动或者删除停止虚拟机的方式为业务进行资源动态调整。

四 结束语

负载均衡技术不管应用于用户访问服务器资源,还是应用于多链路出口,均大大提高了对资源的高效利用,显著降低了用户的网络布署成本,提升了用户的网络使用体验。随着云计算的发展,负载均衡的技术实现还将与云计算相结合,在虚拟化和NFV软件定义网关等方面持续发展。


http://chatgpt.dhexx.cn/article/gReGAmNl.shtml

相关文章

OpenFeign远程调用负载均衡原理详解

SpringCloudAlibaba中使用OpenFeign时,默认的负载均衡策略是轮询调用。我们不做任何配置的时候,使用OpenFeign调用的时候,框架中是如何把负载均衡LoadBalanced和FeignClient结合到一起的?我们一起来分析一下。 1 DefaultFeignLoa…

负载均衡原理

开头先理解一下所谓的“均衡” 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可能体现在硬件配置、网络带宽的差异,也可能因为某台服务器身兼多职,我们所说的“均衡”,也就…

简谈docker swarm中负载均衡原理

同一集群内部的负载均衡模式 基于在swarm中创建节点即可分配内部域名的情况下: dnsrr 单纯通过内部DNS内部组件进行负载均,由于DNS缓存机制等问题,有局限性。VIP: 简单来讲是 (内部)DNSVIP(iptableipvs转发,ipvs有几…

LVS 负载均衡原理

一 简介 负载均衡集群是 Load Balance 集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端提供服务的一种方式。常用开源负载均衡软件有Nginx、LVS、Haproxy(ngnix和haproxy是七层负载均衡,LVS是四层负载均衡)&a…

Ribbon-负载均衡原理及部分源码

黑马程序员-Ribbon负载均衡源码 前提:服务提供者有多个服务集群,不然要是只有一个服务,还负载均衡个锤子! Ribbon负载均衡基本原理: 1、Ribbon会拦截Eureka Client客户端发出的http请求,获得服务名&#x…

01-Ribbon负载均衡原理

Ribbon负载均衡流程 总体流程 当我们直接用服务名端口在浏览器访问时,浏览器不认识这种地址所以当Ribbon得到一个请求是服务名端口的形式的时候就会取eureka-server中拉取服务eureka-server会返回一个服务列表给RibbonRibbon在服务列表中的挑选服务 详细流程 Ribb…

一文带你深入理解负载均衡原理

一、背景 "远古时期",单机计算机处理性能很低,一般我们会通过扩容机器配置资源,以便更好承载我们的应用,例如:当时的个人电脑,如果你想玩大型游戏,我们最直接的做法就是替换更好的CP…

Nginx详解(正向代理,反向代理,负载均衡原理)

Nginx详解(正向代理,反向代理,负载均衡原理) 文章目录 Nginx详解(正向代理,反向代理,负载均衡原理)1、Nginx概述:2. 反向代理3. 负载均衡 1、Nginx概述: ngi…

Zookeeper——分布式ID和负载均衡原理

摘要 本文主要是介绍zookeeper的除了大部分人都知道的特性意外的一些其他的特性,对于整体的了解一个分布式注册中心的实现具有完整的了解,同时利用zookeeper的其他的特性在工作中,有利于的更好的解决工作的问题。zookeeper相关的特性或许在解…

OpenFeign 整合 Nacos负载均衡原理

一.OpenFeign介绍 OpenFeign是实现微服务间调用的工具,功能包括编解码、构造http请求等。同时OpenFeign又集成了ribbon功能实现客户端负载均衡能力,Bibbon默认的客户端负载均衡能力是与Eurake集成,Nacos通过重写ribbon的ServerList功能实现ri…

负载均衡技术原理

参看文章: 快速理解高性能HTTP服务端的负载均衡技术原理 简介几种负载均衡原理 浅谈几种常用负载均衡架构 一篇读懂分布式架构下的负载均衡技术:分类、原理、算法、常见方案等 一、 引言 负载均衡(Load Balance)是指将负载(工作任…

Docker Swarm 内部服务发现和负载均衡原理

1. 集群环境准备 搭建三台服务器,并安装docker环境,并保证能正常连接互联网,后面会使用其他镜像做负载均衡测试。 192.168.104.79192.168.104.80192.168.104.81 首先修改hostname,便于后面区分当前操作所在机器:使用…

Spring Cloud - Ribbon 负载均衡原理、负载策略、懒加载

目录 ​编辑 一、Ribbon 负载均衡原理 1.1、前言 1.2、负载均衡的工作流程 二、负载均衡策略 2.1、策略原理 2.2、负载均衡自定义方式 三、Ribbon 加载方式 一、Ribbon 负载均衡原理 1.1、前言 ps:案例是上一章所讲的 “根据订单id查询订单的同时&#xff0…

Ribbon-负载均衡原理

负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1,怎么变成了http://localhost:8081的呢? 源码跟踪 为什么我们只输入了service名称就可以访问了…

Nginx负载均衡原理与实战

Nginx 负载均衡原理与实践 本篇摘自《亿级流量网站架构核心技术》第二章 Nginx 负载均衡与反向代理 部分内容。 当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如的…

Nginx负载均衡原理

Nginx简介 Nginx是通过反向代理实现的负载均衡。 什么是正向代理与反向代理? 正向代理就是,客户端通过一台代理服务器访问服务端。 反向代理就是,服务端通过代理服务器为客户端提供服务。 看起来似乎没有什么区别,举个例子。 …

负载均衡原理及算法

目录 背景概述原理分类按照软硬件分类硬件负载均衡软件负载均衡 按照地理结构分类本地负载均衡全局负载均衡 按照实现技术DNS负载均衡IP负载均衡链路层负载均衡混合型负载均衡 按照OSI层次二层负载均衡(数据链路层)三层负载均衡(网络层&#…

Ribbon负载均衡原理

Ribbon restTemplate相结合实现负载均衡,具体原理图详见以下截图: LoadBalancerClient 类执行具体的负载均衡,其继承于 LoadBalancerBase。LoadBalancerInterceptor 中注入了 LoadBalancerClient 对象,LoadBalancerClient执行具…

什么是负载均衡,负载均衡的原理解析是怎么样的

负载均衡对于很多大型企业来说,不管网游,商城,金融等业务,他的重要性无需多说,今天带来负载均衡的原理解析。 开头先理解一下所谓的“均衡”。 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为…

负载均衡工作原理详解

负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。 均衡负…