使用亞馬遜 ECR 和 AWS Fargate 在亞馬遜 ECS 上部署 Java 微服務 - AWS Prescriptive Guidance

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

使用亞馬遜 ECR 和 AWS Fargate 在亞馬遜 ECS 上部署 Java 微服務

由維傑·湯普森 (AWS) 創建

R 類型:N/A

來源:容器

目標:Amazon ECS

建立者:AWS

Envronment (環 PoC 或試驗

技術:網站和 Web 應用程式;容器和微服務

AWS 服務:Amazon ECS

Summary

此模式會引導您完成在 Amazon Elastic Container Service (Amazon ECS) 中部署 Java 微服務做為容器化應用程式的步驟。該模式還使用 Amazon Elastic Container Registry (Amazon ECR) 來管理您的容器,而 AWS Fargate 則使用 AWS Fargate 來執行您的容器。

先決條件和限制

先決條件

  • 在 Docker 上的內部部署上執行的現有 Java 微服務應用程式

  • 作用中的 AWS 帳戶

  • 熟悉 Amazon ECR、Amazon ECS、AWS Fargate 和 AWS Command Line Interface (AWS CLI)

  • 熟悉 Java 和碼頭軟體

產品版本

  • AWS CLI 1.7 版或更新版本

Architecture

來源技術堆疊

  • Java 微服務(例如,使用 Spring Boot 開發)並部署在內部部署

  • Docker

來源架構

目標技術堆疊

  • Amazon ECR

  • Amazon ECS

  • AWS Fargate

目標架構

Tools

工具

  • Amazon ECR-Amazon Elastic Container Registry (Amazon ECR) 是一種完全受管的登錄檔,可讓開發人員輕鬆存放、管理和部署 Docker 容器映像。Amazon ECR 已與 Amazon ECS 整合,以簡化您的開發到生產工作流程。Amazon ECR 以可用度高且可擴展的架構來託管您的映像,讓您為應用程式部署可靠的容器。與 AWS Identity and Access Management (IAM) 整合,為每個儲存庫提供資源層級的控制。

  • Amazon ECS-Amazon Elastic Container Service (Amazon ECS) 是一項可高度擴展、擁有高效能的容器協調流程服務,其不僅支援 Docker 容器,還能讓您在 AWS 上輕鬆執行和擴展容器化應用程式。Amazon ECS 無需安裝和操作自己的容器協調流程軟體、管理和擴展虛擬機器叢集,或在這些虛擬機器上排程容器。

  • AWS Fargate-AWS Fargate 是 Amazon ECS 的運算引擎,可讓您執行容器而不需要管理伺服器或叢集。有了 AWS Fargate,就不再需要佈建、設定和擴展虛擬機器的叢集來執行容器。這樣一來即無須選擇伺服器類型、決定何時擴展叢集,或最佳化叢集壓縮。

  • Docker-Docker 是一個平台,可以讓你構建,測試,並在稱為容器包提供應用程序。

Code

下列停駐檔案指定所使用的 Java 開發工具組 (JDK) 版本,其中存在 Java 封存檔 (JAR) 檔案、公開的連接埠號碼,以及應用程式的入口點。

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

Epics

任務描述所需技能
建立 儲存庫。

在 https://console.aws.amazon.com/ecr/repositories 開啟 Amazon ECR 主控台,然後建立儲存庫。如需說明,請參閱參考部分中提供的連結。

開發人員, 系統管理員
上傳專案。

打開存儲庫並選擇「查看推送命令」。按照顯示的步驟上傳專案 (這些步驟僅適用於您使用 AWS CLI 1.7 版或更新版本)。上傳完成後,複製儲存庫中組建的 URL。在 Amazon ECS 中建立容器時,您將使用此 URL。

開發人員, 系統管理員
任務描述所需技能
建立任務定義。

在 Amazon ECS 中運行 Docker 容器需要任務定義。在 https://console.aws.amazon.com/ecs/ 開啟 Amazon ECS 主控台,選擇「任務定義」,然後建立新的任務定義。

開發人員, 系統管理員
選擇啟動類型。

選擇 Fargate 作為啟動類型。

開發人員, 系統管理員
配置工作。

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

開發人員, 系統管理員
定義貨櫃。

新增容器,提供名稱、Amazon ECR 存放庫的 URL、記憶體限制和連接埠對應。連接埠 8080 已設定為連接埠對應。根據您的應用程式需求設定其餘設定。

開發人員, 系統管理員
建立任務。

當工作和容器組態到位時,請建立工作。如需詳細說明,請參閱參考部分中的連結。

開發人員, 系統管理員
任務描述所需技能
建立或選擇叢集。

Amazon ECS 叢集提供任務或服務的邏輯分組。您可以選擇使用現有叢集或建立新叢集。如果您決定建立新叢集,請根據您的需求選擇叢集類型。在我們的範例中,我們選取了網路叢集。提供叢集的名稱,並選擇是否要建立用於 Fargate 工作的新虛擬私有雲 (VPC)。

開發人員, 系統管理員
建立服務。

在叢集內,選擇「建立服務」。

開發人員, 系統管理員
選擇啟動類型。

選擇 Fargate 作為啟動類型。

開發人員, 系統管理員
選擇工作定義、修訂版本和平台版本。

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

開發人員, 系統管理員
選取 叢集。

從下拉式清單中選取服務建立所在的叢集。

開發人員, 系統管理員
提供服務名稱。

請輸入您要建立的服務的專屬名稱。

開發人員, 系統管理員
指定任務數量。

設定服務啟動時應執行的工作數目。如果您要啟動兩個或多個工作,則需要負載平衡器來平衡工作。

開發人員, 系統管理員
設定健全百分比下限和上限。

設定應用程式的最小和最大狀況百分比,或接受所提供的預設選項。

開發人員, 系統管理員
設定部署設定。

根據您的需求選擇部署類型。您可以選擇輪流更新或藍/綠部署。

開發人員, 系統管理員
設定叢集 VPC、子網路和安全群組。

設定叢集 VPC、要在其上部署應用程式的子網路,以及提供對內送/輸出連線存取的安全群組。

開發人員, 系統管理員
設定公用 IP 設定。

啟用或停用公用 IP,視您是否要為 Fargate 工作使用公用 IP 位址而定。

開發人員, 系統管理員
設定負載平衡。

如果您使用多個工作啟動服務,請設定負載平衡器。您必須先建立負載平衡器及其目標群組,才能啟動服務。

開發人員, 系統管理員
設定自動調整規模。

將您的服務設定為使用 Amazon ECS 服務 Auto Scaling,根據您的需求向上或向下調整所需的任務數量。

開發人員, 系統管理員
檢閱設定並建立服務。

檢閱您的服務設定,然後選擇 Create Service (建立服務)。

開發人員, 系統管理員
任務描述所需技能
測試您的應用程式。

使用公用 DNS 測試應用程式,然後切斷。如果您的應用程式具有負載平衡器,請使用它來測試應用程式,或使用部署工作時所建立的公用 IP。

開發人員, 系統管理員