從甲骨文網絡邏輯移轉到亞馬遜 ECS 上的阿帕奇 - AWS Prescriptive Guidance

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

從甲骨文網絡邏輯移轉到亞馬遜 ECS 上的阿帕奇

由安亞·埃皮舍瓦 (AWS) 創建

R 類型 平台重建

來源:容器

目標:亞馬遜 ECS 上的阿帕奇雄貓(托米)

建立者:AWS

:Enreronment ( PoC 或試驗

容器與微服務;移轉

工作負載:Oracle

AWS 服務:Amazon ECS

Summary

此模式討論如何將執行 Oracle WebLogic 的內部部署 Oracle Solaris SPARC 系統移轉至執行Apache Tomee(Apache Tomcat 與額外的容器支援) 搭配 Amazon Elastic Container Service (Amazon ECS)。

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

最佳實務

移轉 Java 和 Java 企業版 (Java EE) Web 應用程式的步驟會因應應用程式所使用的容器特定資源數目而有所不同。以 Spring 為基礎的應用程式通常較容易移轉,因為它們在部署容器上具有少量的相依性。相比之下,使用企業 JavaBean(EJB)的 Java EE 應用程序和託管容器資源,如線程池,Java 身份驗證和授權服務(JAAS)和容器託管持久性(CMP)需要更多的努力。 

針對「Oracle 應用程式伺服器」開發的應用程式經常使用「Oracle 識別管理」 遷移至開放原始碼應用程式伺服器的客戶經常選擇使用 SAML 型同盟來重新實作身分識別和存取管理。在從 Oracle 身份管理套件遷移時,其他使用 Oracle HTTP 伺服器網頁閘道不是一個選項。 

Java 和 Java EE Web 應用程式是在以 Docker 為基礎的 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 應用程式使用者可以繼續無縫且透明地工作,而無需重新連接或重新登入 Webapplication. 此方法有數種架構選項,包括適用於 Amazon ElastiCache for Redis,或將工作階段狀態儲存在全域資料庫中。應用程序服務器,如 TomeE 有插件,它可以通過 Redis,數據庫和其他全局數據存儲啟用會話存儲和管理。

使用可輕鬆與 Amazon CloudWatch 和 AWS X-Ray 整合的常用集中式記錄和除錯工具。移轉提供改善應用程式生命週期功能的機會。例如,您可以自動化建置程序,以便使用連續整合和連續傳遞 (CI/CD) 管道輕鬆進行變更。這可能需要變更應用程式,以便在不停機的情況下部署應用程式。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶 

  • 源代碼和 JDK

  • 使用 Oracle 網頁邏輯建置的來源應用程式

  • 已定義的身分識別與存取管理解決方案 (SAML 或 Oracle 網路閘道)

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

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

  • 根據您的安全需求強化的 TomeE 影像

  • 具有預先安裝目標 TomEE 的容器映像 

  • 應用程式補救已同意並視需要實作 (例如,記錄除錯組建、驗證)

產品版本

  • Oracle 網頁邏輯管理系統 

  • 貓 7 (使用 Java 1.6 或更新版本)

Architecture

 來源技術堆疊

  • 使用 Oracle 網頁邏輯建置的 Web 應用程式

  • 使用 Oracle 網頁閘道或 SAML 驗證的 Web 應用程式

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

目標堆疊

目標架構

Tools

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

此外,Java 命名和目錄界面 (JNDI) 查找和 JavaServer Server 網頁 (JSP) 命名空間應該正確定義。 考慮檢查應用程序使用的文件名,以避免與內置 T 庫的命名衝突。例如,persistence.xml 是一個文件名,由 Apache OpenJPA 框架(在 TomE 中與 OpenEJB 捆綁在一起)用於配置目的。在 PUI 中的 persistence.xml 文件包含春天框架 bean 聲明。  

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

在 TomEE 中部署 .war 檔案之後,請監視啟動記錄Linux 上的電腦對於任何缺少的共享庫和 Oracle 特定的擴展,以添加 Tomcat 庫中缺少的組件。 

一般程序

  • 在 TomEE 上設定應用程式。

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

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

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

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

  • 將應用程式和共用程式庫封裝成 .war 檔案。

  • 使用提供的 Docker 容器在 TomEE 中部署 .war 文件。

  • 監控啟動記錄來識別任何缺少的共用程式庫和部署描述元擴充功能。如果找到任何項目,請返回第一個工作。

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

  • 依照下列指示啟動具有負載平衡器和 Amazon ECS 叢集的完整架構部署 Docker 容器

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

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

Epics

任務描述所需技能
執行應用程式探索 (目前狀態佔用量和效能基準)。

BA, 移轉領導者
驗證來源與目標資料庫版本與引擎。

DBA
驗證來源和目標應用程式設計 (身分識別和工作階段管理)。

DBA, 移轉工程師, 委任人
識別目標伺服器執行個體的硬體和儲存需求。

DBA,SysAdmin
根據容量、儲存功能和網路功能選擇適當的執行個體類型。

DBA,SysAdmin
識別來源和目標資料庫的網路存取安全需求。

DBA,SysAdmin
識別應用程式移轉策略和工具。

DBA,移轉領導者
完成應用程式的移轉設計和移轉指南。

建立潛在客戶,遷移領導者
完成應用程式移轉 Runbook。

建立領導者、轉換領導者、測試領導者、遷移領導者
任務描述所需技能
建立虛擬私有雲端 (VPC)。

SysAdmin
建立安全群組。

SysAdmin
設定並啟動 Amazon RDS 資料庫執行個體。

DBA,SysAdmin
配置亞馬遜 ECS 部署。

SysAdmin
將您的應用程序打包為 Docker 映像。

SysAdmin
將映像推送到 Amazon ECR 登錄 (或略過此步驟並將其推送到 Amazon ECS 叢集)。

SysAdmin
設定應用程式和 Amazon ECS Service 選項的任務定義。

SysAdmin
設定叢集、檢閱安全設定,以及設定 AWS Identity and Access Management (IAM) 角色。

SysAdmin
根據您的應用程式移轉 Runbook 啟動安裝程式並執行測試。

SysAdmin
任務描述所需技能
取得安全保證團隊的許可,將生產資料移至 AWS。

DBA, 移轉工程師, 委任人
建立並取得端點的存取權,以擷取資料庫備份檔案。

DBA
使用原生資料庫引擎或協力廠商工具來移轉資料庫物件和資料。

DBA
從應用程式移轉 Runbook 執行必要的測試,以確認資料移轉成功。

DBA, 移轉工程師, 委任人
任務描述所需技能
建立用於移轉的變更請求 (CR)。

轉換 LEAD
取得 CR 核准以進行移轉。

轉換 LEAD
遵循應用程式移轉 Runbook 中的應用程式移轉策略。

DBA, 移轉工程師, 委任人
升級應用程式 (如果需要)。

DBA, 移轉工程師, 委任人
完整的功能性、非功能性、資料驗證、SLA 和效能測試。

測試潛在客戶、應用程式擁有者、應用程
任務描述所需技能
取得應用程式或企業所有者的簽署。

轉換 LEAD
執行表格主題練習,以逐步執行轉換 Runbook 的所有步驟。

DBA, 移轉工程師, 委任人
將應用程式用戶端切換至新的基礎結構。

DBA, 移轉工程師, 委任人
任務描述所需技能
關閉臨時 AWS 資源。

DBA, 移轉工程師, SysAdmin
複查並驗證專案文件。

遷移 LEAD
收集需要遷移的時間指標、手動與工具的百分比、節省成本等。

遷移 LEAD
關閉專案並提供回饋。

移轉主機,應用程式擁有者

References

教學和影片