适用于 SAP 企业门户的应用程序负载均衡器

作者: Debasis Sahoo | 2023 年 5 月

简介

对于 SAP 企业门户 (EP) 等 SAP Java 应用程序,客户使用 SAP Web 调度器作为其 HTTP 请求的入口点。SAP Web 调度器接收来自互联网或内联网的请求,并在应用程序服务器之间分发请求。对于基于互联网的 HTTP 请求,SAP Web 调度器需要可以访问互联网,这需要将其安装在公有子网中。许多 SAP 客户避免在公有子网上安装 EC2 实例,以减少可能的攻击面,从而缩小潜在的爆炸半径。

本博客介绍了客户如何将 E lastic Load Balan cing (ELB) 用于 SAP EP 应用程序。SAP EP 应用程序使用应用程序负载均衡器 (ALB) 对 HTTP 请求进行负载平衡。与 SAP Web 调度器不同,ALB 是无服务器服务,完全由 亚马逊云科技 管理。您可以将 ALB 配置为面向互联网,为 SAP EP 提供 HTTP 流量。借助 ALB,客户能够与 亚马逊云科技 Web 应用程序防火墙 (WAF) 集成以解决已知漏洞、与 A ma zon CloudFr on t 集成以实现内容加速,并集成 使用 亚马逊云科技 Certificate M anager (ACM) 来 管理 TLS/SSL 证书

应用程序负载均衡器及其功能

ALB 是一项高度可用的服务,它接受来自客户端的 HTTP 请求,并根据规则将其分发给目标组。每个目标组都包含 SAP EP 的单个或多个应用程序服务器的 IP 地址或 EC2 实例 ID 和 HTTP 端口组合。ALB 将将 HTTP 请求转发到应用程序服务器。

ALB 可以满足以下 SAP EP 要求

  1. 第 7 层 HTTP (s) 负载平衡服务,高度可用,能够跨多个可用区 (AZ) 分配请求。
  2. 高度安全、可靠和可扩展的 亚马逊云科技 托管服务,无需任何手动服务器维护(无服务器)。
  3. 可以根据基于主机和/或端口的映射将 HTTP (s) 请求转发到多个应用程序服务器。
  4. TLS/SSL 加密卸载。ALB 使用 SSL 证书来加密负载均衡器和客户端之间的流量。传入流量必须通过访问控制列表 (ACL) 的严格检查,然后才能到达托管 SAP 应用程序的 EC2 实例。
  5. 通过简单且受保护的 GSS-API 协商 (SPNEGO) 和使用 Active Directory 等身份提供商进行安全断言标记语言 (SAML) 身份验证,支持单点登录 (SSO)。
  6. HTTP 请求过滤。 WAF 可以与 ALB 一起用作额外的安全层,抵御开放式 Web 应用程序安全项目 (OWASP) 攻击,例如本博客中提到的 SQL 注入。 它还以 ACL 和规则的形式提供流量检查和过滤规则支持。我们可以按照 文档 在 WAF 中定义自定义规则。
  7. SSL 证书管理。 如本文档所述,ACM 可用于管理 SSL/TLS 证书。

架构

1) 适用于 SAP EP 的单个 ALB 架构

我们可以使用单个 ALB 在多个 SAP 应用程序服务器之间分配负载。ALB 可以面向互联网或面向内联网(也称为内部 ALB)。对于通过直接连接或虚拟专用网络 (VPN) 从客户网络发出的 HTTP 请求,“内部” ALB 会将请求和负载平衡转发到应用程序服务器。但是,如果客户希望允许用户从互联网访问SAP EP,则需要面向互联网的 ALB,如图 1 右侧图所示, 其中面向互联网的 ALB 部署在公有子网中

Shows single internal ALB architecture for SAP EP in the left and single internet ALB architecture for SAP EP in the right.

图 1:左 — SAP EP 的单一内部 ALB 架构和右 — 适用于 SAP EP 的单一互联网 ALB 架构

2) 适用于 SAP EP 的 ALB 三明治架构

ALB sandwich architecture for SAP EP

图 2:适用于 SAP EP 的 ALB 三明治架构

我们可以选择两个 ALB 的组合,在公有子网中有一个面向互联网的 ALB,在私 有子网中有一个面向互联网的 ALB,如图 2 所示,此类部署能够缩小爆炸半径,因为 SAP 应用程序子网不会暴露在互联网上,并且与 A WS Well-Architected Framework 保持一致,以 实现弹性,同时使架构 更加安全。

架构描述

  • 我们已经考虑了双账户策略,其中公有子网位于网络账户中,私有子网位于 亚马逊云科技 生产账户中。您还可以在单个账户中部署相同的架构。
  • 网络账户可以访问互联网,而 亚马逊云科技 生产账户无法直接访问互联网。这使得 亚马逊云科技 生产账户更加安全。
  • 我们已经考虑了两个 ALB。网络账户中的ALB是SAP EP面向互联网的ALB。这将为互联网(外部)用户提供服务,并连接到面向内联网(内部)ALB,在那里它将为内联网(内部)用户提供服务。
  • 在图 2 中,我们在多个可用区上使用了一组分布式虚拟机系列防火墙和 Amazon EC2 Auto Scaling 组,以提高可用性和灵活性。
  • 这种三明治架构用于满足入站流量防火墙检查的要求。流量首先通过用作 Auto Scaling 虚拟机系列防火墙组前端的 ALB。每个防火墙的目标是 ALB,后面包含目标组(本例中为 EC2 实例)。这种方法允许安全检查层和网络前端层以经济高效的方式相互独立地向内和向外扩展。更多详细信息可以在此 博客 中找到 。

面向互联网的 ALB 配置

  • 面向互联网的 ALB 配置为监听 HTTP 或 HTTPS 流量。将 HTTP 端口 80 路由到 HTTPS 端口 443 以提高安全性。
  • 默认安全策略 elbSecurityPolicy-2016-08 是面向互联网和内部负载均衡器的推荐策略,因为它支持 TLSv1.2。
  • 对于 HTTPS 侦听器,我们使用 ACM 证书或第三方证书在 ALB 上部署一个 SSL/TLS 服务器证书。

流程如下:

  1. 流量是在面向互联网的 ALB 处接收的。
  2. 它将流量转发到基于防火墙实例的目标组。
  3. 在防火墙实例中,使用静态网络地址转换 (NAT) 或端口到主机 NAT 策略将流量路由到内部 ALB。
  4. 内部 ALB 将接收来自防火墙的流量。

内部 ALB 配置

  • 端口 80 定义为 HTTP 端口,用于监听通过防火墙路由的面向互联网的 ALB 的传入请求。
  • 端口 443 定义为 HTTPS 端口,用于监听用户直接访问企业网络中的 SAP EP。
  • 默认安全策略 elbSecurityPolicy-2016-08 是面向互联网和内部负载均衡器的推荐策略,因为它支持 TLSv1.2
  • 对于 HTTPS 侦听器,我们使用 ACM 证书或第三方证书在 ALB 上部署一个 SSL/TLS 服务器证书。
Internal ALB Listeners

图 3:内部 ALB 侦听器

内部 ALB 的目标群体

SAP EP 应用程序服务器的所有 IP 地址都添加到目标组。请注意,尽管可以添加 EC2 实例,但最好将 “IP 地址” 添加为目标 ,因为如果由于故障而终止,EC2 实例 ID 可能会发生变化,新的实例可以取而代之。

Target group for SAP EP of internal ALB

图 4:内部 ALB 的 SAP EP 的目标群体

SAP EP 目标组属性

Stickiness Type Application cookie[app_cookie]
Stickiness Duration 17 hours
App cookie name saplb_*
Stickiness attributes for SAP EP

图 5:SAP EP 的粘性属性

SAP EP 需要启用基于应用程序的粘性。需要将后续请求传递到相关的应用程序服务器以支持有状态的用户会话。我们需要确保后端 SAP EP 添加了那个 saplb_* cookie,ALB 将复制其值并创建另一个名为 亚马逊云科技ALBAPP-* cookie 的 cookie。粘性持续时间必须足以确保用户的会话始终由 ALB 路由到特定的应用程序服务器。可以根据要求进行调整。我们建议在工作时间或一天内工作。

听众规则

监听器是一个使用您配置的协议和端口检查连接请求的进程。您可以在创建 ALB 时定义监听器,并且可以随时向负载均衡器添加监听器。例如,如图 3 所示,我们在内部 ALB 中定义了两个监听器:

  1. HTTP 80 用于来自面向互联网的 ALB 的流量
  2. HTTPS 443 适用于来自公司网络的流量

监听器的监听器规则决定了 ALB 如何将请求路由到其注册的目标。每条规则都包含优先级、一个或多个操作以及一个或多个条件。有关更多详细信息,请参阅此 文档

内部 ALB 侦听器规则

下表描述了 ALB 的示例规则和配置。

Rule Number Internal ALB Listener –Port 443
(Rule for internet traffic/internet facing ALB forward)
Internal ALB Listener – Port 80
(Rule for intranet traffic)
Corresponding
SAP Web Dispatcher Rule
5 If
Source IP is
10.0.0.0/8 OR 192.168.138.0/23
PATH is
*/webdynpro/dispatcher/sap.com/tc~sec~ume~wd~umeadmin/*
Then Forward to
sap-ep-prod-alb-tg: 1(100%)
If
PATH is
*/webdynpro/dispatcher/sap.com/tc~sec~ume~wd~umeadmin/*
“Return Fixed Response- This Feature is Blocked over Internet”
#User Administrator
if %{PATH} regimatch ^/webdynpro/dispatcher/sap.com/tc~sec~ume~wd~umeadmin(.*) [and]
If %{REMOTE_ADDR} !regimatch 10(.*) [and]
%{REMOTE_ADDR} !regimatch 192.168.138(.*)
[and]
%{REMOTE_ADDR} !regimatch 192.168.139(.*)
RegForbiddenURL
^/webdynpro/dispatcher/sap.com/tc~sec~ume~wd~umeadmin(.*) – [break]
6 If
PATH is
*/webdynpro/dispatcher/sap.com/tc~sec~ume~wd~umeadmin/*
“Return Fixed Response- This Feature is Blocked over Internet”

上述两个监听器规则 5 和 6 将确保用户管理引擎 (UME) 管理员只能由系统管理员在内部访问。

规则 5 表示,允许从公司内部子网范围 10.0.0.0/8 或 192.168.138.0/24 或 192.168.139.0/24 内的 IP 地址访问 UME 管理员

规则 6 表示不允许从其他 IP 地址访问 UME 管理员。

Internal ALB HTTPs listener port configuration

图 6:内部 ALB HTTPs 侦听器端口 443 配置

面向互联网的 ALB 监听器规则

当 HTTP 请求到达面向 Internet 的 ALB(监听端口 443)时,它会将流量转发到内部 ALB,后者被定义为面向互联网的 ALB 的目标组。

根据监听器规则,当有来自互联网的请求向UME Admin发出请求时,将按照图 7 和图 8 将其阻止。

Internal ALB HTTP Listener Port configuration

图 7:内部 ALB HTTP 侦听器端口 80 配置

Display message showing this feature is not available or blocked by ALB over Internet.

图 8:尝试从互联网访问用户管理网址时的结果

ALB 属性和安全注意事项

  • 建议 ALB 丢弃无效的数据包,并确保 ALB 配置为使用带有无效标头字段的 HTTP 标头被负载均衡器删除。
  • TLS 1.2 在 ALB 级别上生效,因为与 TLS 1.1 相比,它增强了安全性
  • 如果计划使用 EC2 自动扩展,则必须禁用删除保护。
  • 空闲超时应等于或大于 SAP 应用程序的处理超时。默认情况下,SAP EP 的超时时间为 600 秒,必须将其合并到面向互联网和内联网的 ALB 中。

ALB 支持通过互联网通过 SAP EP 访问 SAP ECC 后端内容

我们希望确保ALB支持与SAP EP的连接,并通过互联网从SAP EP重定向到SAP ECC后端。有关流量如何通过开放网络从 SAP EP 流向 SAP ECC 后端的更多信息,请访问 SAP 博客。

一些客户有严格的政策,只允许使用单一的完全限定域名 (FQDN) 和端口组合进行互联网流量。在这种情况下,只能通过基于上下文或路径的映射来在多个 SAP 系统之间分配负载。例如:如果客户只允许一个带有端口 443 的外部 ALB,并且它需要允许连接到 SAP EP 和 SAP Fiori,则侦听器规则条件必须按路径 “/irj/portal” 或 “/nwa” 映射 SAP EP,对于 SAP Fiori,则监听器规则条件必须按路径 “/irj/portal” 或 “/nwa” 进行映射。当我们只有一个 ALB 时,这可能会造成路径冲突,尤其是那些常见的内容,如 “/icon”、“/sap” 等。因此,建议将两个或多个 ALB 组合在一起,以便为面向互联网的用户和内联网用户设计多个 SAP 解决方案。

以下架构显示了两对用于基于上下文的映射的 ALB,一对用于 SAP EP,另一对用于 SAP ECC 访问相应的应用程序。

Multi ALB architecture for SAP ECC content access from SAP EP over internet

图 9:用于通过互联网从 SAP EP 访问 SAP ECC 内容的多 ALB 架构

我们已经考虑使用两对 ALB 来实现通过 SAP EP 在互联网上实现 SAP ECC 功能的目标。Pair 1 包含面向互联网的内部 ALB,其架构如前面为 SAP EP 所述。Pair 2 包含另一组面向互联网的系统和一个用于 SAP ECC 系统的内部 ALB。

我们必须确保 SAP ECC webdynpro 网址不能直接通过互联网访问,而只能通过 SAP EP 或相同域的系统进行访问。

这是通过在面向 SAP ECC 互联网的 ALB 中实现侦听器规则来实现的,如图 10 所示,其中 “HTTP 标头引用” 字段确保只能从 ess-ep.example.com ALB FQDN 访问 ECC 服务,例如,使用 HTTP 响应 402 阻止通过互联网直接访问任何 ECC 服务。

HTTP Header Referer in ECC ALB Listener Rule

图 10:ECC ALB 侦听器规则中的 HTTP 标头引用器

SAP ERP 的内部 ALB 可以通过侦听器端口 443 直接访问,因此可以直接从内部企业网络访问或从 SAP EP 中引用。

Figure showing ESS iView in SAP EP

图 11:SAP EP 中的 ESS iView

Figure showing System alias configuration

图 12:系统别名配置

例如,互联网用户可以登录基于 SAP EP ALB 的门户网站 URL https://ess-ep.example.com/irj/portal 并访问在 SAP ECC 上运行的员工自助服务 (ESS) webdynpro 应用程序,该应用程序由 SAP ECC ALB 设置,地址为 https://ess-ecc.example.com/sap/bc/webdynpro/ZHRESS,如图 11 所示。

已使用 SAP ECC ALB FQDN 定义了 SAP ECC 的 “系统别名”,以便通过 https: ///irj/portal-> 系统管理-> 系统格局从 SAP EP 进行直接 SSO,如图 12 所示。SAP ECC 的互联网事务服务器 (ITS) 主机名和应用程序服务器主机名已使用 SAP ECC ALB FQDN 定义。

预期的 HTTP 请求流:

  • 用户将首先访问 SAP EP 门户网站的网址,该网址会打开 /irj/portal
  • 在通过 VM 系列防火墙之前,该请求将到达面向互联网的 SAP EP ALB
  • 然后将其转发到 SAP EP 的内部 ALB,最后转发到 SAP EP 应用程序服务器。
  • 进入SAP EP后,用户点击ESS选项卡,请求将被重定向到面向互联网的SAP ECC的ALB。
  • 然后,请求被发送到虚拟机系列防火墙,并到达验证侦听器规则的 SAP ECC 内部 ALB。
  • 它根据匹配条件将流量发送到 SAP ECC 目标组,以达到 SAP ECC 应用程序服务器。

如果用户尝试直接通过互联网访问SAP ECC webdynpro网址,则访问将被拒绝,因为SAP EP ALB是规则中所示的 “推荐人”,是访问ECC ALB的唯一途径,如图10所示。

由于 HTTP Referer 仅在外部 ALB 端实现,因此直接连接到内部 ALB 的内联网用户在直接或间接访问 URL 时不会遇到任何问题。

ALB 性能分析和故障排除

要监控 ALB 性能,您可以前往 Amazon CloudWatch 控制台、指标并选择所需的 ALB,或者导航到 EC2 控制台-> 负载平衡-> 目标组,选择所需的目标组,然后单击 “监控” 选项卡。可以在以下 亚马逊云科技 文档 中获得更多信息 。下图是 ALB 的 CloudWatch 指标示例,显示在印度工作高峰时段半小时内,请求数为 1500-2000 个请求的平均 “目标响应时间” 约为 150-200 毫秒。

Amazon Cloudwatch ALB performance metrics

图 13:亚马逊 Cloudwatch ALB 性能指标

您可以参考 此知识库 来解决 ALB 性能是否存在高延迟或超时问题。缩小与 SAP EP 相关的问题范围后,请查看 icm 日志或默认跟踪以获取线索。请查看 SAP Note 2579836 以解决此类问题。

结论

在这篇博客文章中,我们深入探讨了 ALB for SAP EP 应用程序的用例、架构模式和设置程序。客户在其 SAP 应用程序中使用 ALB 是为了利用其许多功能和优势。ALB 是一项 亚马逊云科技 托管服务,无需维护底层操作层或 EC2 实例。它是一项高度可用且可扩展的服务,可简化您的 SAP 环境。

您可以 从 亚马逊云科技 产品文档中了解有关 亚马逊云科技 上 的 SA P 的更多信息 。

如果您需要其他专家指导,请联系您的 亚马逊云科技 账户团队聘请当地 SAP 专家解决方案架构师或 亚马逊云科技 专业服务 SAP 专业实践。

加入 SAP on 亚马逊云科技 讨论会

除了您的客户账户团队和 亚马逊云科技 Support 渠道外,您还可以通过 re : Post(全新 亚马逊云科技 社区问答体验 )与我们互动。 我们的 SAP on 亚马逊云科技 解决方案架构团队定期监控 SAP on 亚马逊云科技 话题,讨论和问题可以得到解答,以帮助我们的客户和合作伙伴。如果你的问题与支持无关,可以考虑加入 re: Post 上的讨论,并添加到社区知识库中。

该博客由苏米特·戴伊共同撰写。