使用 Elastic Beanstalk 部署容器 - AWS 方案指引

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

使用 Elastic Beanstalk 部署容器

由 Thomas Scott (AWS) 和 Jean-Baptiste Guillois (AWS) 建立

程式碼儲存庫:叢集範例應用程式

環境:生產

技術:容器與微服務 CloudNative;現代化

AWS 服務:AWSElastic Beanstalk

Summary

在 Amazon Web Services (AWS) Cloud 上,AWSElastic Beanstalk 支援 Docker 作為可用的平台,讓容器可以使用建立的環境執行。此模式說明如何使用 Elastic Beanstalk 服務部署容器。此模式的部署會使用以 Docker 平台為基礎的 Web 伺服器環境。

若要使用 Elastic Beanstalk 部署和擴展 Web 應用程式和服務,請上傳程式碼並自動處理部署。容量佈建、負載平衡、自動擴展和應用程式運作狀態監控也包含在內。當您使用 Elastic Beanstalk 時,您可以完全控制其代表您建立AWS的資源。使用 Elastic Beanstalk 並不收取其他費用。您只需為用於存放和執行應用程式AWS的資源支付費用。

此模式包含使用 AWS Elastic Beanstalk 命令列介面 (EB CLI) 和管理AWS主控台進行部署的指示。

使用案例

Elastic Beanstalk 的使用案例包括下列項目: 

  • 部署原型環境以示範前端應用程式。(此模式使用 Dockerfile 作為範例。)

  • 部署 API來處理指定網域的API請求。

  • 使用 Docker-Compose 部署協調解決方案 (docker-compose.yml 不在此模式中作為實際範例)。

先決條件和限制

先決條件

  • AWS 帳戶

  • AWS EB CLI本機安裝

  • Docker 安裝在本機電腦上

限制

  • 免費計劃上每個 IP 地址每 6 小時 Docker 提取限制為 100 次。

架構

目標技術堆疊

  • Amazon Elastic Compute Cloud (Amazon EC2) 執行個體

  • 安全群組

  • Application Load Balancer

  • Auto Scaling 群組

目標架構

使用 Elastic Beanstalk 部署容器的架構。

自動化和擴展

AWS Elastic Beanstalk 可以根據提出的請求數量自動擴展規模。AWS 針對環境建立的資源包括一個 Application Load Balancer 、Auto Scaling 群組,以及一或多個 Amazon EC2執行個體。 

負載平衡器位於 Amazon EC2執行個體的前面,這是 Auto Scaling 群組的一部分。Amazon EC2 Auto Scaling 會自動啟動其他 Amazon EC2執行個體,以適應應用程式增加的負載。如果應用程式的負載減少,Amazon EC2 Auto Scaling 會停止執行個體,但至少會讓一個執行個體持續執行。

自動擴展觸發程序

Elastic Beanstalk 環境中的 Auto Scaling 群組會使用兩個 Amazon CloudWatch 警示來啟動擴展操作。當每個執行個體的平均傳出網路流量,在五分鐘期間高於 6 MB 或低於 2 MB 時,預設的觸發條件就會擴展。若要有效使用 Amazon EC2 Auto Scaling,請設定適合您應用程式、執行個體類型和服務需求的觸發條件。您可以根據多項統計資料進行擴展,包括延遲、磁碟 I/O、CPU使用率和請求計數。如需詳細資訊,請參閱 Auto Scaling 觸發程序

工具

AWS 服務

其他服務

  • Docker 將軟體封裝到稱為 的標準化單位容器中,其中包括程式庫、系統工具、程式碼和執行時間。

Code

此模式的程式碼可在 GitHub 叢集範例應用程式儲存庫中使用。

史詩

任務描述所需的技能

複製遠端儲存庫。

  • 若要複製儲存庫,請執行命令 git clone https://github.com/aws-samples/cluster-sample-app.git。< /p>

應用程式開發人員、AWS管理員、 AWS DevOps

初始化 Elastic Beanstalk Docker 專案。

  1. 建立aws.json在根目錄呼叫的檔案。

  2. aws.json 檔案中,新增下列程式碼。

    {    "AWSEBDockerrunVersion":"1",    "Image":{       "Name":"cluster-sample-app"    },    "Ports":[       {          "ContainerPort":80,          "HostPort":8080       }    ] }
  3. eb init -p docker 在專案根上執行 命令。

應用程式開發人員、AWS管理員、 AWS DevOps

在本機測試專案。

  1. eb local run 在專案根上執行 命令。

  2. 導覽至 以測試應用程式http://localhost

應用程式開發人員、AWS管理員、 AWS DevOps
任務描述所需的技能

執行部署命令

  1. eb create docker-sample-cluster-app 在專案根上執行 命令。

應用程式開發人員、AWS管理員、 AWS DevOps

存取部署的版本。

部署命令完成後,請使用 eb open命令存取專案。

應用程式開發人員、AWS管理員、 AWS DevOps
任務描述所需的技能

使用瀏覽器部署應用程式。

  1. 開啟 主控台。

  2. 導覽至 Elastic Beanstalk 主控台。

  3. 選擇建立應用程式。

  4. 應用程式名稱 中,輸入 Cluster-Sample-App

  5. 選擇 Docker 作為平台。

  6. 選擇上傳您的程式碼。

  7. 選擇您的本機 .zip 檔案 (在複製專案的根中) 或公有 Amazon Simple Storage Service (Amazon S3) URL。

應用程式開發人員、AWS管理員、 AWS DevOps

存取部署的版本。

部署之後,請存取部署的應用程式,然後選擇URL提供的 。

應用程式開發人員、AWS管理員、 AWS DevOps

相關資源

其他資訊

使用 Elastic Beanstalk 的優點

  • 自動基礎設施佈建

  • 基礎平台的自動管理

  • 支援應用程式的自動修補和更新

  • 應用程式自動擴展

  • 自訂節點數量的能力

  • 能夠視需要存取基礎設施元件

  • 比其他容器部署解決方案更易於部署