用于设置 Liberty 的平台即服务环境注意事项
平台即服务 (PaaS) 环境(例如,IBM® Bluemix®、Pivotal Cloud Foundry 和 OpenShift Enterprise)提供对应用程序实例的管理和监视,但还具有一些限制。由于 PaaS 环境的内部特征,一些 Liberty 功能部件冗余或行为不同,因而不受支持。
Liberty 服务器管理限制
与 Liberty 集合体相关的功能部件不适用于 PaaS 环境,因为所有 Liberty 服务器 JVM 实例由 PaaS 基础结构启动、停止和管理。Liberty Admin Center 功能部件未进行设计以用于 PaaS 环境,在此环境中,可扩展应用程序以在不具有集合体控制器的情况下使用多个 JVM 实例。在此拓扑中,针对 Admin Center 的请求可定向到任何正在运行的实例,且仅对运行请求的服务器可见。
- 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
在一些情况(例如,SSL 在路由器处终止)下,Liberty 依赖于 HTTP 头描述原始客户机请求的各个方面。在 PaaS 环境中使用 SSL 时,这些头必须由 PaaS 路由器设置。在 IBM Bluemix 上,已设置这些头,以便您可使用 ssl-1.0 功能部件和依赖于它的任何功能部件,而不进行更改。要在其他 PaaS 环境中获得预期行为,可能需要按 NGINX 和 WebSphere® Application Server 中所述配置路由器以设置这些头。
- ssl-1.0
- 依赖于 ssl-1.0 的其他功能部件,如Secure Socket Layer 的“用于启用此功能部件的功能部件”部分中所列出
Liberty Swagger 处理器
在 Cloud Foundry 环境中,Liberty 中的 Swagger 处理器(包括其用户接口)会检查是否存在 VCAP_APPLICATION 环境变量。它会将 uris 阵列的第一个元素用作 API 主机。