本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Amazon ECS 上從甲骨文遷移 WebLogic 到阿帕奇湯姆貓(TomEE)
R 類型:重新平台 | 來源:容器 | 目標:阿帕奇湯姆貓(托米)在 Amazon ECS |
創建者:AWS | 環境:PoC 或試點 | 技術:容器與微服務;遷移 |
工作量:甲骨文 | AWS 服務:Amazon ECS |
Summary
此模式討論了將運行甲骨文的現場部署 Oracle Solaris SPARC 系統遷移 WebLogic 到使用 Amazon 彈性容器服務(亞馬遜 ECS)運行 Apache ToMee
如需移轉與您要從 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 網站上所述。
在 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 | |
審核並驗證專案文件。 | 遷移, 領導 | |
收集移轉時間的指標、手動與工具的百分比、節省成本等。 | 遷移, 領導 | |
關閉專案並提供意見反應。 | 應用程式擁有者移轉主管 |
相關資源
參考
教學課程和影片
在 Amazon RDS 上運行甲骨文數據庫的最佳實踐
(RE:創新 2018 演示文稿)