

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

# Elastic Load Balancing Layer
<a name="layers-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 的運作方式與 OpsWorks Stacks layer 略有不同。您可以使用 Elastic Load Balancing 主控台或 API 來建立負載平衡器，然後將其連接到現有的 layer，而不是建立 layer 並將其新增至其中。除了將流量分配到 layer 的執行個體之外，Elastic Load Balancing 還會執行下列動作：
+ 偵測運作狀態不佳的 Amazon EC2 執行個體，並將流量重新路由至其餘運作狀態良好的執行個體，直到恢復運作狀態不佳的執行個體為止。
+ 自動擴展處理容量的請求，以回應傳入的流量。
+ 若您啟用[連接耗盡](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html)，負載平衡器會停止將新的請求傳送至狀況不良或即將取消註冊的執行個體，但會在到達指定的逾時值之前保持連線，讓執行個體完成任何傳遞中的請求。

將負載平衡器連接到 layer 之後， OpsWorks Stacks 會執行下列動作：
+ 取消註冊任何目前註冊的執行個體。
+ 在該層的執行個體上線時自動註冊，並在執行個體離線時取消註冊，包含負載式和時間式執行個體。
+ 自動開始在可用區域將請求路由傳送到註冊的執行個體。

如果您已啟用負載平衡器的[連線耗盡](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-conn-drain.html)功能，您可以指定 Stacks OpsWorks 是否支援它。如果您啟用連線耗盡支援 （預設設定），則在執行個體關閉後， OpsWorks Stacks 會執行下列動作：
+ 從負載平衡器取消註冊執行個體。

  負載平衡器會停止傳送新的請求，並啟動連接耗盡。
+ 延遲觸發[關機生命週期事件](workingcookbook-events.md)，直到負載平衡器完成連接耗盡。

如果您未啟用連線耗盡支援，即使執行個體仍連接至負載平衡器， OpsWorks Stacks 仍會在執行個體關閉後立即觸發關機事件。

若要搭配堆疊使用 Elastic Load Balancing，您必須先使用 Elastic Load Balancing 主控台、CLI 或 API，在相同區域中建立一或多個負載平衡器。建議您注意以下事項：
+ 您只能將一個負載平衡器連接到一個 layer。
+ 每個負載平衡器只能處理一個 layer。
+ OpsWorks Stacks 不支援 Application Load Balancer。您只能搭配 OpsWorks Stacks 使用 Classic Load Balancer。

這表示您必須為要平衡的每個堆疊中的每個層建立單獨的 Elastic Load Balancing 負載平衡器，並僅將其用於該目的。建議的做法是為您計劃與 OpsWorks Stacks 搭配使用的每個 Elastic Load Balancing 負載平衡器指派獨特的名稱，例如 MyStack1-RailsLayer-ELB，以避免將負載平衡器用於多個用途。

**重要**  
建議您為 Stacks 層建立新的 Elastic Load Balancing OpsWorks 負載平衡器。如果您選擇使用現有的 Elastic Load Balancing 負載平衡器，您應該先確認它未用於其他用途，也沒有連接的執行個體。在負載平衡器連接到 layer 之後，OpsWorks 會移除任何現有的執行個體，並設定負載平衡器，使其僅處理 layer 的執行個體。雖然在技術上可以使用 Elastic Load Balancing 主控台或 API 在將負載平衡器連接到 layer 之後修改負載平衡器的組態，但您不應該這麼做；變更不會永久存在。

**將 Elastic Load Balancing 負載平衡器連接到 layer**

1. 如果您尚未這麼做，請使用 [Elastic Load Balancing 主控台](https://console.aws.amazon.com/ec2/#s=LoadBalancers)、API 或 CLI 在堆疊的區域中建立負載平衡器。當您建立負載平衡器時，請執行下列作業：
   + 請務必指定適合您應用程式的運作狀態檢查 ping 路徑。

     預設 ping 路徑為 `/index.html`，因此若您的應用程式根並未包含 `index.html`，您必須指定適當的 ping 路徑，否則運作狀態檢查會失敗。
   + 若您欲使用[連接耗盡](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/config-conn-drain.html)，請確認已啟用該功能，並且具有適當的逾時值。

   如需詳細資訊，請參閱 [Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html)。

1. [建立您希望平衡的 layer](workinglayers-basics-create.md) 或[編輯現有 layer 的網路設定](workinglayers-basics-edit.md)。
**注意**  
您無法在建立自訂 layer 時連接負載平衡器。您必須編輯 layer 的設定。

1. 在 **Elastic Load Balancing** 下，選取您要連接到 layer 的負載平衡器，並指定是否要 Stacks OpsWorks 支援連線耗盡。

將負載平衡器連接到 layer 之後， OpsWorks Stacks 會在堆疊的執行個體上觸發[設定生命週期事件](workingcookbook-events.md)，通知他們變更。當您分離負載平衡器時， OpsWorks Stacks 也會觸發設定事件。

**注意**  
執行個體啟動後， OpsWorks Stacks 會執行[安裝和部署配方](workingcookbook-executing.md)，以安裝套件和部署應用程式。在這些配方完成後，執行個體會處於線上狀態，且 OpsWorks Stacks 會向 Elastic Load Balancing 註冊執行個體。當執行個體上線後， OpsWorks Stacks 也會觸發設定事件。這表示 Elastic Load Balancing 註冊和設定配方可以同時執行，而且執行個體可能會在設定配方完成之前註冊。為了確保配方在向 Elastic Load Balancing 註冊執行個體之前完成，您應該將配方新增至 layer 的設定或部署生命週期事件。如需詳細資訊，請參閱[執行配方](workingcookbook-executing.md)。

有時候將執行個體從負載平衡器移除也會非常有用。例如，當您更新應用程式時，我們建議您將應用程式部署至單一執行個體，並在將其部署到每個執行個體前，驗證應用程式已正常運作。您通常會將執行個體從負載平衡器移除，使其在您完成驗證更新之前不會接收到使用者請求。

您必須使用 Elastic Load Balancing 主控台或 API，暫時從負載平衡器移除線上執行個體。以下說明如何使用主控台。

**暫時將執行個體從負載平衡器移除**

1. 開啟 [Amazon EC2 主控台](https://console.aws.amazon.com/ec2/)，然後選擇**負載平衡器**。

1. 選擇適當的負載平衡器，然後開啟 **Instances (執行個體)** 標籤。

1. 在執行個體的 **Actions (動作)** 資料行中，選擇 **Remove from Load Balancer (從負載平衡器移除)**。

1. 當您完成時，請選擇 **Edit Instances (編輯執行個體)**，然後將執行個體返回負載平衡器。

**重要**  
如果您使用 Elastic Load Balancing 主控台或 API 從負載平衡器移除執行個體，您還必須使用 Elastic Load Balancing 將其放回。 OpsWorks Stacks 不知道您使用其他服務主控台或 APIs 執行的操作，而且不會將執行個體傳回負載平衡器。有時候， OpsWorks Stacks 可以將執行個體新增回 ELB，但這並不保證行為，而且不會在所有情況下發生。

您可以將多個負載平衡器連接到特定的執行個體組，如下所示：

**連接多個負載平衡器**

1. 使用 [Elastic Load Balancing 主控台](https://console.aws.amazon.com/ec2/#s=LoadBalancers)、API 或 CLI 來建立一組負載平衡器。

1. 為每個負載平衡器[建立自訂 layer](workinglayers-custom.md)，並將其中一個負載平衡器連接到該 layer。您不需要為這些 layer 實作任何自訂配方。預設自訂 layer 已足夠。

1. 將[執行個體組新增](workinginstances-add.md)至每個自訂 layer。

您可以藉由前往執行個體頁面並按一下適當的負載平衡器名稱，來檢查負載平衡器的屬性。

![\[PHP App Server table showing two online instances with their details and status.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/elb_view.png)


**ELB** 頁面會顯示負載平衡器的基本屬性，包含其 DNS 名稱和關聯執行個體的運作狀態。若堆疊正在 VPC 中執行，頁面會顯示子網路，而非可用區域。綠色的核取記號表示運作狀態良好的執行個體。您可以按一下名稱透過負載平衡器以連線到伺服器。

![\[ELB My-Stack-PHP settings showing DNS name, layer, region, and instance status.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/elb_properties.png)
