使用 Amazon ECR 和負載平衡在 Amazon ECS 上部署 Java 微服務 - AWS 方案指引

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

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

R 類型:不適用

資料來源:爪哇

目標:Amazon ECS

創建者:AWS

環境:PoC 或試點

技術:Web 和移動應用程序; 容器和微服務

AWS 服務:Amazon ECS

Summary

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

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

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

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

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

先決條件和限制

先決條件

  • 有效的 AWS 帳戶  

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

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

  • AWS 命令列界面 (AWS CLI)

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

  • 熟悉先前技術的使用

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

架構

源, 技術, 堆棧

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

目標技術堆疊

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

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

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

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

  • 適用於每個微服務的亞馬遜彈性容器註冊表 (Amazon ECR) 儲存庫。

  • 每個微服務的服務或任務定義,用於啟動 Amazon ECS 叢集執行個體上的容器。

目標架構

工具

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

  • Amazon ECR — 亞馬遜彈性容器註冊表 (Amazon ECR) 是一種全受管的註冊表,可讓開發人員輕鬆存放、管理和部署 Docker 容器映像。Amazon ECR 與 Amazon ECS 整合,以簡化您的 development-to-production 工作流程。Amazon ECR 將映像託管在高可用性和可擴展的架構中,因此您可以可靠地為應用程式部署容器。與 AWS Identity and Access Management (IAM) 整合可提供每個儲存庫的資源層級控制。

史诗

任務描述所需技能
佈建 Amazon EC2 Linux 執行個體、安裝泊塢視窗,並為每個微服務建立碼頭檔案。行動
在 Amazon ECR 上設置碼頭圖像。

使用 Docker 檔案來推送、建立映像檔,並為您的新儲存庫加上標記。對每個微服務執行相同的動作。將新標記的映像推送到存放庫。

行動
建立 AWS CloudFormation 範本。

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

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

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

行動
建立 Amazon ECR 儲存庫、任務、服務、應用程式負載平衡器和目標群組。

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

行動