將 WebLogic Server 應用程式遷移至 Azure 虛擬機器
本指南說明當您想要遷移現有的 WebLogic 應用程式,使其在 Azure 虛擬機器上執行時,所應該注意的事項。 如需 Azure Marketplace 中可用 WebLogic Server 解決方案的概觀,請參閱在 Azure 虛擬機器 上執行 Oracle WebLogic Server 的解決方案有哪些?
移轉前
為確保成功移轉,在開始之前,請先完成下列各節中所述的評量和清查步驟。
定義要達到什麼條件才表示「移轉完成」
本指南和對應的 Azure Marketplace 供應項目可作為起點,讓您更快地將 WebLogic Server 工作負載移轉至 Azure。 請務必要定義移轉工作的範圍。 例如,是否要嚴格地從現有基礎結構「隨即轉移」到 Azure 虛擬機器? 如果是,您可能會想要在遷移時實現「轉移並改善」。
請最好盡可能地遵守純粹的「隨即轉移」模式,並考慮依照本指南中的詳細說明進行所需的變更。 定義要達到什麼條件才表示「移轉完成」,以便知曉自己是否已達到此里程碑。 當您達到「移轉完成」這一步時,便可建立虛擬機器的快照集,如建立快照集所述。 確認您可以從快照集成功還原之後,您可以執行改善,而不必擔心遺失到目前為止已達成的移轉進度。
確定目標是您移轉工作的適當目標
成功將 WLS 應用程式移轉至 Azure 的第一個步驟是選取最適當的移轉目標。 WLS 在 Azure 虛擬機器上執行良好, (VM) 或Azure Kubernetes Service (AKS) 。 VM 目標是最簡單的選擇,因為它最類似于內部部署。 虛擬機器的系統管理與部署體驗非常類似您擁有內部部署的內容。 這種容易取捨是經濟成本。 一般而言,相較于 AKS,以 VM 為基礎的解決方案每分鐘成本較高。 雖然以 AKS 為基礎的解決方案執行成本較低,但您必須限制應用程式以符合 AKS 的需求。 如果最小化變更是移轉工作最重要的因素,請考慮 VM 型移轉。 在此情況下,請參閱將 WebLogic 應用程式遷移至 Azure 虛擬機器。 如果您可以容許在 Kubernetes 內執行應用程式以降低執行時間成本,請考慮使用 AKS 型移轉。 在此情況下,請繼續將 WebLogic Server 應用程式移轉至Azure Kubernetes Service。
判斷預先建置的Azure Marketplace供應專案是否為良好的起點
Oracle 和 Microsoft 已合作將一組 Azure 解決方案範本帶入Azure Marketplace,以提供穩固的起點來遷移至 Azure。 請參閱 Oracle Fusion Middleware 文件以取得供應項目清單,並選擇最符合您現有部署的供應項目。 您可以查看 Azure 上的 Oracle WebLogic Server 是什麼?概觀一文中的供應項目清單
如果沒有任何現有的供應專案是不錯的起點,您必須使用 Azure 虛擬機器資源來重現部署。 您可以在手動在 Azure 虛擬機器上安裝 Oracle WebLogic Server中找到逐步指引。 如需詳細資訊,請參閱 什麼是 IaaS?
判斷 WebLogic 版本是否相容
您現有的 WebLogic 版本必須與 IaaS 供應項目中的版本相容。 若要查看 WebLogic 12.2.1.3 版的供應專案,請查詢 Azure Marketplace Oracle WebLogic 12.2.1.3。 如果您現有的 WebLogic 版本與該版本不相容,您必須使用 Azure IaaS 資源手動重現部署。 如需詳細資訊,請參閱 Azure 文件。
清查伺服器容量
記錄目前生產伺服器的硬體 (記憶體、CPU、磁碟),以及平均和尖峰的要求計數與資源使用率。 這項資訊必須告知所選擇的 VM 大小。 如需詳細資訊,請參閱雲端服務的大小。
清查所有秘密
在「設定即服務」技術 (例如 Azure Key Vault) 問世之前,「秘密」並沒有明確定義的概念。 相反地,您所擁有的是一組完全不同的組態設定,其作用實際上等同於我們現在所謂的「秘密」。 在 WebLogic Server 等應用程式伺服器中,這些秘密會放在許多不同的設定檔和設定存放區中。 檢查實際執行伺服器上的所有屬性和設定檔是否有任何秘密和密碼。 請務必檢查 WAR 中的 weblogic.xml。 您也可以在應用程式內找到包含密碼或認證的設定檔。 如需詳細資訊,請參閱 Azure Key Vault 基本概念。
清查所有憑證
記載所有用於公用 SSL 端點的憑證。 您可以執行下列命令來檢視實際執行伺服器上的所有憑證:
keytool -list -v -keystore <path to keystore>
驗證支援的 Java 版本是否能正常運作
所有從 WebLogic 移轉至 Azure 的路徑都需要特定的 Java 版本,確切版本會因路徑而異。 您必須驗證應用程式是否能夠使用該支援版本來正確執行。
注意
如果目前的伺服器是在不支援的 JDK (例如 Oracle JDK 或 IBM OpenJ9) 上執行,這項驗證就特別重要。
若要取得目前的 Java 版本,請登入您的實際執行伺服器,然後執行下列命令:
java -version
注意
移轉至 Azure 虛擬機器上的 WLS 時,特定 JAVA 版本的需求取決於虛擬機器上預先安裝的 JAVA。 移轉至 AKS 上的 WLS 時,特定 JAVA 版本取決於所選的容器映射。 有各種不同的選擇,但所有選項都使用 Oracle JDK。
清查 JNDI 資源
請清查所有 JNDI 資源。 例如,資料庫等資料來源可能會有相關聯的 JNDI 名稱,可讓 JPA 正確地將 EntityManager
的執行個體繫結至特定資料庫。 如需 JNDI 資源和資料庫的詳細資訊,請參閱 Oracle 文件中的 WebLogic Server 資料來源。 其他與 JNDI 相關的資源 (例如 JMS 訊息代理程式) 則可能需要進行移轉或重新設定。 如需 JMS 設定的詳細資訊,請參閱 Oracle WebLogic Server 12.2.1.4.0。
檢查您的網域設定
WebLogic Server 中的主要設定單位是網域。 因此,config.xml 檔案會包含許多您必須仔細考慮是否要移轉的設定。 此檔案會包含子目錄所儲存其他 XML 檔案的參考。 Oracle 建議您一般應使用管理主控台來設定 WebLogic Server 的可管理物件和服務,並允許 WebLogic Server 維護 config.xml 檔案。 如需詳細資訊,請參閱網域設定檔。
在應用程式內
檢查 WEB-INF/weblogic.xml 檔案和/或 WEB-INF/web.xml 檔案。
判斷是否要使用工作階段複寫
如果應用程式仰賴工作階段複寫,則不論其是否有 Oracle Coherence*Web,您都有三個選項:
- Coherence*Web 可與 Azure 虛擬機器中的 WebLogic Server 一起執行,但您必須在佈建供應項目之後手動設定此選項。 如果您使用獨立的 Coherence,則其也可以在 Azure 虛擬機器中執行,但您必須在佈建供應項目之後手動設定此選項。
- 重構應用程式,使其使用資料庫來管理工作階段。
- 重構應用程式,以將工作階段外部化到 Azure Redis 服務。 如需詳細資訊,請參閱 Azure Cache for Redis。
針對上述所有選項,請最好先了解 WebLogic 如何進行 HTTP 工作階段狀態複寫。 如需詳細資訊,請參閱 Oracle 文件中的 HTTP 工作階段狀態複寫。
記錄資料來源
如果應用程式使用任何資料庫,則必須擷取下列資訊:
- 資料來源名稱是什麼?
- 連線集區設定是什麼?
- 何處可以找到 JDBC 驅動程式 JAR 檔案?
如需 WebLogic 中的 JDBC 驅動程式詳細資訊,請參閱搭配使用 JDBC 驅動程式與 WebLogic Server。
判斷是否已自訂 WebLogic
判斷已進行下列哪幾項自訂,並擷取已完成的自訂。
- 啟動指令碼是否已變更? 這類指令碼包括 setDomainEnv、commEnv、startWebLogic 和 stopWebLogic。
- 是否有任何特定參數傳遞至 JVM?
- 是否有 JAR 新增至伺服器類別路徑?
判斷是否要使用透過 REST 管理
如果應用程式的生命週期包括使用「透過 REST 管理」,則您必須擷取用來存取 REST API 的連接埠,並判斷其驗證和公開的方式。 在移轉之後,您必須確定這些連接埠和驗證機制同樣會公開,以便讓應用程式生命週期能夠以和移轉前類似的方式來運作。 如需詳細資訊,請參閱使用 RESTful 管理服務來管理 Oracle WebLogic Server。
判斷是否需要連線至內部部署環境
如果您的應用程式需要存取您的任何內部部署服務,您必須佈建其中一個 Azure 連線能力服務。 如需詳細資訊,請參閱選擇將內部部署網路連線到 Azure 的解決方案。 或者,您必須重構應用程式,以使用內部部署資源所顯示的公開可用 API。
判斷 JAVA 訊息服務 (JMS) 佇列或主題是否正在使用中
如果應用程式使用 JMS 佇列或主題,您就必須將這些佇列或主題遷移到裝載在外部的 JMS 伺服器。 對於這些使用 JMS 的佇列或主題來說,Azure 服務匯流排和進階訊息佇列通訊協定會是絕佳的移轉策略。 如需詳細資訊,請參閱搭配使用 JMS 與 Azure 服務匯流排 和 AMQP 1.0。
如果您已設定 JMS 持續性存放區,就必須在移轉之後擷取存放區的設定並加以套用。
如果您使用 Oracle Message Broker,您可以將此軟體移轉至 Azure 虛擬機器,並依原樣使用它。
判斷您是否會使用自己建立的自訂共用 Java EE 程式庫
如果您使用共用 Java EE 程式庫功能,則會有兩個選項:
- 重構應用程式的程式碼以移除程式庫上的所有相依性,並改為將功能直接併入應用程式中。
- 將程式庫新增至伺服器類別路徑。
判斷是否要使用 OSGi 組合
如果您使用了新增至 WebLogic Server 的 OSGi 組合,則必須將對等的 JAR 檔案直接新增至 Web 應用程式。
判斷您的應用程式是否包含作業系統特定的程式碼
如果您的應用程式包含任何在主機作業系統上具有相依性的程式碼,則您必須重構它以移除這些相依性。 例如,您可能需要將檔案系統路徑中任何使用的 /
或 \
取代為 File.Separator
或 Paths.get
。
判斷 Oracle 服務匯流排是否正在使用中
如果應用程式使用 Oracle 服務匯流排 (OSB),則必須擷取 OSB 的設定方式。 如需詳細資訊,請參閱關於 Oracle 服務匯流排安裝。
判斷應用程式是否由多個 WAR 組成
如果應用程式由多個 WAR 組成,則應該將這些 WAR 視為個別應用程式,並瀏覽本指南以了解這些 WAR。
判斷應用程式是否封裝為 EAR
如果應用程式封裝為 EAR 檔案,請務必檢查 application.xml 和 weblogic-application.xml 檔案,並擷取其設定。
識別在生產伺服器上執行的所有外部處理序和精靈
如果您有任何在應用程式伺服器外部執行的處理序 (例如監視精靈),則必須加以消除或將其遷移到其他位置。
判斷是否要使用 WebLogic 指令碼工具 (WLST)
如果您目前使用 WLST 來執行部署,則必須評估其效果。 如果 WLST 會在部署時變更應用程式的任何 (執行階段) 參數,您就必須確定在移轉之後,此行為仍可在測試應用程式時繼續運作。
判斷是否要使用檔案系統及如何使用
在持續性、啟動和關機等方面,VM 檔案系統的運作方式與內部部署的檔案系統一樣。 儘管如此,仍請務必留意檔案系統的需求,並確保 VM 具有足夠的儲存體大小和效能。
唯讀靜態內容
如果應用程式目前提供靜態內容,則必須為其提供替代位置。 您可能想要考慮將靜態內容移至 Azure Blob 儲存體,並新增 Azure CDN,以在全球進行閃電般快速下載。 如需詳細資訊,請參閱 Azure 儲存體中的靜態網站裝載和快速入門:整合 Azure 儲存體帳戶與 Azure CDN。
動態發佈的靜態內容
如果您的應用程式允許您應用程式上傳/產生的靜態內容,但在建立後無法變動,則您可以使用上述的 Azure Blob 儲存體和 Azure 函數,搭配 Azure 函數來處理上傳和 CDN 重新整理。 我們已在使用 Azure Functions 上傳和透過 CDN 預先載入靜態內容中提供範例實作供您使用。
判斷網路拓撲
目前一組Azure Marketplace供應專案是移轉的起點。 如果供應項目未涵蓋所需遷移架構的各個層面,您就必須擷取現有部署的網路拓撲並於 Azure 中加以重現,即使您已使用其中一個解決方案範本建立起基本供應項目也是一樣。
這個主題非常廣泛,但下列參考可以對您的移轉工作提供一些方向:
- 此參考會列舉與將網路拓撲移轉至 Azure: 快速追蹤部署指南相關的高階主題。
- 此參考說明有關叢集的重要考慮,這會影響網路拓撲: WebLogic Server 叢集。
- 因為資料來源是 WebLogic 系統中的個別伺服器,所以在分析網路拓撲時必須考慮到這些資料來源。 WebLogic Server 資料來源。
- 傳訊來源也是個別的伺服器。 WebLogic Server 傳訊
- 負載平衡是一項基本需求。 此參考涵蓋負載平衡的 WebLogic 伺服器端: 叢集中的負載平衡。
考慮 JCA 配接器和資源配接器的使用
如果現有應用程式使用 JCA 配接器和/或資源配接器來連線到其他企業系統,請確定這些成品的設定會套用至在 Azure 虛擬機器中執行的 WebLogic Server。 如需詳細資訊,請參閱建立和設定資源配接器
考慮使用自訂安全性提供者和 JAAS
如果應用程式使用 JAAS,則必須確定您已正確地遷移安全性提供者的設定。 如需詳細資訊,請參閱 Oracle 文件中的關於設定 WebLogic 安全性提供者。
判斷是否要使用 WebLogic 叢集
最有可能的情況是,您已在多部 WebLogic Server 上部署應用程式以實現高可用性。 您可以將這些叢集直接從內部部署安裝遷移至在 Azure 虛擬機器中執行的 WebLogic。 如需詳細資訊,請參閱 Oracle 文件中的網域設定檔。
考慮負載平衡需求
負載平衡是將 Oracle WebLogic Server 叢集遷移至 Azure 的重要部分。 最簡單的解決方式是使用 Oracle WebLogic Server 叢集的 Azure Marketplace 供應項目中提供的內建 Azure 應用程式閘道支援。 如需本主題的教學課程,請參閱教學課程:使用 Azure 應用程式閘道作為負載平衡器,將 WebLogic Server 叢集遷移至 Azure。
如需與其他 Azure 負載平衡解決方案相較之 Azure 應用程式閘道功能的摘要,請參閱 Azure 中負載平衡選項的概觀。
判斷是否要使用 Java EE 應用程式用戶端功能
如果應用程式使用 Java EE 應用程式用戶端功能,則在遷移至 Azure 虛擬機器之後,其應該會繼續原封不動地運作。 如需詳細資訊,請參閱使用 Java EE 用戶端應用程式模組。
遷移
選取 WebLogic on Azure Virtual Machines 供應項目
下面是適用於 WebLogic on Azure Virtual Machines 的供應項目。
在部署供應專案期間,系統會要求您選擇 WebLogic 伺服器節點的虛擬機器大小。 在選擇 VM 大小時,請務必考慮其所有層面 (記憶體、處理器、磁碟)。 如需詳細資訊,請參閱 Azure 虛擬機器大小調整文件
不具管理伺服器的 WebLogic Server 單一節點
此供應項目會建立單一 VM 並在其上安裝 WebLogic,但不會設定任何網域,適合網域設定自訂程度極高的案例。
具管理伺服器的 WebLogic Server 單一節點
此供應項目會佈建單一 VM 並在其上安裝 WebLogic Server。 其會建立網域並啟動管理伺服器。
WebLogic Server N 節點叢集
此供應項目會建立具有高度可用性的 WebLogic Server VM 叢集。
WebLogic Server N 節點動態叢集
此供應項目會建立具有高度可用性且可擴充的 WebLogic Server VM 動態叢集
佈建供應項目
在選取好要作為起點的供應項目之後,請遵循供應項目文件中的指示以佈建該供應項目。 請務必選擇符合您現有網域名稱的網域名稱。 您甚至可以讓網域密碼與您現有的網域密碼相符。
遷移網域
在佈建好供應項目之後,您可以檢查網域設定,並遵循本指引來深入了解如何遷移網域。
讓資料庫連線
在遷移網域後,您可以遵循供應項目文件中的指示來讓資料庫連線。 這些指示可協助您考慮涉及的任何資料庫秘密和存取字串。
考慮金鑰儲存區
您必須考慮到應用程式所使用的 SSL 金鑰儲存區要如何移轉。 如需詳細資訊,請參閱設定金鑰儲存區。
讓 JMS 來源連線
線上資料庫之後,您可以設定 JMS。 如需詳細資訊,請參閱 WebLogic 檔中的 Fusion 中介軟體管理 Oracle WebLogic Server 的 JMS 資源 。
考慮驗證和授權
大部分的應用程式都有某種類型的驗證和授權。 如果您使用 LDAP 進行驗證,您可以使用安全 LDAP 設定 Azure Active Directory 網域服務 (Azure AD DS) ,並在 WebLogic Server 中設定 LDAP 連線。 如需詳細資訊,請參閱建立和設定 Azure Active Directory 網域服務受控網域和設定 Azure Active Directory 網域服務受控網域的安全 LDAP。
考慮記錄
使用 Oracle WebLogic Server Marketplace 解決方案範本所提供的 Azure 上的 Elastic 整合。 這種方法是用來考慮記錄的最簡單方式。 您可以在概觀文章中看到供應專案清單:什麼是在 Azure 虛擬機器上執行 Oracle WebLogic Server 的解決方案?下列提供設定彈性的完整教學課程:
- 在系統管理員供應專案中將 Oracle WebLogic Server 記錄到 Elasticsearch 和 Kibana
- 將 Oracle WebLogic Server 記錄到叢集中的 Elasticsearch 和 Kibana 供應專案
- 將 Oracle WebLogic Server 記錄到動態叢集中的 Elasticsearch 和 Kibana 供應專案
如果彈性整合不適當,則當您移轉網域時,應該接管現有的記錄設定。 如需詳細資訊,請參閱 Oracle 檔中的設定 java.util.logging 記錄器層級和設定記錄檔和篩選 Oracle WebLogic Server 的記錄檔訊息。
移轉應用程式
用來將應用程式從開發小組部署到測試、預備及生產伺服器的技術,會隨情況的不同而有很大的差異。 在某些情況下,有一個高度演進的 CI/CD 平臺,會導致應用程式部署至 WebLogic Server。 在其他情況下,此程序可能需要更多的人為介入。 使用 Azure 虛擬機器將 WebLogic 應用程式遷移至雲端的其中一個優點,就是您現有的程式可繼續運作。
您必須設定供應專案布建的網路安全性群組,以允許從 CI/CD 管線或手動部署系統進行存取。 如需詳細資訊,請參閱網路安全性群組。
測試
針對應用程式所進行的任何容器內測試,都必須設定為可存取在 Azure 內執行的新伺服器。 如同 CI/CD 考慮,您必須確定必要的網路安全性規則可讓您的測試存取部署至 Azure 的應用程式。 如需詳細資訊,請參閱網路安全性群組。
移轉後
在達到移轉前步驟中所定義的移轉目標後,請執行一些端對端驗收測試,以確認一切項目均可如預期般運作。 如需某些潛在移轉後增強功能的指引,請參閱下列建議:
使用 Azure 儲存體來提供裝載至虛擬機器的靜態內容。 如需詳細資訊,請參閱將資料磁碟連結至虛擬機器或中斷連結。
使用 Azure DevOps 將應用程式部署至遷移後的 WebLogic 叢集。 如需詳細資訊,請參閱 Azure DevOps 使用者入門文件。
如果您依照教學課程:將 WebLogic Azure 應用程式閘道 Server 叢集移轉至具有 Azure 應用程式閘道 作為負載平衡器的 Azure中的步驟,則您可能想要在應用程式閘道上執行更多設定。 如需詳細資訊,請參閱應用程式閘道設定概觀。
使用進階的負載平衡服務來增強網路拓撲。 如需詳細資訊,請參閱在 Azure 中使用負載平衡服務。
使用 Azure 受控識別來管理秘密,並將角色型存取權指派給 Azure 資源。 如需詳細資訊,請參閱什麼是 Azure 資源受控識別?
將 WebLogic Java EE 驗證和授權與 Azure Active Directory 整合在一起。 如需詳細資訊,請參閱 整合 Azure Active Directory 使用者入門指南。
使用 Azure Key Vault 來儲存作為「秘密」的任何資訊。 如需詳細資訊,請參閱 Azure Key Vault 基本概念。