使用 AWS Fargate 在 Amazon ECS 上部署 Java 微服務 - AWS 方案指引

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

使用 AWS Fargate 在 Amazon ECS 上部署 Java 微服務

由維傑湯普森(AWS)和桑迪普邦杜古拉(AWS)創建

環境:PoC 或試點

來源:容器

目標:Amazon ECS

R 類型:不適用

技術:容器與微服務;Web 與行動應用程式

AWS 服務:Amazon ECS

Summary

此模式提供使用 AWS Fargate 在亞馬遜彈性容器服務 (Amazon ECS) 上部署容器化 Java 微型服務的指導。該模式不使用 Amazon Elastic Container Registry (Amazon ECR) 進行容器管理; 相反,Docker 映像從碼頭集線器提取。

先決條件和限制

先決條件

  • 碼頭集線器上現有的 Java 微服務應用程式

  • 一個公共碼頭存儲庫

  • 有效的 AWS 帳戶

  • 熟悉 AWS 服務,包括 Amazon ECS 和 Fargate

  • 碼頭工人,Java 和春季啟動框架

  • Amazon Relational Database Service(Amazon RDS)啟動並運行(可選)

  • 虛擬私有雲 (VPC) (如果應用程式需要 Amazon RDS) (選用)

架構

源, 技術, 堆棧

  • Java 微服務(例如,在春季啟動中實現)並部署在碼頭上

來源架構

部署在泊塢視窗上的 Java 微服務的原始碼架構

目標技術堆疊

  • 使用 Fargate 託管每個微服務的 Amazon ECS 叢集

  • 用於託管 Amazon ECS 叢集和相關安全群組的 VPC 擬私人雲端網路 

  • 每個微服務的群集/任務定義,使用 Fargate 啟動容器

目標架構

Amazon ECS 上 Java 微服務的目標架構

工具

工具

  • Amazon ECS 無需安裝和操作自己的容器協調軟體、管理和擴展虛擬機器叢集,或在這些虛擬機器上排程容器。 

  • AWS Fargate 可協助您執行容器,而不需要管理伺服器或 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。它與 Amazon Elastic Container Service (Amazon ECS) 一起使用。

  • Docker 是一個軟件平台,可讓您快速構建,測試和部署應用程序。Docker 將軟體封裝到稱為容器的標準化單元中,這些單元包含軟體所需的一切,包括程式庫、系統工具、程式碼和執行階段。 

泊塢視窗代碼

下列 Docker 檔案會指定所使用的 Java 開發套件 (JDK) 版本、Java 封存檔 (JAR) 檔案所在的位置、公開的連接埠號碼,以及應用程式的進入點。

FROM openjdk:11 ADD target/Spring-docker.jar Spring-docker.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","Spring-docker.jar"]

史诗

任務描述所需技能

建立任務定義。

在 Amazon ECS 中執行泊塢視窗容器需要任務定義。在 https://console.aws.amazon.com/ecs/ 開啟 Amazon ECS 主控台,選擇「任務定義」,然後建立新的任務定義。如需詳細資訊,請參閱 Amazon ECS 文件

AWS 系統管理員、應用程式開發

選擇啟動類型。

選擇 Fargate 作為啟動類型。

AWS 系統管理員、應用程式開發

設定工作。

定義作業名稱,並使用適當數量的工作記憶體和 CPU 來設定應用程式。

AWS 系統管理員、應用程式開發

定義容器。

指定容器名稱。對於映像檔,請輸入 Docker 網站名稱、儲存庫名稱和 Docker 映像檔的標籤名稱 () docker.io/sample-repo/sample-application:sample-tag-name。設定應用程式的記憶體限制,並為允許的連接埠設定連接埠映射 (8080, 80)。

AWS 系統管理員、應用程式開發

建立工作。

當工作和容器設定就位時,請建立工作。如需詳細指示,請參閱「相關資源」一節中的連結。

AWS 系統管理員、應用程式開發
任務描述所需技能

建立和配置叢集。

選擇 [僅限網路連線] 做為叢集類型、設定名稱,然後建立叢集或使用現有叢集 (如果有的話)。如需詳細資訊,請參閱 Amazon ECS 文件

AWS 系統管理員、應用程式開發
任務描述所需技能

建立任務。

在叢集內,選擇 [執行新工作]。

AWS 系統管理員、應用程式開發

選擇啟動類型。

選擇 Fargate 作為啟動類型。

AWS 系統管理員、應用程式開發

選擇作業定義、修訂版和平台版本。

選擇您要執行的作業、作業定義的修訂版本,以及平台版本。

AWS 系統管理員、應用程式開發

選取 叢集。

選擇您要從中執行工作的叢集。

AWS 系統管理員、應用程式開發

指定工作數目。

設定應執行的工作數目。如果您要啟動兩個或兩個以上的工作,則需要負載平衡器才能在工作之間分配流量。

AWS 系統管理員、應用程式開發

指定任務群組。

(選擇性) 指定任務群組名稱,以將一組相關工作識別為任務群組。

AWS 系統管理員、應用程式開發

設定叢集 VPC、子網路和安全群組。

設定叢集 VPC 和您要在其上部署應用程式的子網路。建立或更新安全群組 (HTTP、HTTPS 和通訊埠 8080),以提供對輸入和輸出連線的存取權。

AWS 系統管理員、應用程式開發

設定公用 IP 設定。

啟用或停用公用 IP,視您是否要使用公用 IP 位址執行 Fargate 工作而定。預設的建議選項為 [已啟用]

AWS 系統管理員、應用程式開發

檢閱設定並建立工作

檢閱您的設定,然後選擇 [執行工作]。

AWS 系統管理員、應用程式開發
任務描述所需技能

複製應用程式 URL。

當工作狀態已更新為「行中」時,請選取工作。在 [網路] 區段中,複製公用 IP。

AWS 系統管理員、應用程式開發

測試您的應用程式。

在瀏覽器中,輸入公用 IP 以測試應用程式。

AWS 系統管理員、應用程式開發

相關資源