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

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

使用亞馬遜 ECR 和負載平衡在亞馬遜 ECS 上部署 Java 微服務

由杜爾加·普拉薩德·奇普里(AWS)創建

R 類型:N/A

來源:Java

目標:Amazon ECS

建立者:AWS

環境:PoC 或試驗

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

AWS 服務:Amazon ECS

Summary

此模式概述了在 Amazon 彈性容器服務 (Amazon ECS) 上部署容器化 Java 微服務架構的步驟,以便更輕鬆且更快速地開發應用程式。這有助於實現創新,並加速新功能的上市時間。 

該模式還使用 Amazon Elastic Container Registry (Amazon ECR) 來存放和管理基於 Docker 的容器,以及使用具有 Python 指令碼的 AWS CloudFormation 範本來自動化基礎設施的設定。該模式是基於在 Amazon Elastic Container Service 上部署 Java 微服務,該文件發佈在 AWS 運算部落格上。

微服務提供軟體開發的架構和組織方法,其中軟體是由小型、獨立的服務組成,這些服務可透過定義良好的應用程式開發介面 (API) 進行通訊。小型、獨立的團隊擁有這些服務。 

Amazon ECS 是一種可高度擴展、高效能的容器協調流程服務。它支援 Docker 容器,可讓您快速在 AWS 上執行和擴展容器化應用程式。使用 Amazon ECS,您不再需要安裝和操作容器協調流程軟體、管理和擴展虛擬機器叢集 (VM),或在這些虛擬機器上排程容器。

透過簡易的 API 呼叫,您能夠啟動和停止支援 Docker 的應用程式、查詢請求的完整狀態,以及存取諸多自然功能,例如 AWS Identity and Access Management (IAM) 角色、安全群組、負載平衡器、Amazon CloudWatch Events、AWS CloudFormation 範本和 AWS 等。CloudTrail 日誌。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶  

  • Java 微服務原始程式碼,搭配 Java 開發套件 1.7 版或更新版本的 Java 開發套件

  • 帳戶中使用者的存取金鑰和私密存取金鑰

  • AWS 命令列界面 (AWS CLI)

  • Java、AWS 軟體開發套件 (開發套件),以及碼頭軟體

  • 熟悉前述技術的使用

  • 熟悉 AWS 服務,例如 Amazon ECS、AWS CloudFormation 和 Elastic Load Balancing

Architecture

來源技術堆疊

  • 微服務在 Java 中實現,並在內部部署環境中部署在 Apache Tomcat 上

目標技術堆疊

  • 檢查用戶端要求的 Application Load Balancer。根據路由規則,負載平衡器會將要求導向至符合狀態之目標群組的執行個體和連接埠。

  • 每個微服務的目標群組。對應的服務會使用目標群組來註冊可用的容器執行個體。每個目標群組都有一個路徑,因此當您呼叫特定微服務的方式時,它會對應到正確的目標群組。這可讓您使用一個 Application Load Balancer 來為路徑存取的所有微服務提供服務。例如,https:///owner/ * 會對應並導向至擁有者微服務。

  • 託管每個微服務容器的 Amazon ECS 叢集。

  • Amazon Virtual Private Cloud (Amazon VPC) 網路,用來託管 Amazon ECS 叢集和關聯的安全群組。

  • 針對每項微服務的 Amazon Elastic Container Registry (Amazon ECR) 儲存庫。

  • 每個微服務的服務或任務定義,它會在 Amazon ECS 叢集執行個體上旋轉容器。

目標架構

Tools

  • Amazon ECS— Amazon ECS 可讓您使用簡單的 API 呼叫啟動和停止容器型應用程式,讓您從集中化的服務取得您叢集的狀態,並可存取許多熟悉的 Amazon EElastic Compute Cloud (Amazon EC2) 功能。

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

Epics

任務描述所需技能
為每個微服務佈建 Amazon EC2 Linux 執行個體、安裝 Docker,並建立 Docker 檔案。

Ops
在亞馬遜 ECR 上設置碼頭圖像。

針對映像使用 Docker 檔來推送、建立映像並為新的儲存庫標記映像。針對每個微服務執行相同步驟。將新標記的圖像推送到存儲庫。

Ops
建立 AWS CloudFormation 範本。

建立 AWS CloudFormation 範本來佈建虛擬私有雲 (VPC)、Amazon ECS 叢集和 Amazon Relational Database Service (Amazon RDS)。

Ops
任務描述所需技能
使用您先前建立的 CloudFormation 範本來建立 AWS 基礎設施。

使用 https://github.com/awslabs/amazon-ecs-java-microservices/blob/master/2_ECS_Java_Spring_PetClinic_Microservices/setup.py 上的 Python 指令碼來叫用您先前建立的 AWS CloudFormation 範本。此範本會建立目標環境所需的 AWS 基礎設施。

Ops
建立 Amazon ECR 儲存庫、任務、服務、Application Load Balancer 和目標群組。

Python 指令碼讀取 AWS CloudFormation 範本的輸出,並使用 BOTO3 API 呼叫來建立 Amazon ECR 儲存庫、任務、服務、Application Load Balancer 和目標群組。

Ops