設定 Liberty 時的平台即服務 (PaaS) 環境注意事項
Bluemix®、Pivotal Cloud Foundry 和 OpenShift 等之類的平台即服務 (PaaS) 環境提供應用程式實例的管理與監視,但還是有一些限制。 基於 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 建置套件或卡匣會阻止撰寫交易日誌記錄,並使應用程式發生異常狀況,以防列入第二個資源。如此一來,雖然交易仍可以與單一 XA 資源搭配使用,但是無法將第二個交易資源列入交易中。此外,無法使用「Web 服務基本交易」,因為它們一律會撰寫日誌記錄。
-Dcom.ibm.tx.jta.disable2PC=true
- wsAtomicTransaction-1.2
- 會使用交易的其他特性(視應用程式行為而定)
網路限制
- appClientSupport-1.0
- appSecurityClient-1.0
- ejbRemote-3.2
大部分 PaaS 環境可以在 HTTP 路由器上,終止對於加密入埠要求的 SSL,即可將要求解密。
這些加密要求可以是 HTTPS 或 wss。之後,已解密的要求傳給應用程式伺服器時,就會是已解密的 HTTP 或 wss 要求。
部分應用程式會配置成只有加密要求才能存取。在應用程式的 web.xml 檔中,您可以在 @HttpConstraint 註釋上使用 transport-guarantee 元素或 transportGuarantee 元素,以設定這種配置。
部分 Liberty 特性已實作為需要安全傳輸的應用程式,包括 REST 連接器、「管理中心」及「API 探索」。
在 SSL 已終止的環境中,需要有一種機制,讓路由器向應用程式伺服器指出來自用戶端的原始要求已加密。
此機制可確保應用程式要求仍會成功。DataPower 中使用一個專用 WebSphere 標頭來終止 SSL,例如,當 DataPower 與 IBM Cloud
搭配使用,或在 IBM HTTP Server 中使用時。自修正套件 16.0.0.4 起,在使用其他 HTTP 路由器時,路由器可以設定 X-Forwarded-Proto 標頭,以指出原始要求的通訊協定。
如果要求最初已加密,這個標頭會指出 HTTPS 或 wss 通訊協定。然後,Liberty 伺服器就會容許存取需要安全傳輸的應用程式。
下列特性需要路由器設定 HTTP 標頭來指出 SSL 已終止:
- ssl-1.0
- 相依於 ssl-1.0 的其他特性,如 Secure Socket Layer 的啟用此特性的特性一節中所列。
Liberty Swagger 處理器
在 Cloud Foundry 環境中,Liberty 中的 Swagger 處理器(包括其使用者介面)會檢查 VCAP_APPLICATION 環境變數是否存在。它會使用 uris 陣列的第一個元素作為 API 主機。