將 JBoss EAP 應用程式遷移至 Azure Red Hat OpenShift

本指南說明當您想要移轉現有的 JBoss EAP 應用程式以在 Azure Red Hat OpenShift 上執行時應該注意的事項。

移轉前

若要確保成功移轉,請先完成下列各節所述的評量和清查步驟。

確定目標是移轉工作的適當目標

成功將 JBoss EAP 應用程式移轉至 Azure 的第一個步驟是選取最適當的移轉目標。 JBoss EAP 在 Azure 虛擬機 (VM) 或 Azure Red Hat OpenShift 上執行良好。

VM 目標是最簡單的選擇,因為它最類似於內部部署部署。 虛擬機器的系統管理與部署體驗類似於您內部部署的內容。 選取 VM 可讓您延遲現代化。

Red Hat OpenShift 將經過測試和信任的服務整合在一起,以減少開發、現代化、部署、執行和管理應用程式的摩擦。 Azure Red Hat OpenShift 建置在 Kubernetes 上。 Azure Red Hat OpenShift 可在公用雲端、內部部署、混合式雲端或邊緣架構之間提供一致的體驗。

如果最小化變更是移轉工作最重要的因素,請考慮以 VM 為基礎的移轉。 在此情況下,請參閱 將 JBoss EAP 應用程式遷移至 Azure VM 上的 JBoss EAP。 如果您可以容許將應用程式轉換為在 Red Hat OpenShift 中執行,以降低運行時間成本,請考慮以 Azure Red Hat OpenShift 為基礎的移轉。 在此情況下,請繼續將 JBoss EAP 應用程式遷移至 Azure Red Hat OpenShift 上的 JBoss EAP。 若要瞭解適用於 OpenShift 的 JBoss EAP 和 JBoss EAP 之間的差異,請參閱 比較:JBoss EAP 和適用於 OpenShift 的 JBoss EAP。

判斷預先建置的 Azure Marketplace 供應專案是否為良好的起點

首先,決定 Azure Red Hat OpenShift 是適當的部署目標。 接下來,決定預先建置的 Azure Marketplace 供應 專案是否為良好的起點。 請考慮下列有關預先建置的 Azure Marketplace 供應專案:

  • Red Hat 和 Microsoft 已建立此供應專案,以在 Azure Red Hat OpenShift 上快速布建 JBoss EAP。
  • 概括而言,供應專案會為您自動化下列步驟。
    • 在 Azure Red Hat OpenShift 上安裝 EAP 操作員。
    • 使用 eap-s2i-build 範本建置應用程式映射。 如需 Source-to-image (S2I) 的詳細資訊,請參閱 使用 OpenShift 的 OpenJDK 11 來源對映像。
    • 使用 EAP 操作員部署 Java 應用程式。 如需詳細資訊,請參閱 Red HatEAP 操作員的參考檔。

如果您未使用預先建置的 Azure Marketplace 供應專案,您必須瞭解如何直接使用 EAP 操作員。 掌握運算元超出本文的範圍。 EAP 操作員的完整檔可在 Red Hat 取得

本節的其餘部分提供決定使用預先建置的 Azure Marketplace 供應專案或使用操作員的一些考慮。

判斷 JBoss EAP 版本是否相容

您現有的 JBoss EAP 版本必須是 操作員支援的其中一個版本。 如需詳細資訊,請參閱 Red Hat 檔中的版本相容性和支援

清查伺服器容量

記錄目前生產伺服器的硬體(記憶體、CPU、磁碟),以及平均和尖峰要求計數和資源使用率。 不論您選擇的移轉路徑為何,您都需要此資訊。 下列各層面及更多方面都受益於伺服器容量的詳細清查。

  • 協助引導選取節點集區中 VM 的大小。
  • 若要瞭解容器要使用的記憶體數量。
  • 若要知道容器需要多少 CPU 共用。

它可以調整 Azure Red Hat OpenShift 中的節點集區大小。 如需詳細資訊,請參閱 Red Hat 檔中的調整叢集大小--Microsoft Azure

清查所有秘密

在 Azure 金鑰保存庫 等「設定即服務」技術出現之前,沒有定義完善的「秘密」概念。 相反地,您有一組不同的組態設定,實際上可作為我們現在所謂的「秘密」功能。 透過 JBoss EAP 等應用程式伺服器,這些秘密位於許多不同的組態檔和組態存放區中。 檢查生產伺服器上的所有屬性和組態檔是否有任何秘密和密碼。 請務必檢查應用程式中的 custom-config.xmljboss-web.xml組態檔。 您也可以在應用程式內找到包含密碼或認證的組態檔。 如需詳細資訊,請參閱 Azure 金鑰保存庫 基本概念

一旦您有紮實的秘密清查,請參閱 EAP 操作員檔,以取得秘密的相關文件。 如需詳細資訊,請參閱 在 Red Hat 檔中建立秘密

清查所有憑證

記錄用於公用 SSL 端點的所有憑證。 您可以執行下列命令來檢視生產伺服器上的所有憑證:

keytool -list -v -keystore <path to keystore>

一旦您有穩固的憑證清查,您就可以在 Azure Red Hat OpenShift 中加以設定。 如需詳細資訊,請參閱 Red Hat 檔中 OpenShift Container Platform(replace) 中的 TLS 組態。

驗證支援的 Java 版本是否正常運作

JBoss EAP 到 Azure Red Hat OpenShift 的所有移轉路徑都需要特定的 Java 版本,每個路徑各有不同。 您必須驗證應用程式是否能夠使用該支援的版本正確執行。

注意

如果您的目前伺服器是在不支援的 JDK 上執行,此驗證特別重要(例如 Oracle JDK 或 IBM OpenJ9)。

若要取得目前的 Java 版本,請登入您的生產伺服器,然後執行下列命令:

java -version

清查 JNDI 資源

清查所有 JNDI 資源。 例如,資料庫之類的數據源可能會有相關聯的 JNDI 名稱,可讓 JPA 正確地將 的 EntityManager 實例系結至特定資料庫。 如需 JNDI 資源和資料庫的詳細資訊,請參閱 Red Hat 檔中的數據源管理 。 其他 JNDI 相關資源,例如 ActiveMQ Artemis 訊息代理程式,可能需要移轉或重新設定。 如需 ActiveMQ Artemis 設定的詳細資訊,請參閱 Red Hat 檔中的設定傳訊

判斷是否使用會話複寫

如果您的應用程式依賴會話複寫,且包含或不含 Infinispan,您有三個選項:

  • Infinispan 在 Azure 虛擬機中運作良好,但如果您使用提供高可用性功能的配置檔,請注意 JGroups 設定 。 判斷您的系統是以受控網域或獨立伺服器的形式運作。
    • 如果位於受控網域中,ha 或 full-ha 配置文件會處理 JGroups。
    • 如果位於獨立伺服器中, 則獨立-ha.xmlstandalone-full-ha.xml 組態檔會處理 JGroups。
    • Microsoft Azure 不支援以 UDP 多播為基礎的 JGroups 探索通訊協定。 如需詳細資訊,請參閱 Red Hat 檔中的<在 Microsoft Azure 中使用 JBoss EAP 高可用性>。
  • 重構您的應用程式以使用資料庫進行會話管理。
  • 重構您的應用程式,以將會話外部化至 Azure Redis 服務。 如需詳細資訊,請參閱 Azure Cache for Redis

對於所有這些選項,最好掌握 JBoss EAP 如何執行 HTTP 工作階段狀態複寫。 如需詳細資訊,請參閱 Red Hat 檔中關於 HTTP 工作階段複 寫。

檔數據源

如果您的應用程式使用任何資料庫,您需要擷取下列資訊:

  • 數據源名稱為何?
  • 什麼是聯機集區設定?
  • 哪裡可以找到 JDBC 驅動程式 JAR 檔案?

如需 JBoss EAP 中 JDBC 驅動程式的詳細資訊,請參閱 Red Hat 檔中的數據源管理

判斷是否已自定義 JBoss EAP

判斷已進行下列哪一項自定義,並擷取已完成的工作。

  • 啟動文稿是否已變更? 這類腳本包括 主機eap_env獨立網域
  • 是否有任何特定參數傳遞至 JVM?
  • 是否有 JAR 新增至伺服器類別路徑?

必須在 Azure Red Hat OpenShift 上執行的容器映射中擷取這些自定義。 如需詳細資訊,請參閱 Red Hat 檔中的設定適用於 Java 應用程式的 JBoss EAP for OpenShift 映像。

判斷是否需要連線至內部部署

如果您的應用程式需要存取任何內部部署服務,您必須布建其中一個 Azure 的連線服務。 如需詳細資訊,請參閱 選擇將內部部署網路連線至 Azure 的解決方案。 或者,您必須重構應用程式,才能使用內部部署資源公開的公開可用 API。

判斷 Java 訊息服務 (JMS) 佇列或主題是否正在使用中

如果您的應用程式使用 JMS 佇列或主題,您可能會想要將它們移轉至外部裝載的 JMS 伺服器。 Azure 服務匯流排 和進階消息佇列通訊協議,對於使用 JMS 的通訊協定而言,是絕佳的移轉策略。 如需詳細資訊,請參閱搭配 Azure 服務匯流排 和AMQP 1.0使用 JMS。

如果已設定 JMS 永續性存放區,您必須擷取其設定,並在移轉之後套用它。

如需詳細資訊,請參閱 Red Hat 檔中的設定傳訊

判斷您是否使用自己的自定義建立共用Java EE 連結庫

如果您使用共用 Java EE 連結函式庫功能,您有兩個選項:

  • 重構應用程式程式代碼以移除連結庫上的所有相依性,並改為將功能直接併入您的應用程式。
  • 將連結庫新增至伺服器類別路徑。

您可以使用與判斷 JBoss EAP 是否已自定義一節中所述的相同技術來處理這些連結庫。

判斷您的應用程式是否包含 OS 特定程式代碼

如果您的應用程式包含主機 OS 上具有相依性的任何程式代碼,則必須重構它以移除這些相依性。 例如,您可能需要以 或 \ 取代檔案系統路徑File.Separator中的任何 使用 /Paths.get

Azure Red Hat OpenShift 會在 OpenShift 4 上使用 Red Hat Enterprise Linux CoreOS (RHCOS) 作為所有控制平面和背景工作節點的操作系統來執行。 任何 OS 特定程式代碼都必須與 RHCOS 相容。

判斷您的應用程式是否由多個 WAR 組成

如果您的應用程式是由多個 WAR 所組成,您應該將每個 WAR 視為個別的應用程式,並針對每個 WAR 進行本指南。

判斷您的應用程式是否封裝為 EAR

如果您的應用程式封裝為 EAR 檔案,請務必擷取其設定。

識別在生產伺服器上執行的所有外部進程和精靈

如果您有在應用程式伺服器外部執行的任何進程,例如監視精靈,您必須將其消除或移轉至別處。

考慮負載平衡需求

考慮負載平衡的最佳方式是使用應用程式閘道整合。 如需詳細資訊,請參閱什麼是 Azure 應用程式閘道?

遷移

本節中的步驟假設您的分析已引導您決定使用預先建置的 Azure Marketplace 供應專案。

布建供應專案

若要在 Azure 入口網站 中開啟供應專案,請參閱 Azure Red Hat OpenShift 上的 JBoss EAP。 選取 [ 建立],然後遵循供應專案中的指示。

移轉您的應用程式

供應項目支援Source-to-Image (S2I) 程式,以在 JBoss EAP for OpenShift 映像上建置和執行 Java 應用程式。 Red Hat 有一個範例,示範如果您想要稍後自行部署,如何手動執行。 如需詳細資訊,請參閱 第 2 章。在 Red Hat 檔中的 JBoss EAP for OpenShift 映射 上建置並執行 Java 應用程式。

移轉後

在您達到您在移轉前步驟中 定義的移 轉目標之後,請執行一些端對端驗收測試,以確認一切如預期般運作。 如需一些潛在的移轉后增強功能的相關信息,請參閱下列文章: