

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

# HAProxy OpsWorks Stacks Layer
<a name="layers-haproxy"></a>

**注意**  
此 layer 僅適用於 Chef 11 或更舊的 Linux 類型堆疊。

 OpsWorks Stacks HAProxy layer 是 OpsWorks Stacks layer，可為託管 [HAProxy](http://haproxy.1wt.eu/) 伺服器的執行個體提供藍圖，這是可靠的高效能 TCP/HTTP 負載平衡。一個小型執行個體通常便足以處理所有應用程式伺服器流量。

**注意**  
堆疊會限制在單一區域。若要將您的應用程式分散至多個區域，您必須為每個區域分別建立堆疊。

**建立 HAProxy layer**

1. 在導覽窗格中，按一下 **Layers (Layer)**。

1. 在 **Layers (Layer)** 頁面上，按一下 **Add a Layer (新增 Layer)** 或 **\$1 Layer (\$1Layer)**。針對 **Layer type (Layer 類型)**，選取 **HAProxy**。

layer 具有下列組態設定，所有設定皆為選擇性。

**HAProxy statistics (HAProxy 統計)**  
layer 是否會收集及顯示統計。預設值為 **Yes (是)**。

**Statistics URL (統計 URL)**  
統計頁面的 URL 路徑。完整的 URL 為 http://*DNSName**StatisticsPath*，其中 *DNSName* 是關聯執行個體的 DNS 名稱。預設 *StatisticsPath* 值為 /haproxy？stats，對應於類似：http://ec2-54-245-151-7.us-west-2.compute.amazonaws.com/haproxy?stats。

**Statistics user name (統計使用者名稱)**  
統計資料頁面的使用者名稱，您必須提供才能檢視統計資料頁面。預設值為「opsworks」。

**Statistics password (統計密碼)**  
統計頁面的密碼，您必須提供此密碼才能檢視統計頁面。預設值為隨機產生的字串。

**Health check URL (運作狀態檢查 URL)**  
運作狀態檢查 URL 前綴。HAProxy 使用此 URL 在每個應用程式伺服器執行個體上定期呼叫 HTTP 方法，以判斷執行個體是否正常運作。若運作狀態檢查失敗，HAProxy 會停止將流量路由至執行個體，直到其透過手動方式或[自動修復](workinginstances-autohealing.md)重新啟動。URL 前綴的預設值為 "/"，其對應到伺服器執行個體的首頁：http://*DNSName*/。

**Health check method (運作狀態檢查方法)**  
用於檢查執行個體是否正常運作的 HTTP 方法。預設值為 **OPTIONS**，您也可以指定 **GET** 或 **HEAD**。如需詳細資訊，請參閱 [httpchk](http://cbonte.github.io/haproxy-dconv/configuration-1.5.html)。

**自訂安全群組**  
如果您選擇不自動將內建 OpsWorks 的 Stacks 安全群組與 layer 建立關聯，則會顯示此設定。您必須指定要和 layer 關聯的安全群組有哪些。請確認群組具備正確的設定，可允許 layer 之間的流量。如需詳細資訊，請參閱[建立新的堆疊](workingstacks-creating.md)。

![\[HAProxy layer configuration form with options for statistics and health check settings.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/add_layer_haproxy.png)


**注意**  
記錄密碼以供日後使用； OpsWorks Stacks 不允許您在建立 layer 之後檢視密碼。但是，您可以透過前往 layer 的 **Edit (編輯)** 頁面，然後按一下 **General Settings (一般設定)** 標籤上的 **Update password (更新密碼)** 來更新密碼。  

![\[HAProxy layer settings interface with options for statistics, health checks, and auto healing.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/haproxy_update_password.png)


## HAProxy Layer 的運作方式
<a name="w2ab1c14c71b9c21c13c19"></a>

根據預設，HAProxy 會執行下列作業：
+ 接聽 HTTP 和 HTTPS 連接埠的請求。

  您可以透過覆寫 Chef 組態範本 (`haproxy.cfg.erb`) 來設定 HAProxy 僅接聽 HTTP 或 HTTPS 連接埠。
+ 將傳入流量路由至任何身為應用程式伺服器 layer 成員的執行個體。

  根據預設， OpsWorks Stacks 會將 HAProxy 設定為將流量分散至屬於任何應用程式伺服器層成員的執行個體。例如，您可以同時擁有 Rails App Server 和 PHP App Server 層的堆疊，HAProxy 主節點會將流量分配到兩個層中的執行個體。您可以透過使用自訂配方，來設定預設路由。
+ 路由流量至多個可用區域

  若其中一個可用區域停機，負載平衡器會將傳入流量路由至其他區域內的執行個體，讓您的應用程式可繼續運作，而無須中斷。因此，建議的做法為將您的應用程式伺服器分散至多個可用區域。
+ 定期在每個應用程式伺服器執行個體上執行指定的運作狀態檢查方法，以評估其運作狀態。

  如果方法未在指定的逾時期間內傳回，則假設執行個體失敗，HAProxy 會停止將請求路由到執行個體。 OpsWorks Stacks 也提供自動取代失敗執行個體的方法。如需詳細資訊，請參閱[使用自動修復](workinginstances-autohealing.md)。您可以在您建立 layer 時變更運作狀態檢查方法。
+ 收集統計並選擇性的將他們顯示在網頁上。

**重要**  
若要使運作狀態檢查搭配預設的 OPTIONS 方法正常運作，您的應用程式必須傳回 2xx 或 3xx 狀態碼。

根據預設，當您將執行個體新增至 HAProxy layer 時， OpsWorks Stacks 會為其指派一個彈性 IP 地址來代表應用程式，該應用程式對世界是公有的。由於 HAProxy 執行個體的彈性 IP 地址是應用程式唯一公開的 URL，因此您不需要為基礎應用程式伺服器執行個體建立和管理公有網域名稱。您可以透過前往**執行個體**頁面，檢查執行個體的公有 IP 地址來取得地址，如下圖所示。後方跟隨 (EIP) 的地址即為彈性 IP 地址。如需彈性 IP 地址的詳細資訊，請參閱[彈性 IP 地址 (EIP)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)。

![\[HAProxy instance table showing hostname, status, size, type, AZ, and public IP address.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/load_balancer_elastic_ip.png)


當您停止 HAProxy 執行個體時， OpsWorks Stacks 會保留彈性 IP 地址，並在重新啟動執行個體時將其重新指派給執行個體。如果您刪除 HAProxy 執行個體，根據預設， OpsWorks Stacks 會刪除執行個體的 IP 地址。若要保留地址，請清除 **Delete instance's Elastic IP (刪除執行個體的彈性 IP)** 選項，如下圖所示。

![\[HAProxy instance deletion confirmation dialog with option to retain Elastic IP address.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/delete_lb.png)


此選項會影響您將新的執行個體新增至 layer 以取代遭刪除執行個體時會發生的情況。
+ 如果您保留已刪除執行個體的彈性 IP 地址， OpsWorks Stacks 會將該地址指派給新的執行個體。
+ 否則， OpsWorks Stacks 會將新的彈性 IP 地址指派給執行個體，而且您必須更新 DNS 註冊商設定，才能映射到新的地址。

當應用程式伺服器執行個體上線或離線時，無論是手動或由於[自動擴展](workinginstances-autoscaling.md)或[自動修復](workinginstances-autohealing.md)，負載平衡器組態都必須更新，以將流量路由到目前的線上執行個體集。此任務會由 layer 的內建配方自動處理：
+ 當新的執行個體上線時， OpsWorks Stacks 會觸發設定[生命週期事件](workingcookbook-events.md)。HAProxy layer 的內建設定配方會更新負載平衡器組態，因此也會將請求分發到任何新的應用程式伺服器執行個體。
+ 當執行個體離線或執行個體運作狀態檢查失敗時， OpsWorks Stacks 也會觸發設定生命週期事件。HAProxy 設定配方會更新負載平衡器的組態，只將流量路由至剩餘的線上執行個體。

最後，您也可以搭配 HAProxy layer 使用自訂網域。如需詳細資訊，請參閱[使用自訂網域](workingapps-domains.md)。

## 統計頁面
<a name="w2ab1c14c71b9c21c13c21"></a>

如果您已啟用統計資料頁面，HAProxy 會在指定的 URL 顯示包含各種指標的頁面。

**檢視 HAProxy 統計資料**

1. 從執行個體**的詳細資訊**頁面取得 HAProxy 執行個體的**公有 DNS** 名稱，並將其複製。

1. 在**圖層**頁面上，按一下 **HAProxy** 開啟圖層的詳細資訊頁面。

1. 從圖層詳細資訊取得統計資料 URL，並將其附加至公有 DNS 名稱。例如：**http://ec2-54-245-102-172.us-west-2.compute.amazonaws.com/haproxy?stats**. 至它。

1. 將先前步驟中的 URL 在您的瀏覽器中貼上，然後使用您在建立 layer 時指定的使用者名稱及密碼以開啟統計頁面。  
![\[HAProxy statistics report showing process information and session data for frontend and backend servers.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/haproxy_stats.png)