在 Amazon ECS 上從甲骨文遷移 WebLogic 到阿帕奇湯姆貓(TomEE) - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Amazon ECS 上從甲骨文遷移 WebLogic 到阿帕奇湯姆貓(TomEE)

創建者:安雅埃皮什切瓦(AWS)

R 類型:重新平台

來源:容器

目標:阿帕奇湯姆貓(托米)在 Amazon ECS

創建者:AWS

環境:PoC 或試點

技術:容器與微服務;遷移

工作量:甲骨文

AWS 服務:Amazon ECS

Summary

此模式討論了將運行甲骨文的現場部署 Oracle Solaris SPARC 系統遷移 WebLogic 到使用 Amazon 彈性容器服務(亞馬遜 ECS)運行 Apache ToMee(帶有添加容器支持的 Apache Tomcat)的基於碼頭的容器安裝的步驟。

如需移轉與您要從 Oracle 移轉 WebLogic 至 Tomcat 之應用程式相關聯之資料庫的相關資訊,請參閱此目錄中的資料庫移轉模式。 

最佳實務

移轉 Java 和 Java 企業版 (Java EE) Web 應用程式的步驟會因應用程式使用的容器特定資源數目而有所不同。基於 Spring 的應用程序通常更容易遷移,因為它們在部署容器上具有少量的依賴關係。相較之下,使用企業 JavaBeans (EJB) 和受管理容器資源 (例如執行緒集區、Java 驗證和授權服務 (JAAS) 和容器管理持續性 (CMP) 的 Java EE 應用程式需要更多的努力。 

為「Oracle 應用程式伺服器」開發的應用程式經常使用「Oracle 識別管理」 移轉至開放原始碼應用程式伺服器的客戶經常選擇使用 SAML 型聯盟重新實作身分識別與存取管理。其他人使用 Oracle HTTP 伺服器網路閘門來處理從 Oracle 識別管理套件進行移轉時不是一個選項。 

Java 和 Java EE Web 應用程式非常適合在以碼頭為基礎的 AWS 服務上進行部署,例如 AWS Fargate 和 Amazon ECS。客戶經常選擇已預先安裝最新版本的目標應用程式伺服器 (例如 TomEE) 和 Java 開發套件 (JDK) 的 Docker 映像檔。他們將應用程式安裝在基本 Docker 映像之上,將其發佈到 Amazon Elastic Container Registry (Amazon ECR) 登錄中,並將其用於 AWS Fargate 或 Amazon ECS 上的應用程式可擴展部署。 

理想情況下,應用程式部署是彈性的;也就是說,應用程式執行個體的數量會根據流量或工作負載擴展或擴展。這表示應用程式執行個體必須上線或終止,才能根據需求調整容量。 

將 Java 應用程式移至 AWS 時,請考慮將其設為無狀態。這是 AWS 架構良好架構架構的關鍵架構原則,可使用容器化實現水平擴展。例如,大多數基於 Java 的 Web 應用程序在本地存儲用戶會話信息。為了在 Amazon Elastic Compute Cloud (Amazon EC2) 中自動擴展或出於其他原因導致應用程式執行個體終止,使用者工作階段資訊應儲存在全域,以便 Web 應用程式使用者可以繼續無縫且透明地工作,而無需重新連線或重新登入 Web 應用程式。這種方法有多種架構選項,包括 Amazon ElastiCache for Redis,或在全域資料庫中存放工作階段狀態。應用程式伺服器 (例如 TomEE) 具有外掛程式,可透過 Redis、資料庫和其他全域資料存放區啟用工作階段儲存和管理。

使用可輕鬆與 Amazon 和 AWS X-Ray 整合的通用集中式記錄 CloudWatch 和偵錯工具。移轉提供改善應用程式生命週期功能的機會。例如,您可能想要將建置程序自動化,以便使用持續整合和持續傳遞 (CI/CD) 管線輕鬆進行變更。這可能需要對應用程序進行更改,以便可以在沒有任何停機時間進行部署。 

先決條件和限制

先決條件

  • 有效的 AWS 帳戶 

  • 源代碼 Java 代碼和 JDK

  • 以 Oracle 建置的來源應用程式 WebLogic

  • 定義的身分識別與存取管理解決方案 (SAML 或 Oracle Webgate)

  • 定義應用程式工作階段管理的解決方案 (移動 like-for-like 或使用 Amazon ElastiCache,或視需要使應用程式無狀態)

  • 了解團隊是否需要重構特定於 J2EE 的庫以便移植到 Apache TomeE(請參閱 Apache 網站上的 Java EE 7 實現狀態)

  • 根據您的安全需求強化 ToMee 映像檔

  • 含預先安裝目標 ToMee 的容器影像 

  • 如果需要,同意並實施應用程序修復(例如,記錄調試構建,身份驗證)

產品版本

  • 甲骨文 WebLogic OC4J, 9i, 10 克 

  • 托姆貓 7(使用 Java 1.6 或更高版本)

架構

 源, 技術, 堆棧

  • 使用 Oracle 建置的 Web 應用程式 WebLogic

  • 使用甲骨文網閘或 SAML 驗證的 Web 應用程式

  • 連線至 Oracle 資料庫版本 10g 及更新版本的 Web 應用程式

目標技術堆疊

  • 在 Amazon ECS 上運行的 Tomme(具有添加容器支持的 Apache Tomcat)(另請參閱在 Amazon ECS 上部署 Java Web 應用程序Java 微服務)

  • 適用於甲骨文的亞馬 Amazon Relational Database Service(Amazon RDS);對於 Amazon RDS 支持的甲骨文版本,請參閱 Amazon RDS for Oracle

目標架構

工具

若要在 ToMee 上作業,Java 應用程式必須重建成 .war 檔案。在某些情況下,可能需要變更應用程式才能在 ToMee 上操作應用程式;您應該檢查以確定必要的組態選項和環境屬性已正確定義。  

此外,應正確定義 Java 命名和目錄介面 (JNDI) 查詢和 JavaServer 頁面 (JSP) 命名空間。 考慮檢查應用程序使用的文件名,以避免與內置 T 庫的命名衝突。例如,persistence.xml 是由 Apache 的 OpenJPA 框架(這是捆綁在東米的 OpenEJB)用於配置目的的的文件名。在 PUI 中的 persistence.xml 文件包含春季框架豆聲明。  

TomEe 7.0.3 及更新版本 (Tomcat 8.5.7 及更新版本) 會針對具有特殊字元的原始 (未編碼) 網址傳回 HTTP 400 回應 (錯誤要求)。伺服器回應會顯示為一般使用者的空白頁面。早期版本的 TomEe 和 Tomcat 允許在 URL 中使用某些未編碼的特殊字符; 但是,它被認為是不安全的,如 CVE-2016-6816 網站上所述。要解決 URL 編碼問題,直接通過傳遞給瀏覽器的 URL JavaScript 必須使用 encodeURI () 方法進行編碼,而不是用作原始字符串。

在 ToMee 中部署 .war 檔案之後,請監視 Linux cat 中是否有任何遺失的共用程式庫和 Oracle 特定延伸模組的開始記錄,以便從 Tomcat 程式庫新增遺失的元件。 

一般程序

  • 在 TomEE 上設定應用程式。

  • 識別並重新設定應用程式伺服器特定的組態檔案和資源,從來源到目標格式。

  • 識別並重新設定 JNDI 資源。

  • 將 EJB 命名空間和查詢調整為目標應用程式伺服器所需的格式 (如果適用)。

  • 重新設定 JAAS 應用程式容器特定的資訊安全角色和原則對應 (如果適用)。

  • 將應用程式和共用程式庫 Package 到 .war 檔案中。

  • 使用提供的碼頭容器,在 TomEe 中部署 .war 檔案。

  • 監視開始記錄檔,以識別任何遺失的共用程式庫和部署描述元延伸 如果找到任何東西,請返回到第一個任務。

  • 對照還原的 Amazon RDS 資料庫測試已安裝的應用程式。

  • 遵循部署 D ocker 容器中的指示,透過負載平衡器和 Amazon ECS 叢集啟動完整架構。

  • 更新 URL 以指向負載平衡器。

  • 更新組態管理資料庫 (CMDB)。

史诗

任務描述所需技能
執行應用程式探索 (目前的狀態佔用空間和效能基準)。BA,遷移領導
驗證來源和目標資料庫版本和引擎。DBA
驗證來源和目標應用程式設計 (身分識別和工作階段管理)。DBA、移轉工程師、應用程式擁有者
識別目標伺服器執行個體的硬體和儲存需求。DBA SysAdmin
根據容量、儲存空間功能和網路功能選擇適當的執行個體類型。DBA SysAdmin
識別來源和目標資料庫的網路存取安全性需求。DBA SysAdmin
識別應用程式遷移策略和工具。DBA,遷移領導
完成應用程式的移轉設計和移轉指南。建立領導者,遷移領導者
完成應用程式移轉手冊。構建領導,切換引線,測試導線,遷移領導
任務描述所需技能
建立 Virtual Private Cloud (VPC)SysAdmin
建立安全性群組。SysAdmin
設定並啟動 Amazon RDS 資料庫執行個體。DBA SysAdmin
設定 Amazon ECS 部署。SysAdmin
將您的應用程式 Package 為 Docker 映像檔。SysAdmin
將映像推送到 Amazon ECR 登錄 (或跳過此步驟並將其推送到 Amazon ECS 叢集)。SysAdmin
設定應用程式和 Amazon ECS 服務選項的任務定義。SysAdmin
設定叢集、檢閱安全設定,以及設定 AWS Identity and Access Management (IAM) 角色。SysAdmin
啟動您的設置並根據您的應用程序遷移 runbook 運行測試。SysAdmin
任務描述所需技能
取得安全保證團隊的許可,將生產資料移至 AWS。DBA、移轉工程師、應用程式擁有者
建立並取得端點的存取權,以擷取資料庫備份檔案。DBA
使用原生資料庫引擎或協力廠商工具來移轉資料庫物件和資料。DBA
從應用程式移轉 Runbook 執行必要的測試,以確認資料移轉成功。DBA、移轉工程師、應用程式擁有者
任務描述所需技能
建立要移轉的變更請求 (CR)。切換引線
取得移轉的 CR 核准。切換引線
遵循應用程式遷移手冊中的應用程式遷移策略。DBA、移轉工程師、應用程式擁有者
升級應用程序(如果需要)。DBA、移轉工程師、應用程式擁有者
完整的功能性、非功能性、資料驗證、SLA 和效能測試。測試潛在客戶,應用程序所有者,應用
任務描述所需技能
取得應用程式或企業擁有者的簽署。切換引線
執行表格主題練習,逐步執行切換工作簿的所有步驟。DBA、移轉工程師、應用程式擁有者
將應用程式用戶端切換至新基礎結構。DBA、移轉工程師、應用程式擁有者
任務描述所需技能
關閉臨時 AWS 資源。DBA,移民工程師, SysAdmin
審核並驗證專案文件。遷移, 領導
收集移轉時間的指標、手動與工具的百分比、節省成本等。遷移, 領導
關閉專案並提供意見反應。應用程式擁有者移轉主管

參考

教學課程和影片