本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS Fargate 在 Amazon ECS 上部署 Java 微服務
由 Vijay Thompson (AWS) 和 Sandeep Bondugula (AWS) 建立
Summary
此模式提供使用 AWS Fargate 在 Amazon Elastic Container Service (Amazon ECS) 上部署容器化 Java 微服務的指引。模式不會使用 Amazon Elastic Container Registry (Amazon ECR) 進行容器管理;而是從 Docker 中樞提取 Docker 映像。
先決條件和限制
先決條件
Docker 中樞上的現有 Java 微服務應用程式
公有 Docker 儲存庫
作用中的 AWS 帳戶
熟悉 AWS 服務,包括 Amazon ECS 和 Fargate
Docker、Java 和 Spring Boot 架構
Amazon Relational Database Service (Amazon RDS) 啟動並執行 (選用)
如果應用程式需要 Amazon RDS,則為虛擬私有雲端 (VPC) (選用)
架構
來源技術堆疊
Java 微服務 (例如,在 Spring Boot 中實作) 並部署在 Docker
來源架構

目標技術堆疊
使用 Fargate 託管每個微服務的 Amazon ECS 叢集
託管 Amazon ECS 叢集和相關聯安全群組的 VPC 網路
每個微服務使用 Fargate 來啟動容器的叢集/任務定義
目標架構

工具
工具
Amazon ECS 不需要安裝和操作您自己的容器協調軟體、管理和擴展虛擬機器叢集,或在這些虛擬機器上排程容器。
AWS Fargate 可協助您執行容器,而無需管理伺服器或 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體。它與 Amazon Elastic Container Service (Amazon ECS) 搭配使用。
Docker
是一種軟體平台,可讓您快速建置、測試和部署應用程式。Docker 將軟體封裝到稱為容器的標準化單位,這些容器擁有軟體需要執行的所有項目,包括程式庫、系統工具、程式碼和執行時間。
Docker 程式碼
下列 Dockerfile 指定使用的 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 中執行 Docker 容器需要任務定義。在 https://console.aws.amazon.com/ecs/ | AWS 系統管理員、應用程式開發人員 |
選擇啟動類型。 | 選擇 Fargate 作為啟動類型。 | AWS 系統管理員、應用程式開發人員 |
設定任務。 | 定義任務名稱,並使用適當數量的任務記憶體和 CPU 設定應用程式。 | AWS 系統管理員、應用程式開發人員 |
定義容器。 | 指定容器名稱。針對映像,輸入 Docker 網站名稱、儲存庫名稱,以及 Docker 映像的標籤名稱 ( | AWS 系統管理員、應用程式開發人員 |
建立任務。 | 當任務和容器組態就位時,請建立任務。如需詳細說明,請參閱相關資源區段中的連結。 | AWS 系統管理員、應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
建立和設定叢集。 | 僅選擇聯網做為叢集類型,設定名稱,然後建立叢集,或在可用的情況下使用現有叢集。如需詳細資訊,請參閱 Amazon ECS 文件。 | AWS 系統管理員、應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
建立任務。 | 在叢集中,選擇執行新任務。 | AWS 系統管理員、應用程式開發人員 |
選擇啟動類型。 | 選擇 Fargate 作為啟動類型。 | AWS 系統管理員、應用程式開發人員 |
選擇任務定義、修訂和平台版本。 | 選擇您要執行的任務、任務定義的修訂,以及平台版本。 | AWS 系統管理員、應用程式開發人員 |
選取 叢集。 | 選擇您要從中執行任務的叢集。 | AWS 系統管理員、應用程式開發人員 |
指定任務數量。 | 設定應執行的任務數目。如果您使用兩個或多個任務啟動 ,則需要負載平衡器才能在任務之間分配流量。 | AWS 系統管理員、應用程式開發人員 |
指定任務群組。 | (選用) 指定任務群組名稱,將一組相關任務識別為任務群組。 | AWS 系統管理員、應用程式開發人員 |
設定叢集 VPC、子網路和安全群組。 | 設定叢集 VPC 和您要部署應用程式的子網路。建立或更新安全群組 (HTTP、HTTPS 和連接埠 8080),以提供傳入和傳出連線的存取權。 | AWS 系統管理員、應用程式開發人員 |
設定公有 IP 設定。 | 啟用或停用公有 IP,取決於您是否要為 Fargate 任務使用公有 IP 地址。預設的建議選項為已啟用。 | AWS 系統管理員、應用程式開發人員 |
檢閱設定並建立任務 | 檢閱您的設定,然後選擇執行任務。 | AWS 系統管理員、應用程式開發人員 |
任務 | 描述 | 所需的技能 |
---|---|---|
複製應用程式 URL。 | 當任務狀態更新為執行中時,選取任務。在網路區段中,複製公有 IP。 | AWS 系統管理員、應用程式開發人員 |
測試您的應用程式。 | 在瀏覽器中,輸入公有 IP 來測試應用程式。 | AWS 系統管理員、應用程式開發人員 |
相關資源
Amazon ECS 的 Docker 基本概念 (Amazon ECS 文件)
AWS Fargate 上的 Amazon ECS (Amazon ECS 文件)
建立任務定義 (Amazon ECS 文件)
建立叢集 (Amazon ECS 文件)
設定基本服務參數 (Amazon ECS 文件)
設定網路 (Amazon ECS 文件)