將 JBoss EAP 應用程式移轉至 Azure VM 上的 JBoss EAP
本指南說明當您想要移轉現有的 JBoss EAP 應用程式以在 Azure VM 中的 JBoss EAP 上執行時,應該注意的事項。
移轉前
為確保成功移轉,在開始之前,請先完成下列各節中所述的評量和清查步驟。
定義「移轉完成」所代表的意義
本指南和對應的 Azure Marketplace 供應專案是加速將 JBoss EAP 工作負載移轉至 Azure 的起點。 請務必定義移轉工作的範圍。 例如,您是否執行從現有的基礎結構到 Azure 虛擬機器 的嚴格「隨即轉移」? 若是如此,您可能會在移轉時嘗試在一些「隨即提升和改進」中工作。
最好盡可能接近純粹的「隨即轉移」,並考慮本指南中詳述的必要變更。 定義「移轉完成」所代表的意義,讓您知道何時達到此里程碑。 當您到達「移轉完成」時,可以建立虛擬機的快照集,如建立虛擬硬碟的快照集中所述。 在確認您已成功從快照集還原之後,執行改進功能會更安全。 如此一來,您就可以繼續,而不必擔心失去到目前為止所取得的移轉進度。
判斷預先建置的 Azure Marketplace 供應專案是否為良好的起點
Red Hat 和 Microsoft已合作,將一組 Azure 解決方案範本帶入 Azure Marketplace,以提供穩固的起點以遷移至 Azure。 您可以在 Azure 上的 Azure 虛擬機器 Red Hat JBoss EAP 的 JBoss EAP 一節中看到供應項目清單。
若要了解預先建置的 Azure Marketplace 供應專案,請參閱快速入門:在 Azure 虛擬機器 (VM) 上部署 JBoss EAP 叢集。
如果現有的供應專案都不是很好的起點,您必須使用 Azure 虛擬機器 中可用的資源來重現部署。 如需相關資訊,請參閱何謂 IaaS?
判斷 JBoss EAP 版本是否相容
您現有的 JBoss EAP 版本必須與基礎結構即服務 (IaaS) 供應專案中的版本相容。 供應專案的 Azure 入口網站 頁面會顯示可用的 JBoss EAP 版本。 如需詳細資訊,請參閱 Azure 入口網站 上 VM 上的 JBoss EAP 叢集供應專案。 如果您現有的 JBoss EAP 版本與供應專案中可用的版本不相容,您必須使用 Azure IaaS 資源手動重現部署。 如需相關資訊,請參閱何謂 IaaS?
確定您擁有必要的授權
使用預先建置的 Azure Marketplace 供應專案時,您必須擁有來自 Red Hat 的所有 JBoss EAP 伺服器目前的授權。 將它們移至 Azure,您可以選擇下列部署選項,以符合您的需求:
- 在 Red Hat Enterprise Linux 隨用隨付虛擬機上部署。 此選項稱為 PAYG。
- 透過 Red Hat 雲端存取計畫,將 Red Hat JBoss EAP 和 Red Hat Enterprise Linux 訂用帳戶移至 Azure。 此選項稱為 BYOS。
在這兩個選項中,針對授權可移植性,系統會要求您從 Red Hat 取得 集區識別碼 。 嘗試供應專案之前,請確定您有此標識符。
預先建置的 Azure Marketplace 供應專案包含 Red Hat Satellite 的授權管理支援。 如需 Red Hat Satellite 的概觀,請參閱 Red Hat Satellite。
注意
如果您沒有 EAP 權利,您可以透過個人版 Red Hat 開發人員訂用帳戶註冊免費的開發人員訂用帳戶。 將帳戶詳細數據儲存在預先建置的 Azure Marketplace 供應專案中作為 RHSM 使用者名稱和 RHSM 密碼 使用。
在快速入門:在 Azure 虛擬機器 (VM) 上部署 JBoss EAP 叢集一節中會說明探索集區標識符的步驟。
清查伺服器容量
記錄目前生產伺服器的硬體(記憶體、CPU、磁碟),以及平均和尖峰要求計數和資源使用率。 無論您選擇哪一種遷移路徑,您都需要這項資訊。 例如,協助引導選取節點集區中 VM 的大小、容器要使用的記憶體數量,以及容器需要多少 CPU 共用。
它可以調整 AKS 中的節點集區大小。 若要瞭解如何,請參閱 調整 Azure Kubernetes Service (AKS) 中的節點集區大小。
清查所有秘密
檢查生產伺服器或伺服器上的所有屬性和組態檔是否有任何秘密和密碼。 請務必檢查 您 WAR 中的jboss-web.xml 檔案。 您也可以在應用程式內找到包含密碼或認證的組態檔。
請考慮將這些秘密儲存在 Azure KeyVault 中。 如需詳細資訊,請參閱 Azure 金鑰保存庫 基本概念。
清查所有憑證
記載所有用於公用 SSL 端點的憑證。 您可以執行下列命令來檢視實際執行伺服器上的所有憑證:
keytool -list -v -keystore <path to keystore>
驗證支援的 Java 版本是否正常運作
Azure VM 上的 JBoss EAP 需要支援的 Java 版本。 如需要使用的 JDK 版本指引,請參閱 Red Hat 檔中支持的 設定。
注意
如果您的目前伺服器是在不支援的 JDK 上執行,此驗證特別重要(例如 Oracle JDK 或 IBM OpenJ9)。
若要取得目前的 Java 版本,請登入您的生產伺服器,然後執行下列命令:
java -version
清查外部資源
外部資源,例如數據源、JMS 訊息代理程式,以及其他資源會透過 Java 命名和目錄介面 (JNDI) 插入。 某些這類資源可能需要移轉或重新設定。
在應用程式內
檢查 WEB-INF/jboss-web.xml 和/或 WEB-INF/web.xml 檔案。 尋找 <Resource>
元素內的 <Context>
元素。
資料來源
資料來源是 JNDI 資源, type
屬性設定為 javax.sql.DataSource
。 針對每個數據源,記載下列資訊:
- 數據源名稱為何?
- 連線集區設定是什麼?
- 哪裡可以找到 JDBC 驅動程式 JAR 檔案?
如需詳細資訊,請參閱 JBoss EAP 檔中的關於 JBoss EAP 數據源 。
所有其他外部資源
在本指南中記載每個可能的外部相依性並不可行。 您的小組有責任確認您可以在移轉後滿足應用程式的每個外部相依性。
判斷是否要使用檔案系統及如何使用
應用程式伺服器上的檔案系統使用方式都需要重新設定,或在某些情況下,架構變更。 JBoss EAP 模組或您的應用程式程式代碼可能會使用檔案系統。 您可能會發現下列各節所述的部分或所有案例。
唯讀靜態內容
如果應用程式目前提供靜態內容,則必須為其提供替代位置。 您可能想要考慮將靜態內容移至 Azure Blob 儲存體,並新增 Azure CDN 以進行全球閃電快速下載。 如需詳細資訊,請參閱 Azure 儲存體中的靜態網站裝載和快速入門:整合 Azure 儲存體帳戶與 Azure CDN。
動態發佈的靜態內容
如果您的應用程式允許您應用程式上傳/產生的靜態內容,但在建立後不可變,則您可以使用上述的 Azure Blob 儲存體和 CDN,搭配 Azure 函式來處理上傳和 CDN 重新整理。 我們已在使用 Azure Functions 上傳和透過 CDN 預先載入靜態內容中提供範例實作供您使用。
判斷是否需要連線至內部部署環境
如果您的應用程式需要存取您的任何內部部署服務,您必須佈建其中一個 Azure 連線能力服務。 如需詳細資訊,請參閱將內部部署網路連線至 Azure。 或者,您必須重構應用程式,以使用內部部署資源所顯示的公開可用 API。
判斷 Java 訊息服務 (JMS) 佇列或主題是否正在使用中
如果應用程式使用 JMS 佇列或主題,您就必須將這些佇列或主題遷移到裝載在外部的 JMS 伺服器。 對於這些使用 JMS 的佇列或主題來說,Azure 服務匯流排和進階訊息佇列通訊協定 (AMQP) 會是絕佳的移轉策略。 如需詳細資訊,請參閱搭配 Azure 服務匯流排 標準和AMQP 1.0使用Java Message Service 1.1。
如果您已設定 JMS 持續性存放區,就必須在移轉之後擷取存放區的設定並加以套用。
判斷 JCA 連接器是否正在使用中
如果您的應用程式使用 JCA 連接器,請確認您可以在 JBoss EAP 上使用 JCA 連接器。 如果您可以在 JBoss EAP 上使用 JCA 連接器,則必須將 JAR 新增至伺服器類別路徑,並將必要的組態檔放在 JBoss EAP 伺服器目錄中的正確位置。
判斷 JAAS 是否正在使用中
如果您的應用程式使用 JAAS,您必須擷取 JAAS 的設定方式。 如果使用資料庫,您可以將它轉換成 JBoss EAP 上的 JAAS 網域。 如果是自定義實作,您必須驗證它是否可以在 JBoss EAP 上使用。
判斷應用程式是否由多個 WAR 組成
如果應用程式由多個 WAR 組成,則應該將這些 WAR 視為個別應用程式,並瀏覽本指南以了解這些 WAR。
判斷應用程式是否封裝為 EAR
如果您的應用程式封裝為 EAR 檔案,請務必檢查 application.xml 檔案並擷取組態。
注意
如果您想要能夠獨立調整每個 Web 應用程式,以便更妥善地使用 Azure VM 資源,您應該將 EAR 分成個別的 Web 應用程式。
識別在生產伺服器上執行的所有外部處理序和精靈
如果您有任何在應用程式伺服器外部執行的處理序 (例如監視精靈),則必須加以消除或將其遷移到其他位置。
遷移
在 Azure 虛擬機器 供應項目上選取 JBoss EAP
下列各節所述的供應專案適用於 Azure 虛擬機器 上的 JBoss EAP。
在部署供應項目期間,系統會要求您為 JBoss EAP 伺服器節點選擇虛擬機大小。 請務必在您選擇的 VM 大小中考慮重設大小的所有層面(記憶體、處理器、磁碟)。 如需詳細資訊,請參閱 雲端服務 (傳統)的大小。
Azure 虛擬機器擴展集 上的 JBoss EAP
虛擬機器擴展集 為任何大小的工作負載提供負載平衡且可高度調整的虛擬機群組。 如需詳細資訊,請參閱什麼是 虛擬機器擴展集?
叢集 虛擬機器 上的 JBoss EAP
如果您想要的話,使用 JBoss EAP 叢集機制的傳統 VM 叢集適合使用此功能的部署的隨即轉移。 如需詳細資訊,請參閱 JBoss EAP 檔中的 Web 應用程式中 的叢集。 預先建置的 Azure Marketplace 供應專案包含網域模式的支援。 如需 EAP 網域和網域模式的概觀,請參閱 網域管理。
JBoss EAP 單一伺服器
如果您只需要單一伺服器、可能用於測試和評估,或針對輕量型工作負載,則有一個供應專案可在單一 VM 上部署 JBoss EAP 單一伺服器。
Red Hat Migration Toolkit for Apps
Red Hat Migration Toolkit for Applications 是 Visual Studio Code 的免費擴充功能。 此延伸模組會分析您的應用程式程式代碼和組態,以提供從內部部署移轉至雲端的建議。 如需詳細資訊,請參閱 移轉工具組 for Applications 概觀。
本指南的內容可協助您解決移轉旅程的其他元件,例如選擇正確的 VM 大小,以及將會話狀態外部化。
移轉後
在您達到您在移轉前步驟中 定義的移 轉目標之後,請執行一些端對端驗收測試,以確認一切如預期般運作。 如需一些潛在的移轉后增強功能的相關信息,請參閱下列文章:
使用 Azure 儲存體 來提供掛接至虛擬機的靜態內容。 如需詳細資訊,請參閱 在 Azure DevTest Labs 中連結或中斷鏈接實驗室虛擬機的數據磁碟。
使用 Azure DevOps 將應用程式部署至已移轉的 JBoss EAP 叢集。 如需詳細資訊,請參閱 開始使用 Azure DevOps 檔。
使用進階的負載平衡服務來增強網路拓撲。 如需詳細資訊,請參閱 在 Azure 中使用負載平衡服務。
使用 Azure 受控識別來管理秘密,並指派角色型存取權給 Azure 資源。 如需詳細資訊,請參閱什麼是 Azure 資源受控識別?
整合 Java EE 驗證和授權與 Microsoft Entra 識別碼。 如需詳細資訊,請參閱 整合 Microsoft Entra ID 與應用程式入門指南。
使用 Azure Key Vault 來儲存作為「秘密」的任何資訊。 如需詳細資訊,請參閱 Azure 金鑰保存庫 基本概念。