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

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

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

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

R 類型:N/A

來源:容器

目標:Amazon ECS

建立者:AWS

Entainment (環境 PoC 或試驗

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

AWS 服務:Amazon ECS

Summary

此模式提供了使用 AWS Fargate 在 Amazon Elastic Container Service (Amazon ECS) 上部署容器化 Java 微服務的指導。該模式不會使用 Amazon Elastic Container Registry (Amazon ECR) 進行容器管理,而是從現場部署環境中提取 Docker 映像。

微服務是軟件開發的架構和組織方法,其中軟件是由通過定義良好的 API 進行通信的小型獨立服務組成。這些架構可讓應用程式更容易擴充並加快開發速度,實現創新並加速新功能的上市時間。

Amazon ECS 是一項可高度擴展、擁有高效能的容器協調流程服務,其不僅支援 Docker 容器,還能讓您在 AWS 上輕鬆執行和擴展容器化應用程式。 

AWS Fargate 是 Amazon ECS 的運算引擎,可讓您在不管理伺服器或叢集的情況下執行容器。 

先決條件和限制

先決條件

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

  • 一個公共的泊塢人存儲庫

  • 作用中的 AWS 帳戶

  • 熟悉 AWS 服務,包括亞馬遜 ECS 和 Fargate

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

  • Amazon Relational Database Service (Amazon RDS) 啟動和執行 (可選)

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

限制

  • 目前僅支援 Amazon ECS Fargate。

Architecture

來源技術堆疊

  • Java 微服務(例如,在 Spring 引導中實現)並部署在 Docker

來源架構

目標技術堆疊

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

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

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

目標架構

Tools

工具

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

  • AWS Fargate— 有了 AWS Fargate 運算引擎,就不再需要佈建、設定和擴展虛擬機器的叢集來執行容器、選擇伺服器類型、決定擴展叢集的擴展或最佳化叢集封裝。 

  • 泊塢視窗檔案— Docker 是一個軟體平台,可讓您快速建置、測試和部署應用程式。Docker 將軟體封裝成標準化單元,稱為容器,其中包含軟體需要執行的一切,包括程式庫、系統工具、程式碼和執行階段。 

Docker 代碼

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

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

Epics

任務描述所需的技能
在您的 AWS 帳戶中建立 Virtual Private Cloud (VPC)。

系統管理員, 開發人員
在 VPC 內建立子網路。

至少需要兩個子網路。

系統管理員, 開發人員
建立 Amazon RDS 資料庫執行個體 (可選)。

如果您需要 Amazon RDS,請在其中一個私有子網路中建立它。

系統管理員, 開發人員
確保安全群組允許存取 Amazon RDS (可選)。

如果您需要亞馬遜 RDS,請確保安全組允許訪問亞馬遜 RDS。

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

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

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

選擇 Fargate 作為啟動類型。

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

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

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

指定容器名稱。對於映像,請輸入 Docker 站台名稱、存放庫名稱和 Docker 映像的標籤名稱。設定應用程式的記憶體限制,並為允許的連接埠設定連接埠對應。

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

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

系統管理員, 開發人員
任務描述所需的技能
建立和設定叢集。

選取網路作為叢集類型,設定名稱,然後建立叢集。

系統管理員, 開發人員
設定任務。

轉到任務並選擇「運行新任務」。將啟動類型設定為 Fargate,然後選取您先前建立的工作和叢集。設定 VPC、子網路和安全群組以允許存取。

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

使用公用 DNS 測試應用程式,然後切換至 Amazon ECS。

系統管理員, 開發人員