設定 Classic Load Balancer - AWS Elastic Beanstalk

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

設定 Classic Load Balancer

啟用負載平衡,您的 AWS Elastic Beanstalk 環境會配備 Elastic Load Balancing 負載平衡器,將流量分配到您環境中的執行個體。Elastic Load Balancing 支援多種類型的負載平衡器。若要了解這些資訊,請參閱 Elastic Load Balancing 使用者指南。Elastic Beanstalk 可以為您建立負載平衡器,或讓您指定已建立的共享負載平衡器。

本主題說明 Elastic Beanstalk 建立並專用於您環境的Classic Load Balancer 的組態。如需設定 Elastic Beanstalk 支援之所有負載平衡器類型的詳細資訊,請參閱您的 Elastic Beanstalk 環境的負載平衡器

注意

您可以選擇您的環境只會在環境建立時使用的負載平衡器類型。之後您可以變更設定,以管理執行之環境的負載平衡器行為。

簡介

Classic Load Balancer 是 Elastic Load Balancing 上一代的負載平衡器。其支援路由傳送 HTTP、HTTPS 或 TCP 請求流量到不同的連接埠環境執行個體。

當環境使用 Classic Load Balancer 時,Elastic Beanstalk 會預設將它設定為監聽連接埠 80 上的 HTTP 流量,轉送給同一連接埠上的執行個體。雖然您無法刪除連接埠 80 預設接聽程式,但您可以停用它,藉由封鎖流量來達到相同的功能。請注意,您可以新增或刪除其他偵聽程式。若要支援安全連線,您可以設定負載平衡器使用 443 埠上的接聽程式和 TLS 憑證。

負載平衡器使用運作狀態檢查功能,判斷執行您應用程式的 Amazon EC2 執行個體狀態是否良好。運作狀態檢查以設定的間隔發出請求至指定的 URL。如果 URL 傳回錯誤訊息,或是無法在指定的逾時期間內回傳,運作狀態檢查就會失敗。

如果您的應用程式在處理從單一伺服器上同一個用戶端傳來的多個請求時,表現較為理想,則您可以設定負載平衡器使用黏性工作階段。使用黏性工作階段時,負載平衡器會在 HTTP 回應中加入 cookie,此 cookie 可用來識別處理請求的 Amazon EC2 執行個體。從同一個用戶端收到後續的請求時,負載平衡器會使用 cookie,來將請求傳送給同一個執行個體。

若使用跨區域負載平衡,Classic Load Balancer 的每個負載平衡器節點會將請求平均分配到所有已啟用可用區域中已註冊的執行個體。若顯示跨區域負載平衡,每個負載平衡器節點會平均地將請求僅分配到其可用區域中已註冊的執行個體。

如果執行個體因為變得運作狀態不佳或環境規模縮減,而從負載平衡器移除,則在結束該執行個體與負載平衡器間的連線之前,連接耗盡功能會給執行個體時間來完成請求。您可以變更留給執行個體來傳送回應的時間長短,或完全停用連接耗盡功能。

注意

當您使用 Elastic Beanstalk 主控台或 EB CLI 建立環境時,連接耗盡功能會預設為啟用。如果使用其他用戶端,您可以透過組態選項來啟用此功能。

您可以使用進階的負載平衡器設定,在任意通訊埠上設定接聽程式、修改其他的黏性工作階段設定,和設定負載平衡器安全地連線到 EC2 執行個體。透過組態選項即可使用這些設定,這些選項可以在原始程式碼中使用組態檔案來設定,或是使用 Elastic Beanstalk API 直接在環境上設定。這些設定大多也能在 Elastic Beanstalk 主控台使用。此外,您可以設定負載平衡器將存取日誌上傳到 Amazon S3。

使用 Elastic Beanstalk 主控台設定 Classic Load Balancer

在環境建立期間或之後在環境執行時,您可以使用 Elastic Beanstalk 主控台設定 Classic Load Balancer 的連接埠、HTTPS 憑證和其他設定。

注意

建立環境主控台精靈上的 Classic Load Balancer (CLB) 選項已停用。如果您已使用 Classic Load Balancer 設定現有環境,則可以使用 Elastic Beanstalk 主控台或 EB CLI 來 複製現有環境以建立新的環境。您也可以選擇使用 EB CLI 或 AWS CLI 來建立使用 Classic Load Balancer 設定的新環境。這些命令列工具會建立具有 CLB 的新環境,即使您的帳戶中沒有環境存在亦然。

若要在 Elastic Beanstalk 主控台設定執行中環境的 Classic Load Balancer
  1. 開啟 Elastic Beanstalk 主控台,然後在 Regions (區域) 清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. Load balancer (負載平衡器) 組態類別中,選擇 Edit (編輯)

    注意

    如果 Load balancer (負載平衡器) 組態類別沒有 Edit (編輯) 按鈕,您的環境便沒有負載平衡器。若要了解如何設定一個負載平衡器,請參閱 變更環境類型

  5. 根據環境所需,變更 Classic Load Balancer 組態。

  6. 若要儲存變更,請選擇頁面底部的儲存變更

接聽程式

使用此名單為您的負載平衡器指定接聽程式。每個接聽程式會使用指定的通訊協定,在指定的連接埠將傳入用戶端流量路由傳送到您的執行個體。最初清單會顯示預設接聽程式,其會將連接埠 80 的 HTTP 傳入流量轉送到您接聽到連接埠 80 上 HTTP 流量的環境執行個體伺服器。

注意

雖然您無法刪除連接埠 80 預設接聽程式,但您可以停用它,藉由封鎖流量來達到相同的功能。

Classic Load Balancer 組態 - 編輯接聽程式
要設定現有的接聽程式
  1. 選取表格項目旁的核取方塊,選擇 Actions (動作),然後選擇您要的動作。

  2. 如果您選擇 Edit (編輯),使用 Classic Load Balancer listener (Classic Load Balancer 接聽程式) 對話方塊編輯設定,然後選擇 Save (儲存)

例如,如果您希望負載平衡器依原狀轉傳請求,您可以編輯預設的接聽程式,並將 Protocol (通訊協定)HTTP 變更為 TCP。這可防止負載平衡器重新撰寫標頭 (包括 X-Forwarded-For)。此技術不適用黏性工作階段。

Classic Load Balancer 組態 - 變更預設接聽程式的通訊協定為 TCP
加入接聽程式
  1. 選擇 Add listener (新增接聽程式)

  2. Classic Load Balancer listener (Classic Load Balancer 接聽程式) 對話方塊中,設定所需的設定,然後選擇 Add (新增)

新增安全的接聽程式是常用案例。下圖中的範例在連接埠 443 新增 HTTPS 流量的接聽程式。此接聽程式將傳入流量路由傳送到環境執行個體伺服器,其接聽連接埠 443 上的 HTTPS 流量。

在設定接聽程式之前,請確定您擁有有效的 SSL 憑證。執行以下任意一項:

  • 如果 AWS Certificate Manager (ACM) 可在您的 AWS 區域中使用,請使用 ACM 建立或匯入憑證。如需請求 ACM 憑證的詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的請求憑證。如需有關將第三方憑證匯入 ACM 的詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的匯入憑證

  • 如果 ACM 無法在您的 AWS 區域中使用,請上傳您現有的憑證和金鑰至 IAM。如需建立和上傳憑證至 IAM 的詳細資訊,請參閱《IAM 使用者指南》中的使用伺服器憑證

如需設定 HTTPS 和在 Elastic Beanstalk 中使用憑證的詳細資訊,請參閱針對 Elastic Beanstalk 環境HTTPS設定

針對 SSL certificate (SSL 憑證),選擇您 SSL 憑證的 ARN。例如 arn:aws:iam::123456789012:server-certificate/abc/certs/buildarn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678

Classic Load Balancer 組態 - 新增安全接聽程式

如需關於設定 HTTPS 和在 Elastic Beanstalk 中使用憑證的詳細資訊,請參閱針對 Elastic Beanstalk 環境HTTPS設定

工作階段

選取或清除 Session stickiness enabled (工作階段黏著已啟用) 方塊,以啟用或停用黏性工作階段。使用 Cookie duration (Cookie 持續時間) 設定黏性工作階段的持續時間,最長 1000000 秒。在 Load balancer ports (負載平衡器連接埠) 清單上,選取預設政策 (AWSEB-ELB-StickinessPolicy) 適用的接聽程式連接埠。

Classic Load Balancer 的工作階段粘性和持續時間的設定

跨區域負載平衡

選取或清除 Load balancing across multiple Availability Zones enabled (橫跨多個可用區域啟用負載平衡) 方塊,以啟用或停用跨區域負載平衡。

Classic Load Balancer 的跨區域負載平衡設定

連接耗盡

選取或清除 Connection draining enabled (啟用連接耗盡) 方塊,以啟用或停用連接耗盡。設定 Draining timeout (耗盡逾時),最長 3600 秒。

Classic Load Balancer 的連接耗盡和耗盡逾時設定

運作狀態檢查

使用以下設定負載平衡器運作狀態檢查:

  • Health check path (運作狀態檢查路徑) - 負載平衡器傳送運作狀態檢查的路徑。如果未設定路徑,負載平衡器就會嘗試在連接埠 80 上進行 TCP 連線,以驗證執行狀況。

  • Timeout (逾時) - 等待運作狀態檢查回應的時間,以秒為單位。

  • Interval (間隔) - 個別執行個體的每個運作狀態檢查之間的時間,以秒為單位。間隔必須大於逾時期間。

  • Unhealthy threshold (狀態不良閾值)Healthy threshold (運作良好閾值) - 在 Elastic Load Balancing 變更執行個體狀態之前,分別必須失敗或通過的運作狀態檢查數。

Classic Load Balancer 的運作狀態檢查設定
注意

Elastic Load Balancing 運作狀態檢查不會影響環境 Auto Scaling 群組的運作狀態檢查行為。Amazon EC2 Auto Scaling 不會自動取代未通過 Elastic Load Balancing 運作狀態檢查的執行個體,除非您手動設定 Amazon EC2 Auto Scaling 執行此項動作。如需詳細資訊,請參閱 Auto Scaling 運作狀態檢查設定

如需關於運作狀態檢查,以及這些檢查如何影響您環境整體健全狀態的詳細資訊,請參閱基礎型運作狀態報告

使用 EB CLI 設定 Classic Load Balancer

在您執行 eb create 時,EB CLI 會提示您選擇負載平衡器類型。

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 1):

Enter 選擇 classic

您亦可透過 --elb-type 選項,指定負載平衡器類型。

$ eb create test-env --elb-type classic

Classic Load Balancer 組態命名空間

您可以在下列命名空間中找到與 Classic Load Balancer 相關的設定:

  • aws:elb:healthcheck - 設定負載平衡器運作狀態檢查的閾值、檢查間隔和逾時時間。

  • aws:elasticbeanstalk:application - 設定運作狀態檢查 URL。

  • aws:elb:loadbalancer - 啟用跨區域負載平衡。指派安全群組給負載平衡器,並覆寫掉 Elastic Beanstalk 所建立的預設安全群組。此命名空間也包含已作廢的選項,這些選項是用來設定標準和安全接聽程式,已經被 aws:elb:listener 命名空間中的選項所取代。

  • aws:elb:listener - 設定連接埠 80 上的預設接聽程式、連接埠 443 上的安全接聽程式,或是任意埠上針對任何通訊協定的其他接聽程式。如果您指定 aws:elb:listener 做為命名空間,則設定會套用到 80 埠上的預設接聽程式。如果您指定了通訊埠 (例如,aws:elb:listener:443),也會設定該通訊埠上的接聽程式。

  • aws:elb:policies - 針對您的負載平衡器進行額外的設定。使用此命名空間中的選項,在任意連接埠上設定接聽程式、修改其他黏性工作階段設定,和設定負載平衡器以安全地連線到 Amazon EC2 執行個體。

EB CLI 和 Elastic Beanstalk 主控台會為前述選項套用建議的數值。若您想要使用組態檔進行相同的設定,您必須移除這些設定。如需詳細資訊,請參閱「建議值」。

範例 .ebextensions/loadbalancer-terminatehttps.config

下列的範例組態檔案在 443 埠上建立了 HTTPS 接聽程式、指派負載平衡器用來終止安全連線的憑證,並停用 80 埠上的預設接聽程式。負載平衡器會將解密的請求,轉傳到您環境中位於 HTTP:80 的 EC2 執行個體。

option_settings: aws:elb:listener:443: ListenerProtocol: HTTPS SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 InstancePort: 80 InstanceProtocol: HTTP aws:elb:listener: ListenerEnabled: false