

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

# 步驟 4：橫向擴展 MyStack
<a name="gettingstarted-scale"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

MyStack 目前只有一部應用程式伺服器。生產堆疊可能需要多部應用程式伺服器才能處理傳入流量，以及一個負載平衡器才能將傳入流量平均配送至應用程式伺服器。此架構類似下列內容。

![\[AWS OpsWorks stack architecture with load balancer, application servers, and RDS instance.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/php_walkthrough_arch_4.png)


OpsWorks Stacks 可讓您輕鬆地向外擴展堆疊。本節說明如何將第二個全年無休 PHP App Server 執行個體新增至 MyStack，並將兩個執行個體放在 Elastic Load Balancing 負載平衡器後方，以擴展堆疊的基本概念。您可以輕鬆擴展程序來新增 24 小時全年無休的任意執行個體，也可以使用時間型或負載型執行個體讓 OpsWorks Stacks 自動擴展您的堆疊。如需詳細資訊，請參閱[使用時間型和負載型執行個體管理負載](workinginstances-autoscaling.md)。

# 步驟 4.1：新增負載平衡器
<a name="gettingstarted-scale-elb"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

Elastic Load Balancing 是一種 AWS 服務，可在多個 Amazon EC2 執行個體之間自動分配傳入的應用程式流量。除了分佈流量之外，Elastic Load Balancing 還會執行下列動作：
+ 偵測運作狀態不佳的 Amazon EC2 執行個體。

  它會將流量重新路由至狀況良好的執行個體，直到狀況不良的執行個體恢復為止。
+ 自動擴展處理容量的請求，以回應傳入的流量

**注意**  
負載平衡器有兩種用途。其中一個顯而易見的用途，是使應用程式伺服器上的負載達到均衡。此外，許多網站都偏好隔離它們的應用程式伺服器和資料庫，讓使用者無法直接存取。使用 OpsWorks Stacks，您可以透過在具有公有和私有子網路的虛擬私有雲端 (VPC) 中執行堆疊來執行此操作，如下所示。  
將應用程式伺服器和資料庫放入私有子網路中，而 VPC 中的其他執行個體可以在其中存取它們，但使用者無法存取。
將使用者流量導向公有子網路中的負載平衡器，接著將流量轉遞給私有子網路中的應用程式伺服器，並將回應傳回給使用者。
如需詳細資訊，請參閱[在 VPC 中執行堆疊](workingstacks-vpc.md)。如需延伸本演練中範例以在 VPC 中執行的 CloudFormation 範本，請下載 [`OpsWorksVPCtemplates.zip` 檔案](samples/OpsWorksVPCtemplates.zip)。

雖然 Elastic Load Balancing 通常稱為 layer，但其運作方式與其他內建 layer 略有不同。您可以使用 Amazon EC2 主控台建立 Elastic Load Balancing 負載平衡器，然後將它連接到其中一個現有的 layer，通常是應用程式伺服器 layer。 OpsWorks Stacks 接著會向 服務註冊 layer 的現有執行個體，並自動新增任何新的執行個體。下列程序說明如何將負載平衡器新增至 MyStack 的 PHP App Server layer。

**注意**  
OpsWorks Stacks 不支援 Application Load Balancer。您只能搭配 Stacks OpsWorks 使用 Classic Load Balancer。

**將負載平衡器連接至 PHP App Server layer**

1. 使用 Amazon EC2 主控台為 MyStack 建立新的負載平衡器。詳細資訊取決於您的帳戶是否支援 EC2 Classic。如需詳細資訊，請參閱 [Elastic Load Balancing 入門](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/load-balancer-getting-started.html)。當您執行 **Create Load Balancer (建立負載平衡器)** 精靈時，請設定負載平衡器，如下所示：  
**Define Load Balancer (定義負載平衡器)**  
指派可輕鬆辨識的名稱給負載平衡器，例如 PHP-LB，讓您更輕鬆地在 Stacks OpsWorks 主控台中找到 。然後選擇 **Continue (繼續)** 接受其餘設定的預設值。  
如果您從 **Create LB Inside (於內部建立 LB)** 選單中選擇具有一或多個子網路的 VPC，則必須針對您想要負載平衡器路由流量的每個可用區域選取子網路。  
**Assign Security Groups (指派安全群組)**  
如果您的帳戶支援預設 VPC，精靈會顯示此頁面以決定負載平衡器的安全群組。但不會為 EC2 Classic 顯示此頁面。  
在本演練中，選擇 **default VPC security group (預設 VPC 安全群組)**。  
**Configure Security Settings (設定安全設定)**  
如果您在定義負載平衡器頁面上選擇 **HTTPS** 做為負載平衡器通訊協定，請在此頁面設定憑證、密碼和 SSL 通訊協定設定。 **Load Balancer ** ** Load Balancer** 在本演練中，接受預設值，然後選擇 **Configure Health Check (設定運作狀態檢查)**。  
**Configure Health Check (設定運作狀態檢查)**  
將 ping 路徑設定為 **/**，並接受其餘設定的預設值。  
**Add EC2 Instances (新增 EC2 執行個體)**  
選擇**繼續**； OpsWorks Stacks 會自動向負載平衡器註冊執行個體。  
**新增標籤**  
新增標籤，協助您尋找。每個標籤都是鍵/值對；例如，您可以指定 **Description** 做為鍵並指定 **Test LB** 做為值，以用於演練。  
**檢閱**  
檢閱您的選擇，並選擇 **Create (建立)**，然後選擇 **Close (關閉)**，以啟動負載平衡器。

1. 如果您的帳戶支援預設 VPC，則在您啟動負載平衡器之後，必須確保其安全群組具有適當的傳入規則。預設規則不接受任何傳入流量。

   1. 在 Amazon EC2 導覽窗格中選擇**安全群組**。

   1. 選取 **default VPC security group (預設 VPC 安全群組)**

   1. 在 **Inbound (傳入)** 標籤上，選擇 **Edit (編輯)**。

   1. 在本演練中，將 **Source (來源)** 設定為 **Anywhere (隨處)**，以指示負載平衡器接受來自任何 IP 地址的傳入流量。

1. 返回 OpsWorks Stacks 主控台。在 **Layers (Layer)** 頁面上，選擇 layer 的 **Network (網路)** 連結，然後選擇 **Edit (編輯)**。

1. 在 **Elastic Load Balancing** 下，選擇您在步驟 1 建立的負載平衡器，然後選擇 **Save (儲存)**。  
![\[Dropdown menu for Elastic Load Balancer selection with options "Available ELBs" and "None".\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/elb_select.png)

   將負載平衡器連接到 layer 之後， OpsWorks Stacks 會自動註冊 layer 的目前執行個體，並在新執行個體上線時新增執行個體。

1. 在 **Layers (Layer)** 頁面上，按一下負載平衡器的名稱，以開啟其詳細資訊頁面。當註冊完成且執行個體通過運作狀態檢查時， OpsWorks Stacks 會在負載平衡器頁面上的執行個體旁顯示綠色核取記號。  
![\[Elastic Load Balancing details page showing one EC2 instance in US-west-2a with InService status.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/elb_properties3.png)

您現在可以將請求傳送到負載平衡器來執行 SimplePHPApp。

**透過負載平衡器執行 SimplePHPApp**

1. 再次開啟負載平衡器的詳細資訊頁面 (若尚未開啟)。

1. 在屬性頁面上，驗證執行個體的運作狀態檢查狀態，然後按一下負載平衡器的 DNS 名稱來執行 SimplePHPApp。負載平衡器會將請求轉送到 PHP App Server 執行個體，並傳回回應，這看起來應該與您按一下 PHP App Server 執行個體的公有 IP 地址時收到的回應完全相同。  
![\[Elastic Load Balancing settings showing DNS name for PHP-LB in US West region.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/elb_properties2.png)

**注意**  
OpsWorks Stacks 也支援 HAProxy 負載平衡器，這對於某些應用程式可能具有優勢。如需詳細資訊，請參閱[HAProxy OpsWorks Stacks Layer](layers-haproxy.md)。

# 步驟 4.2：新增 PHP 應用程式伺服器執行個體
<a name="gettingstarted-scale-instances"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

現在負載平衡器已就緒，您可以將更多執行個體新增至 PHP App Server layer 來擴展堆疊。從您的觀點而言，操作會無縫進行。每次新的 PHP App Server 執行個體上線時， OpsWorks Stacks 會自動向負載平衡器註冊它並部署 SimplePHPApp，以便伺服器可以立即開始處理傳入流量。為了簡潔起見，本主題說明如何新增一個額外的 PHP App Server 執行個體，但您可以使用相同的方法來新增所需的數量。

**將另一個執行個體新增至 PHP App Server layer**

1. 在執行個體頁面上，按一下 **PHP App Server** 下的 **\$1 執行個體**。

1. 接受預設設定，然後按一下 **Add Instance (新增執行個體)**。

1. 按一下 **start (啟動)** 以啟動執行個體。

# 步驟 4.3：監控 MyStack
<a name="gettingstarted-scale-monitor"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

OpsWorks Stacks 使用 Amazon CloudWatch 來提供堆疊的指標，並在**監控**頁面上摘要這些指標，方便您使用。您可以檢視整個堆疊、指定 layer 或指定執行個體的指標。

**監控 MyStack**

1. 在導覽窗格中，按一下 **Monitoring (監控)**，以顯示一組具有每 layer 平均指標的圖形。您可以使用 **CPU System (CPU 系統)**、**Memory Used (已使用記憶體)** 和 **Load (負載)** 的選單來顯示不同的相關指標。  
![\[Monitoring dashboard showing CPU, memory, load, and process metrics over time for system layers.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/monitor_stack.png)

1. 按一下 **PHP App Server**，查看該 layer 每個執行個體的指標。  
![\[Dashboard showing CPU, memory, load, and processes metrics for Layer PHP App Server over time.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/monitor_layer.png)

1. 按一下 **php-app1**，查看該執行個體的指標。您可以移動滑桿來查看任何特定時間點的指標。  
![\[Dashboard showing CPU, memory, load, and process metrics for a PHP application instance.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/monitor_instance.png)

**注意**  
OpsWorks Stacks 也支援 Ganglia 監控伺服器，這對於某些應用程式可能具有優勢。如需詳細資訊，請參閱[Ganglia 層](workinglayers-ganglia.md)。