AWS OpsWorks 堆疊 - AWS OpsWorks

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

AWS OpsWorks 堆疊

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

雲端運算通常涉及 AWS 資源群組,例如 Amazon EC2 執行個體和 Amazon Relational Database Service (RDS) 執行個體,這些執行個體必須共同建立和管理。例如,web 應用程式通常需要應用程式伺服器、資料庫伺服器、負載平衡器等。這個執行個體群組通常稱為「堆疊」。一個簡易的應用程式伺服器堆疊看起來可能會如下。

Diagram showing users connecting to app servers through internet and load balancer, with a shared database.

除了建立執行個體和安裝必要的套件之外,您通常需要一種將應用程式分佈到應用程式伺服器、監控堆疊效能、管理安全及許可等的方式。

AWS OpsWorks Stacks 提供了一種簡單而靈活的方式來建立和管理堆疊和應用程式。

以下是基本應用程式伺服器堆疊使用 AWS OpsWorks Stacks 的外觀。它由一組在 Elastic Load Balancing 負載平衡器後方執行的應用程式伺服器組成,以及後端 Amazon RDS 資料庫伺服器。

AWS OpsWorks stack with load balancer, application servers, and Amazon RDS instance.

儘管相對簡單,但此堆棧顯示了所有關鍵的 AWS OpsWorks 堆棧功能。以下是它構成的方式。

堆疊

疊是核心 AWS OpsWorks 堆疊元件。它基本上是 AWS 資源 (Amazon EC2 執行個體、Amazon RDS 資料庫執行個體等) 的容器,這些資源具有共同目的且應該在邏輯上一起管理。堆疊可協助您將這些資源做為群組管理,也可以讓您定義一些預設組態設定,例如執行個體的作業系統和 AWS 區域。若您希望隔離一些堆疊元件,避免與使用者直接互動,您可以在 VPC 中執行堆疊。

圖層

您可以藉由新增一或多個 layer 來定義堆疊的組成內容。層代表一組用於特定用途的 Amazon EC2 執行個體,例如為應用程式提供服務或託管資料庫伺服器。

您可以透過修改套件的預設組態,新增 Chef 配方以執行像是安裝額外套件等的任務,來自訂或延伸 layer。

對於所有堆疊, AWS OpsWorks Stack 都包含代表下列 AWS 服務的服務

  • Amazon Relational Database Service

  • Elastic Load Balancing

  • Amazon Elastic Container Service

Layer 可讓您完全控制要安裝的套件、其設定的方式、部署應用程式的方式等。

食譜與 LifeCycle 活動

Layer 會根據 Chef 配方處理像是在執行個體上安裝套件、部署應用程式、執行指令碼等任務。其中一個重要的 AWS OpsWorks 堆疊功能是一組生命週期事件 — 設定、設定、部署、取消部署和關閉 — 這些事件會在每個執行個體上適當的時間自動執行一組指定的配方。

每一 layer 都可以為每個生命週期事件指派一組配方,處理該事件和 layer 的各種任務。例如,屬於 Web 伺服器層的執行個體完成開機後, AWS OpsWorks Stacks 會執行下列動作。

  1. 執行 layer 的安裝配方,執行像是安裝和設定 web 伺服器等的任務。

  2. 執行 layer 的部署配方,將 layer 的應用程式從儲存庫部署到執行個體,並執行相關任務 (例如重新啟動服務)。

  3. 在堆疊中的每個執行個體上執行設定配方,使每個執行個體可視需要調整自身的組態,以適應新的執行個體。

    例如,在執行負載平衡器的執行個體上,設定配方可能會修改負載平衡器的組態,以包含新的執行個體。

如果實例屬於多個圖層, AWS OpsWorks Stacks 會為每個圖層運行配方,例如,您可以擁有一個支持 PHP 應用程序服務器和 MySQL 數據庫服務器的實例。

如果您已實作配方,您可以將每個配方指派到適當的圖層和事件,而 AWS OpsWorks 堆疊會在適當的時間自動為您執行這些配方。您也可以隨時手動執行配方。

執行個體

執行個體代表單一運算資源,例如 Amazon EC2 執行個體。它定義了資源的基本組態,例如作業系統和大小。其他組態設定,例如彈性 IP 地址或 Amazon EBS 磁碟區,則由執行個體的層定義。layer 的配方會透過執行像是安裝和設定套件及部署應用程式等任務,來完成組態。

您可以使用「 AWS OpsWorks 堆疊」建立實體,並將它們加入圖層。啟動執行個體時, AWS OpsWorks Stacks 會使用執行個體及其層指定的組態設定來啟動 Amazon EC2 執行個體。Amazon EC2 執行個體完成開機後, AWS OpsWorks Stacks 會安裝代理程式來處理執行個體與服務之間的通訊,並執行適當的配方以回應生命週期事件。

AWS OpsWorks 堆疊支援下列執行個體類型,其特點是如何啟動和停止。

  • 全年無休執行個體為手動啟動,並會持續執行到您停止他們。

  • AWS OpsWorks Stacks 會依指定的每日和每週排程執行以時間為基礎的執行個體

    他們可讓您的堆疊自動調整執行個體的數目,以適應可預測的用量模式。

  • AWS OpsWorks Stacks 會根據指定的負載指標 (例如 CPU 使用率) 自動啟動和停止負載型執行個體。

    他們可讓您的堆疊自動調整執行個體的數目,以適應傳入流量的變化。負載式執行個體僅適用於 Linux 式的堆疊。

AWS OpsWorks 堆棧支持實例自動修復。如果代理程式停止與服務通訊, AWS OpsWorks Stacks 會自動停止執行個體並重新啟動。

您也可以將以 Linux 為基礎的運算資源整合到 Stack 以外建立的 AWS OpsWorks 堆疊中。

  • 您使用 Amazon EC2 主控台、CLI 或 API 直接建立的 Amazon EC2 執行個體。

  • 在您自己的硬體上執行的「現場部署」執行個體,包括在虛擬機器中執行的執行個體。

註冊其中一個執行個體後,它就會變成 AWS OpsWorks Stacks 實體,而且您可以使用與使用 St AWS OpsWorks acks 建立的執行個體相同的方式進行管理。

應用程式

您可以將應用程式和相關檔案存放在儲存庫中,例如 Amazon S3 儲存貯體。每個應用程式都會以一個「應用程式」代表,指定應用程式類型並包含從儲存庫將應用程式部署到您執行個體所需要的資訊,例如儲存庫 URL 和密碼。部署應用程式時, AWS OpsWorks Stacks 會觸發 Deploy 事件,該事件會在堆疊的執行個體上執行 Deploy 方法。

您可採用以下方式來部署應用程式:

  • 自動化 — 當您啟動執行個體時, AWS OpsWorks Stack 會自動執行執行個體的部署方法。

  • 手動 – 若您有新的應用程式,或希望更新現有的應用程式,您可以手動執行線上執行個體的部署配方。

您通常會讓 AWS OpsWorks Stack 在整個堆疊上執行 Deploy 方法,如此一來,其他層的執行個體就能適當地修改其設定。但是,舉例來說,若您希望在將應用程式部署到每個應用程式伺服器執行個體前測試新的應用程式,您可以將部署限制在執行個體一部分的子集。

自訂您的 Stack

AWS OpsWorks Stacks 提供各種自訂 layer 的方式,以滿足您的特定需求:

  • 您可以透過覆寫代表各種組態設定的屬性,甚至覆寫用於建立組態檔的範本,來修改 AWS OpsWorks Stack 配置套件的方式。

  • 您可以透過提供您自己的配方,執行像是執行指令碼或安裝和設定非標準套件等任務來延伸現有的 layer。

所有堆疊可包含一或多個 layer。一開始的 layer 只會有最小的配方組。您透過實作配方,處理像是安裝套件、部署應用程式等任務,來將功能新增到 layer。您可以將自訂配方和相關檔案封裝在一或多食譜中,並將食譜存放在 Amazon S3 或 Git 等儲存庫中。

您可以手動執行配方,但 AWS OpsWorks Stacks 也能讓您透過支援一組五個生命週期事件來自動化程序:

  • Setup (安裝) 會在新的執行個體成功開機之後發生。

  • Configure (設定) 會在執行個體進入或離開線上狀態時,在所有堆疊的執行個體上發生。

  • Deploy (部署) 會在您部署應用程式時發生。

  • Undeploy (解除部署) 會在您刪除應用程式時發生。

  • Shutdown (關機) 會在您停止執行個體時發生。

每個 layer 都可以將任何數目的配方指派給每個事件。當生命週期事件發生在圖層的實體上時, AWS OpsWorks 堆疊會執行相關的配方。例如,當應用程式伺服器執行個體上發生 Deploy 事件時, AWS OpsWorks Stacks 會執行圖層的部署方法來下載應用程式或執行相關工作。

資源管理

您可以將其他 AWS 資源 (例如彈性 IP 地址) 併入您的堆疊。您可以使用 AWS OpsWorks Stacks 主控台或 API 向堆疊註冊資源、將已註冊的資源附加至執行個體或從執行個體中分離,以及將資源從一個執行個體移至另一個執行個體。

安全與許可

AWS OpsWorks Stack 與 AWS Identity and Access Management (IAM) 整合,提供強大的方式來控制使用者存取 AWS OpsWorks 堆疊的方式,包括下列各項:

  • 個別使用者如何與每個堆疊互動,例如他們是否可以建立堆疊資源 (例如層和執行個體),或是否可以使用 SSH 或 RDP 連接到堆疊的 Amazon EC2 執行個體。

  • AWS OpsWorks 堆疊如何代表您採取行動,與 AWS 資源 (例如 Amazon EC2 執行個體) 互動。

  • 在 AWS OpsWorks 堆疊執行個體上執行的應用程式如何存取 AWS 資源,例如 Amazon S3 儲存貯體。

  • 如何管理使用者的公有 SSH 金鑰和 RDP 密碼,以及連線到執行個體。

監控和記錄

AWS OpsWorks Stacks 提供多種功能,可協助您監控堆疊,並針對堆疊和任何配方進行疑難排解問題。針對所有堆疊:

  • AWS OpsWorks 堆疊提供一組 Linux 堆疊的自訂 CloudWatch 指標,為了方便您在監控頁面上進行摘要。

    AWS OpsWorks 堆疊支援 Windows 堆疊的 CloudWatch 標準度量。您可以使用 CloudWatch 控制台監視它們。

  • CloudTrail 日誌,記錄您的 AWS 帳戶中由 Stacks 或代表 AWS OpsWorks Stack 發出的 API 呼叫。

  • 事件日誌會列出您堆疊中的所有事件。

  • Chef 日誌會詳細記載針對每個執行個體上每個生命週期事件進行的行為,例如執行了哪些配方,以及發生了哪些錯誤。

以 Linux 為基礎的堆疊也可以包含 Ganglia 主要層,您可以使用它來收集並顯示堆疊中執行個體的詳細監視資料。

CLI、開發套件和 AWS CloudFormation 範本

除了主控台之外, AWS OpsWorks Stacks 還支援多種語言的命令列介面 (CLI) 和 SDK,可用來執行任何作業。考量這些功能:

您也可以使用 AWS CloudFormation 範本來佈建堆疊。如需一些範例,請參閱 AWS OpsWorks 程式碼片段