本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS PrivateLink 和 Network Load Balancer,在 Amazon ECS 上私下存取容器應用程式
創建者基蘭庫馬爾錢德拉什卡 (AWS)
環境:生產 | 技術:容器與微服務;網路;安全性、身分識別、合規性;Web 和行動應用程式 | 工作負載:所有其他工作 |
AWS 服務:Amazon EC2; Amazon EC2 Auto Scaling; Amazon EC2 容器註冊表; Amazon EFS; Amazon RDS; Amazon VPC; Amazon ECS; Elastic Load Balancing (ELB); AWS Lambda |
Summary
此模式描述如何在 Network Load Balancer 後方的 Amazon Elastic Container Service (Amazon ECS) 上私有託管 Docker 容器應用程式,以及如何使用 AWS 存取應用程式。 PrivateLink然後,您可以使用私有網路安全地存取 Amazon Web Services (AWS) 雲端上的服務。Amazon Relational Database Service 服務 (Amazon RDS) 託管在具有高可用性 (HA) 的 Amazon ECS 上執行之應用程式的關聯式資料庫。如果應用程式需要持續性儲存,則會使用 Amazon Elastic File System (Amazon EFS)。
執行 Docker 應用程式的 Amazon ECS 服務 (前端有 Network Load Balancer) 可與虛擬私有雲端 (VPC) 端點建立關聯,以便透過 AWS 存取。 PrivateLink然後,可以使用其他 VPC 端點與其他 VPC 共用此 VPC 端點服務。
您也可以使用 AWS Fargate 取代 Amazon EC2 Auto Scaling 群組。如需詳細資訊,請參閱使用 AWS Fargate、AWS 和 Network Load Balancer 在 Amazon ECS 上私下存取容器應用程式。 PrivateLink
先決條件和限制
先決條件
有效的 AWS 帳戶
AWS Command Line Interface (AWS CLI) (AWS CLI) 第 2 版,已在 Linux、macOS 或視窗上安裝和設定
泊塢視窗
, 安裝和配置在 Linux, macOS, 或視窗 在碼頭上運行的應用程序
架構
![使用 AWS PrivateLink 在 Network Load Balancer 後方的 Amazon ECS 上存取容器應用程式。](images/pattern-img/a316bf46-24db-4514-957d-abc60f8f6962/images/573951ed-74bb-4023-9d9c-43e77e4f8eda.png)
技術堆疊
Amazon CloudWatch
Amazon Elastic Compute Cloud (Amazon EC2)
Amazon EC2 Auto Scaling
Amazon Elastic Container Registry (Amazon ECR)
Amazon ECS
Amazon RDS
Amazon Simple Storage Service (Amazon S3)
AWS Lambda
AWS PrivateLink
AWS Secrets Manager
Application Load Balancer
Network Load Balancer
VPC
自動化和規模
您可以使用 AWS 使用基礎設施即程式碼 CloudFormation來建立此模式。
工具
Amazon EC2 — 亞馬遜彈性運算雲 (Amazon EC2) 在 AWS 雲端提供可擴展的運算容量。
Amazon EC2 Auto Scaling — Amazon EC2 Auto Scaling 可協助您確保擁有正確數量的 Amazon EC2 執行個體可用來處理應用程式的負載。
Amazon ECS — Amazon Elastic Container Service (Amazon ECS) 是可高度擴展、快速的容器管理服務,可讓您輕鬆執行、停止和管理叢集上的容器。
Amazon ECR — 亞馬遜彈性容器註冊表 (Amazon ECR) 是一種受管 AWS 容器映像登錄服務,安全、可擴展且可靠。
Amazon EFS — Amazon Elastic File System (Amazon EFS) 提供簡單、可擴展且全受管的彈性 NFS 檔案系統,可與 AWS 雲端服務和現場部署資源搭配使用。
AWS Lambda — L ambda 是一種運算服務,可用來執行程式碼,無需佈建或管理伺服器
Amazon RDS — Amazon Relational Database Service 服務 (Amazon RDS) 是一種網路服務,可讓您更輕鬆地在 AWS 雲端中設定、操作和擴展關聯式資料庫。
Amazon S3 — Amazon Simple Storage Service (Amazon S3) 是互聯網的存儲。此服務旨在降低開發人員進行網路規模運算的難度。
AWS Secrets Manager — Secrets Manager 提供 API 呼叫以程式設計方式擷取密碼,協助您取代程式碼中的硬式編碼登入 Secrets Manager 料 (包括密碼)。
Amazon VPC — Amazon Virtual Private Cloud (Amazon VPC) 可協助您在已定義的虛擬網路中啟動 AWS 資源。
E@@ lastic Load Balancing — Elastic Load Balancing 可將傳入的應用程式或網路流量分散到多個可用區域中的多個目標,例如 Amazon EC2 執行個體、容器和 IP 地址。
Docker — Doc
ker 幫助開發人員將任何應用程序打包,運送和運行作為一個輕量級,便攜和自給自足的容器。
史诗
任務 | 描述 | 所需技能 |
---|---|---|
建立 VPC。 |
| 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 Network Load Balancer。 |
| 雲端管理員 |
建立應用程式負載平衡器。 |
| 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立一個 Amazon EFS 檔案系統。 |
| 雲端管理員 |
掛載子網路的目標。 |
| 雲端管理員 |
確認子網路已裝載為目標。 |
| 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 S3 儲存貯體。 | 如有需要,開啟 Amazon S3 主控台並建立 S3 儲存貯體來存放應用程式的靜態資產。 | 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 AWS KMS 金鑰以加密密碼 Secrets Manager 密碼。 | 開啟 AWS Key Management Service (AWS KMS) 主控台並建立 KMS 金鑰。 | 雲端管理員 |
創建一個 Secrets Manager 密碼來存儲 Amazon RDS 密碼。 |
| 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立資料庫子網路群組。 |
| 雲端管理員 |
創建一個 Amazon RDS 實例。 | 在私有子網路中建立和設定 Amazon RDS 執行個體。確定已開啟 HA 的異地同步備份。 | 雲端管理員 |
將資料載入 Amazon RDS 執行個體。 | 將應用程式所需的關聯式資料載入 Amazon RDS 執行個體。此過程將根據應用程序的需求以及數據庫模式的定義和設計方式而有所不同。 | 雲端管理員,DBA |
任務 | 描述 | 所需技能 |
---|---|---|
建立 ECS 叢集。 |
| 雲端管理員 |
創建碼頭圖像。 | 依照「相關資源」一節中的指示建立 Docker 映像檔。 | 雲端管理員 |
建立 Amazon ECR 儲存庫。 |
| 雲端管理員、 DevOps 工程師 |
驗證 Amazon ECR 儲存庫的 Docker 用戶端。 | 若要驗證 Amazon ECR 儲存庫的 Docker 用戶端,請在 AWS CLI 中執行「 | 雲端管理員 |
將碼頭映像推送到 Amazon ECR 存儲庫。 |
| 雲端管理員 |
建立 Amazon ECS 任務定義。 | 在 Amazon ECS 中執行 Docker 容器所需的任務定義。
如需設定任務定義的說明,請參閱「相關資源」一節中的「建立任務定義」。 重要:請務必提供您推送至 Amazon ECR 的泊塢視窗映像檔。 | 雲端管理員 |
建立 Amazon ECS 服務。 | 使用您先前建立的 ECS 叢集來建立 Amazon ECS 服務。請務必選擇 Amazon EC2 做為啟動類型,並選擇在上一步中建立的任務定義,以及 Application Load Balancer 的目標群組。 | 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立啟動組態。 | 開啟 Amazon EC2 主控台,然後建立啟動組態。確定使用者資料具有允許 EC2 執行個體加入所需 ECS 叢集的程式碼。如需所需程式碼的範例,請參閱「相關資源」一節。 | 雲端管理員 |
創建一個 Amazon EC2 Auto Scaling 組。 | 返回 Amazon EC2 主控台,然後在「Auto Scaling」下選擇「Auto Scaling」群組。設置一個 Amazon EC2 Auto Scaling 組。請確定您選擇私有子網路,並啟動先前建立的組態。 | 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
設定 AWS PrivateLink 端點。 |
如需詳細資訊,請參閱相關資源一節。 | 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 VPC 端點。 | 為您先前建立的 AWS PrivateLink 端點建立 VPC 端點。VPC 端點完整網域名稱 (FQDN) 將指向 AWS PrivateLink 端點 FQDN。這會為 DNS 端點可存取的 VPC 端點服務建立 elastic network interface。 | 雲端管理員 |
任務 | 描述 | 所需技能 |
---|---|---|
建立 Lambda 函數。 | 在 AWS Lambda 主控台上,建立 Lambda 函數,將 Application Load Balancer IP 地址更新為 Network Load Balancer 的目標。如需詳細資訊,請參閱「相關資源」一節中的「針對應用程式負載平衡器使用靜態 IP 位址」部落格文章。 | 應用程式開發人員 |
相關資源
建立負載平衡器:
建立 Amazon EFS 檔案系統:
建立 S3 儲存貯體:
建立密碼管理員密碼:
創建一個 Amazon RDS 實例:
創建 Amazon ECS 組件:
創建一個 Amazon EC2 Auto Scaling 組:
設定 AWS PrivateLink:
建立 VPC 端點:
創建 Lambda 函數:
其他資源: