首页 > 其他分享 >Envoy Proxy负载均衡介绍

Envoy Proxy负载均衡介绍

时间:2023-07-14 17:55:26浏览次数:32  
标签:负载 Envoy 代理 Proxy https 均衡器 节点

负载均衡是 devops 工程师的常用术语。当大量流量进入您的系统时,您需要找到一种方法来扩展系统,以便它能够正确处理它。一种解决方案是提高正在运行的单个节点的性能。另一种解决方案是添加更多节点并在这些节点之间分配工作。拥有多个节点还有另一个附加优势是高可用性。负载均衡器用于在工作节点之间分配流量。 Envoy 代理是一种代理服务,用于被称为服务网格的最新趋势概念。我们将在这篇博文中看到 Envo

 云O生  ·  2022-08-15 04:52:27 发布

负载均衡是 devops 工程师的常用术语。当大量流量进入您的系统时,您需要找到一种方法来扩展系统,以便它能够正确处理它。一种解决方案是提高正在运行的单个节点的性能。另一种解决方案是添加更多节点并在这些节点之间分配工作。拥有多个节点还有另一个附加优势是高可用性。负载均衡器用于在工作节点之间分配流量。

Envoy 代理是一种代理服务,用于被称为服务网格的最新趋势概念。我们将在这篇博文中看到 Envoy 代理的负载平衡方面。

负载均衡器

[loadbalancer.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--JY7nyQig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode .com/res/hashnode/image/upload/v156120701337/6m8S99wcO.jpeg)

负载均衡器是监听进入计算集群的请求的端点。当请求进入负载均衡器时,它会检查可用的工作节点并在工作节点之间分配请求。负载均衡器做以下事情。

  • 服务发现:检查可用的工作节点

  • 健康检查:定期检查工作节点的健康状况。

  • 负载均衡:在工作节点之间分配请求。

代理

代理是存在于两个端点之间的中间组件。代理服务接受客户端请求并将其转发到目标服务器。有两种类型的代理。正向代理和反向代理。除了直接向端点发送请求,我们还可以通过代理发送它。这种类型的代理称为转发代理。转发代理通常用于绕过防火墙限制并访问被阻止的网站。

反向代理是一种代理服务,它接受传入的客户端请求并将其转发到可以满足它的服务器。结果将被路由回客户端。除此之外,代理还提供对客户端请求的更多控制。它还可以缓存请求并加快网络性能。反向代理用于

  • 当网站不允许直接连接作为安全措施时启用间接访问。

  • 向 Internet 用户流式传输内部内容。

  • 允许服务器之间的负载平衡。

  • 禁用对站点的访问。

负载均衡拓扑

代理位于客户端和后端端点之间。负载均衡根据代理服务放置的位置可以分为以下几种拓扑。

中间代理

[中间proxy.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--FjUJpUgL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn. hashnode.com/res/hashnode/image/upload/v1561205086390/LSqMUbxzw.jpeg)

所有客户端请求都进入中间代理。中间代理路由请求进入工作节点。这种类型的负载均衡器简单明了。

嵌入式客户端库

[embeddedlibrary.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--PICvYFfo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode .com/res/hashnode/image/upload/v1561205823453/R5t8rUG_s.jpeg)

Middle Proxy 最大的问题是,单点故障。如果中间代理服务器宕机,则客户端服务无法访问后端服务。

在这种类型的代理中,不是中央负载均衡器,而是由客户端自己完成的负载均衡。这种系统可以通过使用 gRPC 库来实现。

日益复杂的复杂性成为此类负载平衡器的一个问题。此外,开发人员需要为每个服务安装负载平衡组件。

边车代理

[嵌入式库 (1).jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--u0h8sOTI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// cdn.hashnode.com/res/hashnode/image/upload/v156121903166/SeuzlneW7.jpeg)

Embedded Client Library 最大的问题是为每个服务构建通信组件的复杂性。随着最近使用容器技术的趋势,客户端库分离到容器中。因此,在开发去中心化负载均衡器时没有锁定编程语言。这被称为边车。这种类型的代理服务实现称为 Service Mesh。 Side Car 负责将客户端请求路由到适当的后端服务。

Envoy 是 Lyft 用 C++ 语言编写的高性能反向代理。 Envoy 用于互连 Service Mesh 中的服务。以下是 Envoy 代理使用的常用术语。

  • 主机:能够进行网络通信的实体。

  • 下游:向特使代理发送请求的主机。

  • 上游:从特使代理接收请求的主机。

  • 侦听器:命名的网络位置,可以通过下游连接到特使代理。

  • 集群:集群是 Envoy 可以连接的一组逻辑上相同的上游主机。 Envoy 可以使用服务发现来发现集群。

前特使代理

来自 Side Car 代理的 Aport,Envoy 也可以配置为 Front envoy 代理。前端代理配置为来自公共 Internet 的请求的主要负载均衡器。这个代理也知道和边缘代理。 Service Mesh 的整体架构如下所示。

[proxymesh.jpg](https://res.cloudinary.com/practicaldev/image/fetch/s--Lq34Qk0d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode .com/res/hashnode/image/upload/v1561216275915/eEMY3ilcZ.jpeg)

在这里,前端代理用作传入 Internet 流量的负载平衡器。这里也执行 TLS 终止。然后通过侧车代理请求路由到相关服务。服务网格可以通过服务发现来检测可用服务。它还提供电路制动功能来处理故障转移。总的来说,Envoy 提供了一大堆功能来实现服务网格。

Envoy 代理中的负载均衡器类型

当代理需要获取与上游集群中主机的连接时,集群管理器使用以下策略来路由流量。

  • 循环赛

将负载路由到每个工作节点(上游主机)循环顺序。所有工作节点都认为是相同的,并且所有节点都获得相同的负载量。

  • 随机

随机选择工作节点并路由流量。众所周知,这比 Round Robbin 策略执行得更好。

  • 加权最小请求

此策略基于负载平衡时保持的连接数。假设有两个具有相同规格的工作节点。由于某种原因,第一个工作节点需要更长的时间来响应。因此,它还必须保持与第一个工作节点的连接比第二个节点更长。在这种情况下,负载均衡器可以将更多权重放在第二个工作节点上,而不是将流量发送到第一个节点。

  • 原始目的地

当给定的连接需要连接到某个特定的上游主机时,使用这种类型的负载平衡器。通过读取客户端的元数据选择的主机。

除了负载均衡,Envoy 还提供了以下特性来实现 Service Mesh。

  • 动态服务发现

  • TLS 终止

  • HTTP/2 和 gRPC 代理

  • 断路器

  • 健康检查

  • 分阶段部署,基于百分比的流量拆分

  • 故障注入

  • 丰富的指标

我们将在下一篇文章中介绍这些功能中的每一个。这篇文章主要是给大家介绍一下 Envoy Proxy 以及它是如何做负载均衡的。在另一篇文章中见。干杯:)

参考

  • https://devform.netlify.com/introduction-to-envoy-proxy-load-balancing/

  • https://www.envoyproxy.io/docs/envoy/v1.5.0/intro/arch_overview/load_balancing

  • https://www.jscape.com/blog/load-balancing-algorithms

  • https://blog.envoyproxy.io/introduction-to-modern-network-load-balancing-and-proxying-a57f6ff80236

标签:负载,Envoy,代理,Proxy,https,均衡器,节点
From: https://www.cnblogs.com/gaoyanbing/p/17554644.html

相关文章

  • LightDB分布式高可用+负载均衡部署
    软件版本LightDB13.8-22.3安装分布式多机单实例模式根据LightDB安装文档6.3节,安装分布式多机单实例模式。安装后,确认环境变量$LTDATA,$LTHOME正确配置,工作节点正确添加。本文假设CN(协调节点,primary)安装在机器186,两个DN(数据节点)安装在机器192,193,端口均为15858。本文之......
  • 六月学习之Haproxy高级功能(自定义HTTP报文)
    6、Haproxy高级功能6.8、自定义HTTP报文6.8.1、reqaddreqadd<string>[{if|unless}<crond>]在请求报文中添加指定首部实现原理:client-->haproxy-->reqadd(添加header)-->web1、在frontend中使用reqadd,将发往后端集群的请求中添加一个headercat/etc/haproxy/haproxy.cfgf......
  • haproxy代理排干、置维以及就绪操作
    前言:我们在使用haproxy作为代理流量的时候,如果后端服务需要进行维护下线,那么就可以使用haproxy自带的status模块来完成。以下为具体示例。一、haproxy开启status模块1、在haproxy.cfg的defaults区域开启以下参数1listenstats2bind0.0.0.0:8848#表示haprox......
  • Visual Studio Code 远程调试 Twemproxy
    要使用VisualStudioCode远程调试Twemproxy,请按照以下步骤操作:安装所需扩展和软件在VSCode中安装 Remote-SSH 扩展。确保远程主机上已安装 gcc、make 和 gdb 等编译和调试工具。配置SSH连接打开VSCode,并点击左侧边栏"RemoteExplorer"图标。选择......
  • mitmproxy初探(windows版以及linux版)
    mitmproxy简介mitmproxy是一组工具,包括:mitmproxy(交互式的,具有控制台界面,但不支持windows)mitmweb(基于web的图形化界面)mitmdump(命令行版本)win10安装mitmproxy查阅了官方文档以及各位大佬博客,基本上都是在python环境下安装的,但是python版本好像要高于3.6,我就试了一下直接用pip......
  • 负载均衡算法的选择
    负载均衡算法的选择应该根据具体的应用场景和需求来确定。以下是一些常见的负载均衡算法及其适用场景:轮询(RoundRobin):适用于请求处理时间相对均匀的场景,能够实现简单的请求分配。加权轮询(WeightedRoundRobin):适用于不同后端服务器性能不同的场景,可以根据服务器的性能设置不同......
  • centos7的bond负载均衡(2)
    bond绑定环境:centos7.9,两个网卡添加网卡:添加配置文件件[root@localhostnetwork-scripts]#catifcfg-ens33TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=......
  • Statcom:基于MATLAB/Simulink的静止无功补偿器仿真模型,负载端加入断路器模拟断路故障。
    Statcom:基于MATLAB/Simulink的静止无功补偿器仿真模型,负载端加入断路器模拟断路故障。仿真条件:MATLAB/SimulinkR2015bID:4750647354331368......
  • 六月学习之Haproxy高级功能(IP地址透传)
    6、Haproxy高级功能6.5、IP地址透传web服务器中记录客户端的真实IP地址,主要用于访问统计、安全防护、行为分析、区域排行等场景6.5.1、七层负载地址透传Haproxy工作于反向代理模式,其发往服务器的请求中的客户端IP均为Haproxy主机的地址而非真正客户端的地址,这会使得服务器的日志信......
  • 双有源桥(DAB)psim/simulink闭环控制仿真,SPS/DPS/TPS控制均可,图中显示了sps控制的负载
    双有源桥(DAB)psim/simulink闭环控制仿真,SPS/DPS/TPS控制均可,图中显示了sps控制的负载阶跃响应全新ID:5166646464696473......