为 AEM as a Cloud Service 配置高级联网功能 configuring-advanced-networking
本文介绍 AEM as a Cloud Service 中的各种高级联网功能,包括 VPN、非标准端口以及专用出口 IP 地址的自助服务和 API 配置。
概述 overview
AEM as a Cloud Service 提供以下高级网络选项:
- 灵活端口出口 – 将 AEM as a Cloud Service 配置为允许从非标准端口传出流量。
- 专用出口 IP 地址 – 将 AEM as a Cloud Service 的流量配置为从唯一 IP 传出。
- 虚拟专用网络(VPN) - 如果您有 VPN,则保护您的基础架构与 AEM as a Cloud Service 之间的流量。
本文详细描述了每个选项以及为什么您可能会使用它们,然后描述如何使用 Cloud Manager UI 和 API 配置它们。本文最后介绍了一些高级用例。
要求和限制 requirements
配置高级网络功能时,存在以下限制。
-
程序可以提供单个高级网络选项(灵活端口出口、专用出口 IP 地址或 VPN)。
-
高级联网对沙盒程序不可用。
-
用户必须具有 管理员 角色才能在您的程序中添加和配置网络基础架构。
-
必须先创建生产环境,然后才能将网络基础架构添加到程序中。
-
您的网络基础架构必须与生产环境的主要区域位于同一区域。
- 如果您的生产环境有额外的发布区域,您可以创建另一个网络基础架构来镜像每个额外的区域。
- 您创建的网络基础架构数量不得超过生产环境中配置的最大区域数量。
- 您可以定义与生产环境中的可用区域一样多的网络基础架构,但新基础架构必须与之前创建的基础架构类型相同。
- 创建多个基础架构时,只能选择尚未创建高级网络基础架构的区域。
配置和启用高级网络 configuring-enabling
使用高级网络功能需要两个步骤:
- 配置高级网络选项,无论是灵活端口出口、 专用出口 IP 地址还是 VPN,必须首先在程序级别完成。
- 要使用高级网络选项,必须在环境级别启用。
这两个步骤都可以使用 Cloud Manager UI 或 Cloud Manager API 来完成。
-
使用 Cloud Manager UI 时,这意味着使用程序级别的向导创建高级网络配置,然后编辑您希望启用配置的每个环境。
-
使用 Cloud Manager API 时,会在项目级别调用
/networkInfrastructures
API 端点来声明所需的高级网络类型。随后调用每个环境的/advancedNetworking
端点来启用基础设施,并配置特定于环境的参数。
灵活端口出口 flexible-port-egress
此高级联网功能让您对 AEM as a Cloud Service 进行配置,通过默认打开的 HTTP(端口 80)和 HTTPS(端口 443)以外的端口来传入流量。
UI 配置 configuring-flexible-port-egress-provision-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板中选择 网络基础架构。
-
在 添加网络基础架构 向导中,选择 灵活端口出口 并从 区域 下拉菜单中选择应创建它的区域,然后单击 继续。
-
确认 选项卡总结了您的选择和后续步骤。单击 保存 以创建基础架构。
侧面板中 网络基础架构 标题下方将显示一条新记录,其中包括基础架构类型、状态、区域以及已启用该记录的环境的详细信息。
API 配置 configuring-flexible-port-egress-provision-api
每个程序调用一次 POST /program/<programId>/networkInfrastructures
端点,只需传递 kind
参数和区域的 flexiblePortEgress
值。端点使用 network_id
以及包括状态在内的其他信息进行响应。
在调用后,通常需要大约 15 分钟来预配联网基础设施。对 Cloud Manager 的网络基础架构 GET 端点的调用将显示状态 “就绪”。
流量路由 flexible-port-egress-traffic-routing
对于流向 80 或 443 端口以外端口的 http 或 https 流量,应使用以下主机和端口环境变体来配置代理。
- 对于 HTTP:
AEM_PROXY_HOST
/AEM_HTTP_PROXY_PORT
(在 AEM 版本 6094 之前,默认为proxy.tunnel:3128
) - 对于 HTTPS:
AEM_PROXY_HOST
/AEM_HTTPS_PROXY_PORT
(在 AEM 版本 6094 之前,默认为proxy.tunnel:3128
)
例如,以下是发送请求到 www.example.com:8443
的示例代码:
String url = "www.example.com:8443"
String proxyHost = System.getenv().getOrDefault("AEM_PROXY_HOST", "proxy.tunnel");
int proxyPort = Integer.parseInt(System.getenv().getOrDefault("AEM_HTTPS_PROXY_PORT", "3128"));
HttpClient client = HttpClient.newBuilder()
.proxy(ProxySelector.of(new InetSocketAddress(proxyHost, proxyPort)))
.build();
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
如果使用非标准 Java™ 联网库,请使用以上属性为所有流量配置代理。
如果非 http/https 流量流经 portForwards
参数中声明的端口,应该引用名为 AEM_PROXY_HOST
的属性以及映射的端口。例如:
DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");
下表描述了流量路由:
非标准流量(在 80 或 443 以外的端口上),这些流量流经使用以下环境变体和代理端口号配置的 http 代理。不要在 Cloud Manager API 调用的 portForwards 参数中声明目标端口:
- AEM_PROXY_HOST(在 AEM 版本 6094 之前,默认为“proxy.tunnel”)
- AEM_HTTPS_PROXY_PORT(在 AEM 版本 6094 之前,默认为端口 3128)
portForwards
API 参数中声明的 portOrig
连接到 AEM_PROXY_HOST
环境变体。mysql.example.com:3306
db.example.com:5555
Apache / Dispatcher 配置 apache-dispatcher
AEM Cloud Service Apache/Dispatcher 层的 mod_proxy
指令可以使用上述属性进行配置。
ProxyRemote "http://example.com:8080" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "http://example.com:8080"
ProxyPassReverse "/somepath" "http://example.com:8080"
SSLProxyEngine on //needed for https backends
ProxyRemote "https://example.com:8443" "http://${AEM_PROXY_HOST}:3128"
ProxyPass "/somepath" "https://example.com:8443"
ProxyPassReverse "/somepath" "https://example.com:8443"
专用出口 IP 地址 dedicated-egress-ip-address
在与 SaaS 供应商(例如 CRM 供应商)集成,或者对于在 AEM as a Cloud Service 之外提供 IP 地址允许列表的其他集成时,专用 IP 地址可以增强安全性。通过将专用 IP 地址添加到允许列表,可以确保只有来自 AEM Cloud Service 的流量允许流向外部服务。这是在允许的其他所有 IP 之外的流量。
相同的专用 IP 适用于程序中的所有环境,并且适用于作者和发布服务。
如果不启用专用 IP 地址功能,来自 AEM as a Cloud Service 的流量会流经与 AEM as a Cloud Service 的其他客户共享的一组 IP。
专用出口 IP 地址的配置方法与灵活端口出口相同。主要差别在于,配置后,流量始终从专用的唯一 IP 地址传出。要查找该 IP,请使用 DNS 解析器来确定与 p{PROGRAM_ID}.external.adobeaemcloud.com
关联的 IP 地址。该 IP 地址不应改变,但如果必须改变,则会提供提前通知。
UI 配置 configuring-dedicated-egress-provision-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板中选择 网络基础架构。
-
在启动的 添加网络基础架构 向导中,选择 专用出口 IP 地址 以及从 区域 下拉菜单中选择应创建它的区域,然后单击 继续。
-
确认 选项卡总结了您的选择和后续步骤。单击 保存 以创建基础架构。
侧面板中 网络基础架构 标题下方将显示一条新记录,其中包括基础架构类型、状态、区域以及已启用该记录的环境的详细信息。
API 配置 configuring-dedicated-egress-provision-api
每个程序调用一次 POST /program/<programId>/networkInfrastructures
端点,只需传递 kind
参数和区域的 dedicatedEgressIp
值。端点使用 network_id
以及包括状态在内的其他信息进行响应。
在调用后,通常需要大约 15 分钟来预配联网基础设施。对 Cloud Manager 的网络基础架构 GET 端点的调用将显示状态 “就绪”。
流量路由 dedicated-egress-ip-traffic-routing
Http 或 https 流量将通过预配置的代理,前提是它们使用标准 Java™ 系统属性进行代理配置。
如果非 http/https 流量流经 portForwards
参数中声明的端口,应该引用名为 AEM_PROXY_HOST
的属性以及映射的端口。例如:
DriverManager.getConnection("jdbc:mysql://" + System.getenv("AEM_PROXY_HOST") + ":53306/test");
api.windows.net
nonProxyHosts
参数nonProxyHosts
参数portForwards
API 参数中声明的 portOrig
连接到 AEM_PROXY_HOST
环境变体mysql.example.com:3306
功能用法 feature-usage
该功能与产生传出流量的 Java™ 代码或库兼容,前提是它们的代理配置使用了标准 Java™ 系统属性。实际上,这应该包括了大多数常用库。
下面是代码示例:
public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
URL finalUrl = endpointUri.resolve(relativeUri).toURL();
URLConnection connection = finalUrl.openConnection();
connection.addRequestProperty("Accept", "application/json");
connection.addRequestProperty("X-API-KEY", apiKey);
try (InputStream responseStream = connection.getInputStream(); Reader responseReader = new BufferedReader(new InputStreamReader(responseStream, Charsets.UTF_8))) {
return new JSONObject(new JSONTokener(responseReader));
}
}
一些库需要明确配置,以便为代理配置使用标准 Java™ 系统属性。
使用 Apache HttpClient 的示例,其中需要明确调用HttpClientBuilder.useSystemProperties()
或使用HttpClients.createSystem()
:
public JSONObject getJsonObject(String relativePath, String queryString) throws IOException, JSONException {
String relativeUri = queryString.isEmpty() ? relativePath : (relativePath + '?' + queryString);
URL finalUrl = endpointUri.resolve(relativeUri).toURL();
HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
HttpGet request = new HttpGet(finalUrl.toURI());
request.setHeader("Accept", "application/json");
request.setHeader("X-API-KEY", apiKey);
HttpResponse response = httpClient.execute(request);
String result = EntityUtils.toString(response.getEntity());
}
调试注意事项 debugging-considerations
为了验证该流量是否确实在预期的专用 IP 地址上传出,请查看目标服务中的日志(如果可用)。否则,调用 https://ifconfig.me/ip 等调试服务可能会有帮助,调试服务会返回调用 IP 地址。
虚拟专用网络 (VPN) vpn
VPN 允许从创作、发布或预览实例连接到内部部署基础架构或数据中心。例如,这对于保护数据库访问很有用。它还允许连接到SaaS供应商,例如支持VPN的CRM供应商。
支持大部分采用 IPSec 技术的 VPN 设备。请参阅此设备列表中 RouteBased 配置说明 列中的信息。按表中所述配置该设备。
- 仅限于支持单个 VPN 连接
- 必须在网关地址空间中列出 DNS 解析器才能解析私有主机名。
UI 配置 configuring-vpn-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板中选择 网络基础架构。
-
在启动的 添加网络基础架构 向导中,选择 虚拟专用网络 并在单击 继续 之前提供必要的信息。
-
区域 – 这是应该创建基础架构的区域。
-
地址空间:地址空间只能是您自己空间中的 1 /26 CIDR(64 个 IP 地址)或更大的 IP 范围。
- 该值以后无法更改。
-
DNS 信息 – 这是远程 DNS 解析器的列表。
- 按
Enter
输入 DNS 服务器地址后可添加另一个地址。 - 单击地址后的
X
将其移除。
- 按
-
共享密钥 – 这是您的 VPN 预共享密钥。
- 选择 显示共享密钥 可显示密钥,以便仔细检查其值。
-
-
在 连接 向导选项卡中,提供 连接名称 识别您的 VPN 连接并单击 添加连接。
-
在 添加连接 对话框中,定义您的 VPN 连接,然后单击 保存。
-
连接名称 – 这是您的 VPN 连接的描述性名称,您在上一步中提供了该名称,可以在此处更新。
-
地址 - 这是 VPN 设备 IP 地址。
-
地址空间 – 这些是通过 VPN 路由的 IP 地址范围。
- 按
Enter
输入一个范围后可添加另一个范围。 - 单击范围后的
X
将其删除。
- 按
-
IP 安全策略 – 根据需要调整默认值
-
-
对话框关闭,您返回到 连接 向导的选项卡。单击 继续。
-
确认 选项卡总结了您的选择和后续步骤。单击 保存 以创建基础架构。
侧面板中 网络基础架构 标题下方将显示一条新记录,其中包括基础架构类型、状态、区域以及已启用该记录的环境的详细信息。
API 配置 configuring-vpn-api
每个程序调用一次 POST /program/<programId>/networkInfrastructures
端点。它会传递配置信息的负载。该信息包括 kind
参数的 vpn 值、区域、地址空间(CIDR 列表;请注意,该信息稍后无法修改)、DNS解析器(用于解析网络中的名称)。它还包括 VPN 连接信息,例如网关配置、共享 VPN 密钥和 IP 安全性策略。端点使用 network_id
以及包括状态在内的其他信息进行响应。
在调用后,通常需要 45 到 60 分钟才能提供网络基础设施。可以调用 API 中的 GET 方法,以返回状态,该状态最终会从 creating
翻转到 ready
。请参考 API 文档来了解所有状态。
流量路由 vpn-traffic-routing
下表描述了流量路由。
api.windows.net
nonProxyHosts
参数nonProxyHosts
参数10.0.0.1:443
这也可以是主机名。
portForwards
API 参数中声明的 portOrig
连接到 AEM_PROXY_HOST
环境变体10.0.0.1:3306
这也可以是主机名。
portForwards
API 参数中声明的 portOrig
连接到 AEM_PROXY_HOST
环境变体对配置非常有用的域 vpn-useful-domains-for-configuration
下图直观地展示了在配置和开发时非常有用的一组域和关联 IP。该图下方的表进一步说明了这些域和 IP。
p{PROGRAM_ID}.external.adobeaemcloud.com
p{PROGRAM_ID}.{REGION}-gateway.external.adobeaemcloud.com
在环境中启用高级网络配置 enabling
一旦为程序配置了高级网络选项,无论是灵活的端口出口, 专用出口 IP 地址,还是 VPN,要使用这些选项,必须在环境级别启用。
当您为环境启用高级网络配置时,您也可以启用可选的端口转发和非代理主机。可以根据各个环境来配置参数以提供灵活性。
-
转发端口 – 应为除 80/443 之外的任何目标端口声明端口转发规则,但前提是不使用 http 或 https 协议。
- 端口转发规则是通过指定目标主机集(名称或 IP 和端口)来定义的。
- 通过 http/https 使用端口 80/443 的客户端连接仍必须在其连接中使用代理设置,以便将高级联网属性应用于此连接。
- 对于每个目标主机,您必须将指向的目标端口映射到 30000 到 30999 之间的端口。
- 端口转发规则适用于所有高级网络类型。
-
非代理主机:非代理主机允许您声明一组主机,这些主机应通过共享的 IPS 地址范围而不是专用的 IP 进行路由。
- 这可能很有用,因为通过共享 IPS 流出的流量可以进一步优化。
- 非代理主机仅适用于专用出口 IP 地址和 VPN 高级网络类型。
启用使用 UI enabling-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板的 环境 标题下选择您希望启用高级网络配置的环境。然后选择所选环境的 高级网络配置 选项卡,单击 启用网络基础架构。
-
配置高级网络 对话框打开。
-
在 非代理主机 选项卡上,对于专用出口 IP 地址和 VPN,您可以选择定义一组主机。这些定义的主机应该通过共享的 IP 地址范围(而不是专用的 IP)进行路由,其方法是在 非代理主机 字段中提供主机名,然后单击 添加。
- 该主机将添加到选项卡上的主机列表中。
- 如果要添加多个主机,请重复此步骤。
- 如果想要删除主机,请单击该行右侧的 X。
- 此选项卡不适用于灵活端口出口配置。
-
在 端口转发 选项卡上,如果不使用 HTTP 或 HTTPS,您可以选择为除 80/443 之外的任何目标端口定义端口转发规则。提供 名称、原始端口 和 目标端口,然后单击 添加。
- 该规则将添加到选项卡上的规则列表中。
- 如果要添加多个规则,请重复此步骤。
- 如果想要移除规则,请单击该行右侧的 X。
-
单击对话框中的 保存 将配置应用到环境。
高级网络配置将应用于所选环境。返回 环境 选项卡,您可以查看应用于所选环境的配置的详细信息及其状态。
启用使用 API enabling-api
要为环境启用高级网络配置,必须为每个环境调用 PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
端点。
API 应该会在几秒钟内做出响应,并且状态会显示为 updating
。大约 10 分钟后,对 Cloud Manager 环境 GET 端点的调用显示的状态为 ready
,表明已应用对环境的更新。
每个环境的端口转发规则可以通过调用 PUT /program/{programId}/environment/{environmentId}/advancedNetworking
端点进行更新,包括完整的配置参数集而不是其子集。
专用出口 IP 地址和 VPN 高级网络类型支持nonProxyHosts
参数。这使您可以声明一组主机,这些主机应通过共享的 IP 地址范围而不是专用的 IP 进行路由。nonProxyHost
URL 可能会遵循 example.com
或 *.example.com
的模式,这种情况下仅支持在域的开头使用通配符。
即使没有环境流量路由规则(托管或绕过),仍必须调用 PUT /program/<program_id>/environment/<environment_id>/advancedNetworking
,只不过在调用时使用空负载。
编辑和删除环境中的高级网络配置 editing-deleting-environments
为环境启用高级网络配置后, 您可以更新这些配置的详细信息或将其删除。
使用 UI 编辑或删除 editing-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板的 环境 标题下选择您希望启用高级网络配置的环境。然后选择所选环境的 高级网络配置 选项卡,单击省略号按钮。
-
在省略号菜单中,选择 编辑 或 删除。
- 如果您选择 编辑,请按照上一节启用用户界面中描述的步骤更新信息,然后单击 保存。
- 如果您选择 删除,请在 删除网络配置 对话框中使用“删除”确认删除或使用“取消”中止。
更改将反映在 环境 选项卡上。
使用 API 编辑或删除 editing-api
要删除特定环境的高级网络,请调用 DELETE [/program/{programId}/environment/{environmentId}/advancedNetworking]()
。
编辑和删除程序的网络基础架构 editing-deleting-program
一旦为程序创建了网络基础架构,就只能编辑有限的属性。如果您不需要它,您可以删除整个程序的高级网络基础架构。
- 只有在所有环境都禁用其高级网络的情况下,删除操作才会删除基础架构。
- 如果网络基础架构的状态为 正在创建、正在更新 或 正在删除,则无法编辑网络基础架构。
- 创建后,只能编辑 VPN 高级网络基础架构类型,并且只能编辑有限的字段。
- 出于安全原因,在编辑高级 VPN 网络基础架构时,必须始终提供 共享密钥,即使您没有编辑密钥本身。
使用 UI 进行编辑和删除 delete-ui
-
在 my.cloudmanager.adobe.com 登录 Cloud Manager 并选择适当的组织。
-
在 我的程序 控制台上,选择该程序。
-
从 程序概述 页面,导航至 环境 选项卡,然后在左侧面板中选择 网络基础架构 标题。然后单击要删除的基础架构旁边的省略号按钮。
-
在省略号菜单中,选择 编辑 或 删除。
-
如果您选择 编辑,则会打开 编辑网络基础架构 向导。按照创建基础架构时所述的步骤根据需要进行编辑。
-
如果您选择 删除,请在 删除网络配置 对话框中使用“删除”确认删除或使用“取消”中止。
更改将反映在 环境 选项卡上。
使用 API 进行编辑和删除 delete-api
要 删除 项目的网络基础架构,请调用 DELETE /program/{program ID}/networkinfrastructure/{networkinfrastructureID}
。
更改程序的高级网络基础架构类型 changing-program
一次只能为程序配置一种类型的高级网络基础架构。高级网络基础设施必须是灵活的端口出口、专用出口 IP 地址或 VPN。
如果您决定需要另一种高级网络基础架构类型而不是已配置的网络基础架构类型,则删除现有的网络基础架构类型,并再创建一个网络基础架构类型。执行以下操作:
- 删除所有环境中的高级网络。
- 删除高级网络基础架构。
- 创建您现在需要的高级网络基础架构类型,灵活端口出口、 专用出口 IP 地址或 VPN。
- 在环境级别启用高级网络。
如果停机会对业务产生重大影响,请联系客户支持以寻求帮助,并说明已创建的内容和更改的原因。
其他发布区域的高级网络配置 advanced-networking-configuration-for-additional-publish-regions
当将附加区域添加到已配置高级网络的环境中时,来自与高级网络规则匹配的附加发布区域的流量将默认路由通过主要区域。但是,如果主要区域变得不可用,在附加区域中未启用高级网络时,高级网络流量会被丢弃。如果您希望在其中一个区域发生中断时优化延迟并提高可用性,则有必要为附加发布区域启用高级网络。以下部分描述了两种不同的场景。
专用出口 IP 地址 additional-publish-regions-dedicated-egress
高级网络已在主要区域启用 already-enabled
如果已在主要区域启用高级网络配置,请执行以下步骤:
- 如果您已锁定基础设施,使得专用 AEM IP 地址被列入允许列表,请暂时禁用该基础设施中的任何拒绝规则。如果不这样做,您自己的基础设施会在短时间内拒绝来自新区域的 IP 地址的请求。如果您已通过完全限定域名 (FQDN) 锁定您的基础设施(例如,
p1234.external.adobeaemcloud.com
),则没有必要这样做,因为所有 AEM 区域都会从相同的 FQDN 输出高级网络流量 - 如高级网络文档中所述,通过对 Cloud Manager Create Network Infrastructure API 的 POST 调用,为次要区域创建程序范围的网络基础设施。负载的 JSON 配置相对于主要区域的唯一区别是区域属性
- 如果您的基础设施必须由 IP 锁定以允许 AEM 流量,请添加与
p1234.external.adobeaemcloud.com
匹配的 IP。每个区域应该有一个匹配的 IP。
尚未在任何区域配置高级网络 not-yet-configured
该过程与前面的说明大体相似。但是,如果生产环境尚未启用高级网络,则有机会通过首先在暂存环境中启用配置来测试配置:
- 通过 POST 调用 Cloud Manager 创建网路基础设施 API 为所有区域创建网络基础设施。负载的 JSON 配置相对于主要区域的唯一区别是区域属性。
- 对于暂存环境,通过运行
PUT api/program/{programId}/environment/{environmentId}/advancedNetworking
启用和配置环境范围内的高级网络。有关详细信息,请参阅 API 文档 - 如有必要,最好通过 FQDN(例如
p1234.external.adobeaemcloud.com
)锁定外部基础设施。您可以通过 IP 地址进行锁定 - 如果暂存环境按预期工作,请为生产启用并配置环境范围内的高级网络配置。
VPN vpn-regions
该过程与专用出口 IP 地址指令几乎相同。唯一的区别是,除了区域属性的配置与主要区域不同之外,还可以选择配置 connections.gateway
字段。该配置可以路由到您的组织运营的地理位置上更靠近新区域的其他 VPN 端点。
疑难解答
请注意,以下要点仅供参考,包含故障排除的最佳实践。这些建议旨在帮助您有效诊断和解决问题。
连接池 connection-pooling-advanced-networking
连接池是一种专门用于创建和维护连接存储库的技术,可供任何可能需要连接的线程立即使用。在各种在线平台和资源中可以找到许多连接池技术,每种技术都有其独特的优点和注意事项。我们鼓励客户研究这些方法,找出最适合其系统架构的方法。
实施适当的连接池策略是一种主动措施,可以纠正系统配置中常见的疏忽,这种疏忽往往会导致性能不佳。通过正确建立连接池,Adobe Experience Manager (AEM) 可以提高外部调用的效率。这不仅减少了资源消耗,还降低了服务中断的风险,并减少了与上游服务器通信时请求失败的可能性。
鉴于此,Adobe 建议重新评估您当前的 AEM 配置,并考虑将连接池与高级网络设置结合使用。通过管理并行连接的数量并最大程度降低连接过时的可能性,这些措施可以降低代理服务器达到连接限制的风险。因此,此战略实施旨在降低请求无法到达外部端点的可能性。
连接限制常见问题解答
使用高级网络时,连接数量受到限制,以确保跨环境的稳定性并防止较低环境耗尽可用的连接。
每个 AEM 实例的连接数限制为 1000 个,当连接数达到 750 个时会向客户发送警报。
连接限制是否仅适用于非标准端口的出站流量或所有出站流量?
此限制仅适用于使用高级网络的连接(非标准端口上的出口、使用专用出口 IP 或 VPN)。
我们没有看到传出连接的数量有显著差异。为什么我们现在收到通知?
如果客户动态创建连接(例如,每个请求创建一个或多个连接),则流量的增加可能会导致连接激增。
我们以前是否也经历过类似的情况而没有得到警告?
仅当达到软限制时才会发送警报。
如果达到最大限制会发生什么情况?
当达到硬限制时,通过高级网络(非标准端口上的出口、使用专用出口 IP 或 VPN)从 AEM 发出的新出口连接将被丢弃,以防止 DoS 攻击。
可以提高限额吗?
不可以,大量连接会对性能造成严重影响,并导致跨 pod 和环境的 DoS。
AEM 系统会在一段时间后自动关闭连接吗?
是的,连接在 JVM 级别和网络基础设施的不同点关闭。然而,这对于任何生产服务来说都太晚了。当使用连接池时,当不再需要连接时应明确关闭连接或将其返回到池中。否则,资源消耗过高,可能造成资源耗尽。
如果达到最大连接限制,是否会影响任何许可证并导致额外费用?
否,此限制不需要许可证或费用。这是一个技术限制。
我们距离极限还有多远?最高限额是多少?
当连接数超过 750 时会触发警报。每个 AEM 实例的最大限制为 1000 个连接。
此限制适用于 VPN 吗?
是的,该限制适用于使用高级网络(包括 VPN)的连接。
如果我们使用专用出口 IP,此限制仍然适用吗?
是的,如果使用专用出口 IP,该限制仍然适用。