.. _arch_overview_load_balancing: 概述 ======== 什么是负载均衡? ----------------------- 负载均衡是一种在单个上游群集内分配流量到多个主机的方式,以便有效利用可用资源。有多种方法可以实现,因此 Envoy 提供了几种不同的负载均衡策略。从高层次上讲,我们可以将这些策略分为两类:全局负载均衡和分布式负载均衡。 .. _arch_overview_load_balancing_distributed_lb: 分布式负载均衡 -------------------------- 分布式负载平衡是指让 Envoy 自己根据了解上游主机的位置来决定如何将负载分配到端点。 例子 ^^^^^^^^ * :ref:`主动健康检查 `:通过对上游主机进行健康检查,Envoy 可以调整优先级和位置的权重以解决不可用主机的问题。 * :ref:`区域感知路由 `:这可用于使 Envoy 更倾向近一些的端点,而不必在控制平面中显式配置优先级。 * :ref:`负载均衡算法 `:Envoy 可以使用几种不同的算法来使用提供的权重来确定选择哪个主机。 .. _arch_overview_load_balancing_global_lb: 全局负载均衡 --------------------- 全局负载均衡是指使用一个单一的全局权限来决定如何在主机之间分配负载。对于 Envoy,这将由控制平面完成,通过指定各种参数来调整应用于各个端点的负载,例如优先级,位置权重,端点权重和端点健康状况。 一个简单的例子就是让控制平面根据网络拓扑将主机分配不同的 :ref:`优先级 ` 以确保需要较少网络跳数的主机是首选。这类似于区域感知路由,但是由控制平面而不是 Envoy 处理。在控制平面中执行此操作的好处是,它可以绕过某些区域感知路由的 :ref:`限制 `。更为复杂的设置可能会将资源使用情况报告给控制平面,从而允许其调整端点或 :ref:`位置 ` 的权重以解决当前资源使用情况,尝试将新请求路由到空闲主机而不是繁忙主机。 同时使用分布式和全局方式 --------------------------- 大多数复杂的部署都使用这两种特性。例如,全局负载均衡可用于定义高级路由优先级和权重,而分布式负载均衡可用于对系统中的更改做出反应(例如,使用主动健康检查)。通过将它们结合起来,您可以获得两种情况的最佳效果:一个可以在宏级别上控制流量的全局感知权威,同时仍然可以使各个代理对微观级别的更改做出反应。