负载均衡器和反向代理

负载均衡器和反向代理都是基于 Web 的现代应用程序和架构中的常用技术,可以独立部署,也可以组合部署。 本节提供了有关这些技术的概述,以及有关 ArcGIS 系统中的相关用例和这些技术提供的相关功能的评论。

  • 负载均衡器通常是一个硬件或软件组件,用于将客户端请求或工作负载分布到多个计算资源,例如物理服务器、虚拟服务器或集群。 负载均衡有助于平衡系统利用率、降低风险、简化服务交付和增长,并提高后端服务器的安全性。
  • 反向代理是一种软件或硬件组件,用于接受 HTTPS 请求(例如来自外部客户端的请求),并将这些请求路由到正确的内部资源、URL 或服务。 反向代理通常用于将到达一个 URL 的外部请求路由到其他内部 URL 或系统,否则该外部客户端无法访问该内部 URL 或系统。 反向代理还经常用于将流量从已知的前端网络端口(例如向端口 443 发送的 HTTPS 请求)传递到后端系统上的其他专用端口。 反向代理可确保在发出请求的客户端和响应请求的后端服务器之间存在一层安全、屏蔽和潜在的请求筛选逻辑。

实施模式

许多 ArcGIS 系统在实施负载均衡时会结合反向代理使用情况。 常见的实施模式包括:

  • 对发送到 ArcGIS Enterprise 面向用户的组件(例如 ArcGIS Enterprise 门户和联合 ArcGIS Server 站点,包括 ArcGIS Image Server、Workflow Manager Server 或其他站点)的客户端请求进行负载均衡
  • 跨多个 Web 服务器对静态应用程序内容(如 Web 应用程序 HTML、JavaScript 和 CSS 资源)的用户请求进行负载均衡
  • 通过 HTTPS 接收并发送到端口 443 的请求进行负载均衡,以发送到在端口 6443 上侦听 HTTPS 请求的后端服务,例如 ArcGIS Server。

Esri 提供了一个可安装的 ArcGIS 软件组件 ArcGIS Web Adaptor,用于在 ArcGIS Enterprise 部署中提供负载均衡和反向代理功能。 Web Adaptor 并不是使用负载均衡器和反向代理构建 ArcGIS Enterprise 系统的唯一选项,但它是一种常见模式,并提供 Esri 技术支持部门支持的解决方案。 也可以使用外部硬件或软件负载均衡器,具体取决于偏好和技术要求。 工作负载类型和需求频率将有助于了解哪种类型的负载均衡器可能适合您的需求。 有关特定 ArcGIS 版本和操作系统的指导,请参阅使用第三方负载均衡器进行多机部署

为了实现高可用性配置,可以在高可用性站点中配置 Web Adaptor 的一台计算机,并包含用于检测站点中其他计算机的逻辑,监测其状态,并在这些计算机运行状况良好时将请求转发给它们。 此逻辑是将 ArcGIS Web Adaptor 包含在系统设计中的重要实施优势,因为与手动配置的运行状况检查或负载均衡器设置相比,它可以更轻松地处理对 ArcGIS Enterprise 部署的更改。

外部实施

虽然 Web Adaptor 可以在许多场景中提供负载均衡和反向代理功能,但使用 ArcGIS 构建的许多企业系统还实施了额外的外部软件或硬件组件,以实现这两项技术的功能目标。 示例包括:

  • Web 服务器软件(如 Apache Tomcat、Apache httpd 或 Nginx)可用于将请求从客户端反向代理到 ArcGIS 端点。
  • 可以使用云原生负载均衡器,例如 Azure Application Gateway、Amazon Elastic Load Balancer 或 Application Load Balancer 或 Google Cloud Load Balancer。
  • 其他专用的负载均衡和代理系统,例如 F5 BIG-IP、Citrix NetScaler 或 Barracuda,它们通常是为许多不同的应用程序提供负载均衡和反向代理服务的硬件设备,同时还提供对身份验证、入侵检测、Web 应用程序类防火墙功能和其他用例的支持。

随着组织从传统的本地架构(其中隔离区或 DMZ 最常用于为基于 Internet 的客户端提供对服务和终端节点的访问)转变为云架构(其中云原生服务在大多数情况下提供此功能),与反向代理和负载均衡有关的注意事项和架构实践也有所变化。

优点

这些技术提供了包括实现可扩展性、高可用性和安全性在内的优势。

可扩展性

可以扩展 ArcGIS 系统以支持小型和大型部署。 为了适应不断增长的部署规模,ArcGIS 可以利用许多负载均衡方法和技术。 用于分派客户端请求的负载均衡算法可以从简单的轮询方法到更复杂的算法,这些算法会考虑当前连接计数、主机利用率或实际响应时间等因素。

负载均衡器通过将负载分配给多台计算机和适当的资源来提高性能。 在高可用性示例中,ArcGIS Web Adaptor 负载均衡器在两个 ArcGIS Enterprise 托管服务器之间分配 GIS 服务器请求。 如果您的系统有许多用户执行需要大量处理的类似工作流,例如包含长时间运行且处理器密集型事务的编辑工作流,则负载均衡器可以确保这些请求在可用硬件之间保持平衡,而对于包含高度可变的处理要求的工作流,建议采用工作负载分离而不是负载均衡。

load-balancing-1.png

高可用性

负载均衡还可以通过在共享相同角色的站点或计算机集群之间分配请求来启用 ArcGIS 的高可用性配置。 例如,在多机 ArcGIS Enterprise 部署中配置高可用性时,负载均衡器 (ArcGIS Web Adaptor) 会交替向主要和次要 ArcGIS 托管服务器发送请求,如图所示。

在这种情况下,反向代理提供单一入口点 - 向最终用户屏蔽系统的单一 IP 地址。 反向代理按照其算法将流量定向到 ArcGIS Web Adaptor,该算法通常是轮询算法,但可能更可靠。 与 ArcGIS Web Adaptor 一样,许多负载均衡器会监测服务器运行状况或可用性,并从分发列表中移除运行状况不佳或不可用的计算机,从而为您的系统提供弹性。

此功能的方法和效率因负载均衡器而异。 一些硬件负载均衡器具有丰富的算法,可据负载或响应时间进行动态调整。 其他均衡器使用简单的轮询列表,其中列表可能会定期更新以仅反映运行状况良好的计算机。

load-balancing-2.png

提高安全性

反向代理通常会将单个 IP 地址公开给特定系统的 Internet 或 Intranet,并将请求分发到正确的资源。 这大大降低了安全风险,因为网络和系统的内部拓扑处于隐藏状态,并且在发生攻击时漏洞点数量减少。 此方法还通过为系统提供单个接入点来简化服务交付和使用。 大多数组织选择安装反向代理,因此站点不会直接显示给客户端。

可以将反向代理服务器配置为直接与 ArcGIS Server 通信,也可以通过将相应的 URL 添加到代理指令中通过 ArcGIS Web Adaptor 进行通信。

有关详细信息,请参阅使用 ArcGIS Server 配置反向代理

注意事项和建议

实施负载均衡和反向代理的一般建议包括:

  • 实施负载均衡以在多个计算资源之间分配客户端工作负载流量,从而使用 ArcGIS 实现可扩展性和高可用性。
  • 在大多数 ArcGIS Enterprise 部署中,ArcGIS Web Adaptor 是推荐且经常需要的架构组件,它在单个易于部署的应用程序中同时提供负载均衡器和反向代理功能。 ArcGIS Web Adaptor 还提供了一种为 ArcGIS Enterprise 实施 Web 层身份验证的简单方法。
  • 对于高级负载平衡要求,除了 ArcGIS Web Adaptor 之外,还可以考虑实施提供所需功能的外部负载均衡器。
  • 部署面向公众的系统时,使用功能强大的反向代理为您的 ArcGIS 部署提供额外的安全性。
注:

对于许多其他应用程序或系统,在负载均衡器上终止 TLS 是一种常见的应用程序架构。 对于 ArcGIS 系统,通常建议不要使用 TLS 终止,对于 Portal for ArcGIS,则不支持 TLS 终止。 维护端到端 TLS 连接可以增强安全状况,并确保网络内的攻击者看不到用户请求和数据。

负载均衡建议

使用 ArcGIS 系统实施任何负载均衡技术时,请考虑以下策略:

  • ArcGIS 软件组件包括各种“运行状况检查”URL,可用于大多数负载均衡器发送的运行状况检查请求,以确定是否将服务器保留在该负载均衡器的“目标池”中。healthCheck 请求只有在系统正常运行并能够接收请求时,才应做出肯定响应。
  • 大多数负载均衡器可以在几种不同的模式下运行,包括轮询模式,该模式将请求随机发送到可用后端池中的服务器。 其他更“智能”的负载均衡方法可能会考虑请求类型或大小、基于计算或网络流量的服务器负载或其他因素。
  • 了解用户请求如何转换为服务器负载可能是一个复杂而主观的话题。 在偏离常规轮询方法时,请仔细考虑更智能的负载均衡方法的优势。
  • 会话粘性是一种常见的负载均衡器设置,它使用源 IP 地址或客户端 Cookie 确保来自同一用户的请求(负载均衡器感知到的请求)发送到同一服务器。 当多个孤立的 ArcGIS Server 站点或功能放置在同一个负载均衡器后面时,此功能可能非常方便,确保将用户请求返回到同一服务器可以带来功能和性能优势。

反向代理建议

反向代理通常作为负载均衡器的一部分实施,因为许多负载均衡器将请求发送到与前端请求来源不同的后端端口或服务。 在实施反向代理(与负载均衡器一起或独立于负载均衡器)时,请考虑以下一些设计建议:

  • 使用一致的 URL。 ArcGIS 系统高度自引用,其内容(如应用程序、地图或服务)使用指向项目、服务或其他组件的 URL 来引用系统的各个部分。 这些 URL 将保存到配置中,因此使用一致的 URL 有助于提高系统稳定性和内容可移植性。 更改系统的外部 URL 是一个中断进程,当前软件不支持该进程。
  • 某些反向代理可能默认使用多个 URL 部分来引用 ArcGIS 系统,例如:

    • https://centralhost.domain.com/systems/gis/rest/services

请注意,ArcGIS Enterprise 组件不支持使用此类多部件 URL,“Web 上下文”或 Web Adaptor 名称必须是 URL 中主机名之后的第一个 URL 组件。

  • ArcGIS 最适合使用透明反向代理配置,其中请求被发送到后端,而无需检查或请求身份验证或验证层。 其他拦截、调整或影响流量的反向代理方法可能会给 ArcGIS 系统带来功能和性能问题,因此在实施之前应仔细考虑。
Top