
# 弹性负载均衡是如何工作的
#### 工作原理
图1ELB工作原理图   
![](https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000001866004429.png "点击放大")
弹性负载均衡的工作原理如下：
1. 客户端发起请求：客户端向您的应用程序发起请求。
2. 监听器接收请求：负载均衡器中的监听器接收与您配置的协议和端口匹配的请求。
3. 负载均衡转发请求：
   1. 监听器根据您的配置将请求转发至相应的后端服务器组。
   
   2. 如果您配置了转发策略，监听器会评估传入的请求是否匹配转发策略。如果匹配上某条转发策略，请求将按照相应的转发动作进行转发。
    
4. 后端服务器处理请求：后端服务器组中健康检查正常的后端服务器将根据分配策略和您在监听器中配置的转发策略的转发接收流量，处理流量并返回客户端。
请求的流量分发与负载均衡器所绑定的监听器配置的**[转发策略](https://support.huaweicloud.com/usermanual-elb/zh-cn_topic_0114694934.html)** 和后端服务器组配置的**[分配策略]**类型相关。
#### 流量分配技术介绍
本视频介绍弹性负载均衡服务实现流量分发的网络地址转换技术。
<video controls="controls" preload="none" id="object1136242125113" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/ELB/1722395803689478940.mp4" title="ELB流量分发技术介绍" poster="https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000002409679093.jpg" style="width:100%;height:auto;max-width:600px"></video>
 #### 分配策略类型
独享型负载均衡支持加权轮询算法、加权最少连接、源IP算法、连接ID算法。
共享型负载均衡支持加权轮询算法、加权最少连接、源IP算法。
- [加权轮询算法]
  [图2]展示弹性负载均衡器使用加权轮询算法的流量分发流程。假设可用区内有2台权重相同的后端服务器，负载均衡器节点会将50%的客户端流量分发到其可用区中的每一台后端服务器。
  图2加权轮询算法流量分发   
  ![](https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000001971660504.png "点击放大")
  表1加权轮询算法说明 
  |    概述    |                                                                                                                                                                                                                               加权轮询算法根据组内后端服务器设置的权重，依次将请求分发给不同的服务器。权重大的后端服务器被分配的概率高，相同权重的服务器处理相同数目的连接数。                                                                                                                                                                                                                               |
  |---|---|
  | **推荐场景** | 加权轮询算法常用于短连接服务，例如HTTP等服务。 - 灵活负载：当对后端服务器的负载分配有更精细的要求时，可以通过设置不同的权重来实现对服务器的灵活调度，使得性能较好的服务器能够处理更多的请求。  - 动态负载：当后端服务器的性能和负载情况经常发生变化时，可以通过动态调整权重来适应不同的场景，实现负载均衡。   |
  | **缺点**   | - 加权轮询算法需要配置每个后端服务器的权重，对于有大量后端服务器或频繁变动的场景，运维工作量较大。  - 权重设置不准确可能会导致负载不均衡的情况，需要根据后端服务器的实际性能进行调整。                                                                                                                 |
     
- [加权最少连接]
  [图3]展示弹性负载均衡器使用加权最少连接算法的流量分发流程。假设可用区内有2台权重相同的后端服务器，ECS 01已有100个连接，ECS 02已有50个连接，则新的连接会优先分配到ECS 02上。
  图3加权最少连接算法流量分发   
  ![](https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000002008260265.png "点击放大")
  表2加权最少连接说明 
  |    概述    |                                                                                                                                                                                                                                                                                                            最少连接是通过当前活跃的连接数来评估服务器负载情况的一种动态负载均衡算法。加权最少连接就是在最少连接数的基础上，根据服务器的不同处理能力，给每个服务器分配不同的权重，使其能够接受相应权值数的服务请求。                                                                                                                                                                                                                                                                                                            |
  |---|---|
  | **推荐场景** | 加权最少连接常用于长连接服务，例如数据库连接等服务。 - 灵活负载：当后端服务器的性能差异较大时，同时考虑后端服务器的连接数和权重来进行负载，可以更精确地将请求分配到后端服务器上，避免出现过载或空闲的情况。  - 动态负载：当后端服务器的连接数和负载情况经常发生变化时，可以通过实时监控连接数变化进行动态的负载调整。  - 更高稳定负载：对于需要高稳定性的业务场景，加权最小连接算法可以降低后端服务器的峰值负载，提高业务的稳定性和可靠性。                                                     |
  | **缺点**   | - 加权最小连接算法的实现更复杂：需要实时监控负载均衡器与后端服务器之间的连接数变化。  - 对后端服务器的连接数存在依赖：算法依赖于准确获取负载均衡服务和后端服务器的连接数，如果获取不准确或监控不及时，可能导致负载分配不均衡。同时由于算法只能统计到负载均衡器与后端服务器之间的连接，后端服务器整体连接数无法获取，因此对于后端服务器挂载到多个弹性负载均衡的场景，也可能导致负载分配不均衡。  - 新增后端服务器时可能导致过载：如果已有的连接数过大，大量的新建连接会被分配到新加入的后端服务器上，可能会导致新加入的后端服务器瞬间过载影响系统稳定性。   |
     
- [源IP算法]
  [图4]展示弹性负载均衡器使用源IP算法的流量分发流程。假设可用区内有2台权重相同的后端服务器，ECS 01已经处理了一个IP-A的请求，则IP-A新发起的请求会自动分配到ECS 01上。
  图4源IP算法流量分发   
  ![](https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000002008300829.png "点击放大")
  表3源IP算法说明 
  |    概述    |                                                                                                                                                                                                                                                                                            根据请求的源IP地址进行一致性哈希计算，源IP地址相同的请求会被分配到同一台后端服务器。                                                                                                                                                                                                                                                                                             |
  |---|---|
  | **推荐场景** | 源IP算法常用于需要保持用户状态或会话的应用。 - 基于源IP的会话保持：源IP算法可以确保源IP相同的请求具有相同的哈希值并被分配到同一台后端服务器上，从而实现会话保持。  - 保持数据一致：一致性哈希算法将相同哈希值的请求调度到相同后端服务器上，保证多次请求数据的一致性。  - 均衡性要求较高：一致性哈希算法能够提供相对均衡的负载分配效果，减少后端服务器的负载差异。   |
  | **缺点**   | - 后端服务器数量变动可能导致不均衡：一致性哈希算法在后端服务器数量变动时会尽力保障请求的一致性，部分请求会重新分配。当后端服务器数量较少时，重新分配过程中有可能导致负载不均衡的情况发生。  - 扩展复杂性增加：由于一致性哈希算法将请求根据哈希因子进行哈希计算，当后端服务器数量变化时，会导致一部分请求需要重新分配，这会引入一定的复杂性。                                                                                                                                         |
     
- [连接ID算法]
  [图5]展示弹性负载均衡器使用连接ID算法的流量分发流程。假设可用区内有2台权重相同的后端服务器，ECS 01已经处理了一个客户端A的请求，则客户端A上新发起的请求会自动分配到ECS 01。
  图5连接ID算法流量分发   
  ![](https://support.huaweicloud.com/productdesc-elb/zh-cn_image_0000001971820268.png "点击放大")
  表4连接ID算法说明 
  |    概述    |                                                                                                                                                                                                                                                              根据QUIC 协议请求的QUIC ID进行哈希计算，相同QUIC连接上的请求会被分配到同一台后端服务器。QUIC ID是QUIC连接的唯一标识符，连接ID算法可以实现基于连接级别的负载均衡。 仅QUIC协议的后端服务器组支持连接ID算法。                                                                                                                                                                                                                                                               |
  |---|---|
  | **推荐场景** | 连接ID算法常用于实现连接级别负载均衡的应用。 - 基于QUIC连接的会话保持：连接ID算法可以确保源相同QUIC连接上的请求具有相同的哈希值并被分配到同一台后端服务器上，从而实现会话保持。  - 保持数据一致：一致性哈希算法将相同哈希值的请求调度到相同后端服务器上，保证多次请求数据的一致性。  - 均衡性要求较高：一致性哈希算法能够提供相对均衡的负载分配效果，减少后端服务器的负载差异。   |
  | **缺点**   | - 后端服务器数量变动可能导致不均衡：一致性哈希算法在后端服务器数量变动时会尽力保障请求的一致性，部分请求会重新分配。当后端服务器数量较少时，重新分配过程中有可能导致负载不均衡的情况发生。  - 扩展复杂性增加：由于一致性哈希算法将请求根据哈希因子进行哈希计算，当后端服务器数量变化时，会导致一部分请求需要重新分配，这会引入一定的复杂性。                                                                                                                                                                                                                       |
     
#### 影响负载均衡的因素
一般情况下，影响负载均衡分配的因素包括分配策略、会话保持、长连接、权重等。换言之，最终是否均匀分配不仅与分配策略相关，还与使用的长短连接、后端的性能负载等相关。
假设可用区内有2台权重相同且不为0的后端服务器，流量分配策略选择"加权最少连接"，未开启会话保持，ECS 01已有100个连接，ECS 02已有50个连接。
如果有客户端A使用长连接访问了ECS 01，长连接未断开期间，客户端A的业务流量将持续转发到ECS 01，其他客户端的业务流量则根据分配策略优先分配到ECS 02。
![](https://support.huaweicloud.com/productdesc-elb/public_sys-resources/note_3.0-zh-cn.png)
后端服务器健康检查异常或权重设置为0时，ELB不会转发业务流量到该后端服务器。
配置流量分配策略请参考[流量分配策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0003.html)。
检查请求不均衡请参考[如何检查请求不均衡？](https://support.huaweicloud.com/elb_faq/elb_faq_0050.html)。
