用于设置 Liberty 的平台即服务环境注意事项
平台即服务 (PaaS) 环境(例如,Bluemix®、Pivotal Cloud Foundry 和 OpenShift Enterprise)提供对应用程序实例的管理和监视,但还具有一些限制。由于 PaaS 环境的内部特征,一些 Liberty 功能部件冗余或行为不同,因而不受支持。
Liberty 服务器管理限制
与 Liberty 集合体相关的功能部件不适用于 PaaS 环境,因为所有 Liberty 服务器 JVM 实例由 PaaS 基础结构启动、停止和管理。管理中心 功能部件未进行设计以用于 PaaS 环境,在此环境中,可扩展应用程序以在不具有集合体控制器的情况下使用多个 JVM 实例。在此拓扑中,针对 管理中心 的请求可定向到任何正在运行的实例,且仅对运行请求的服务器可见。
- adminCenter-1.0
- clusterMember-1.0
- collectiveController-1.0
- collectiveMember-1.0
- dynamicRouting-1.0
- healthAnalyzer-1.0
- healthManager-1.0
- scalingController-1.0
- scalingMember-1.0
文件系统限制
多数 PaaS 环境不会向其应用程序提供持久的本地文件系统。对于 Liberty,这会影响服务器中的应用程序和组件,这些应用程序和组件在本地写入数据并预期在服务器 JVM 重新启动期间持久存储数据。
事务中涉及多个资源管理器时,Liberty 事务管理器会向本地文件系统写入日志文件。如果在 JVM 发生故障并重新启动后日志不可用,那么无法自动完成事务,必须手动解决以解锁数据,并使数据在资源管理器中保持一致。为避免出现此场景,Liberty buildpack 或 cartridge 阻止写入事务日志记录,并向应用程序发起异常以阻止列出第二个资源。因此,尽管您仍可将事务与单个 XA 资源配合使用,也无法在事务中列出第二个事务资源。此外,由于 Web Service 原子事务始终写入日志记录,因此无法使用。
-Dcom.ibm.tx.jta.disable2PC=true
- wsAtomicTransaction-1.2
- 使用事务的其他功能部件,依赖于应用程序行为
网络限制
- appClientSupport-1.0
- appSecurityClient-1.0
- ejbRemote-3.2
多数 PaaS 环境可通过在 HTTP 路由器终止加密入站请求的 SSL,对请求进行解密。这些加密请求可为 HTTP 或 wss。然后,会将解密请求作为解密 HTTP 或 wss 请求传递到应用程序服务器。一些应用程序配置为仅可由加密请求访问。您可以通过在 @HttpConstraint 注释上使用 transport-guarantee 元素或 transportGuarantee 元素,在应用程序的 web.xml 文件中设置此配置。
一些 Liberty 功能部件作为需要安全传输的应用程序实现,包括 REST 连接器、管理中心和 API 发现。
在 SSL 终止的环境中,路由器需要机制以指示应用程序服务器已对来自客户机的原始请求进行加密。此机制确保应用程序请求仍可成功。专用 WebSphere
头用于终止 DataPower 中的 SSL,例如,将 DataPower 与 IBM Cloud 配合使用或在 IBM HTTP Server 中使用。从 FP16.0.0.4 开始,使用其他 HTTP 路由器时,路由器可设置 X-Forwarded-Proto 头以指示原始请求的协议。如果最初对请求进行了加密,那么头指示 HTTPS 或 wss 协议。然后,Liberty 服务器允许访问需要安全传输的应用程序。
以下功能部件要求路由器设置 HTTP 标头以指示发生 SSL 终止:
- ssl-1.0
- 依赖于 ssl-1.0 的其他功能部件,如安全套接字层的“用于启用此功能部件的功能部件”部分中所列出。
Liberty Swagger 处理器
在 Cloud Foundry 环境中,Liberty 中的 Swagger 处理器(包括其用户接口)会检查是否存在 VCAP_APPLICATION 环境变量。它会将 uris 阵列的第一个元素用作 API 主机。