設定 Network Load Balancer - AWS Elastic Beanstalk

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

設定 Network Load Balancer

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

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

注意

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

簡介

透過 Network Load Balancer,預設接聽程式會接受連接埠 80 上的 TCP 請求,並將這些請求分配到您環境中的執行個體。您可以設定運作狀態檢查行為、設定接聽程式連接埠,或在另一個連接埠上新增接聽程式。

注意

有別於 Classic Load Balancer 或 Application Load Balancer,Network Load Balancer 無法擁有應用程式層 (第 7 層) HTTP 或 HTTPS 接聽程式。它僅支援傳輸層 (第 4 層) TCP 接聽程式。HTTP 和 HTTPS 流量可透過 TCP 路由到您的環境。若要在 Web 用戶端與您的環境之間建立安全的 HTTPS 連線,請在環境中的執行個體上安裝自我簽署的憑證,並設定執行個體監聽適當的連接埠 (通常是 443) 及終止的 HTTPS 連線。每個組態視平台而有所不同。如需說明,請參閱 在執行個體設定HTTPS終止。然後,設定 Network Load Balancer 以新增接聽程式,對應到監聽適當連接埠的程序。

Network Load Balancer 支援主動運作狀態檢查。這些檢查是根據至根 (/) 路徑的訊息。此外,Network Load Balancer 還支援被動運作狀態檢查。能夠自動偵測故障的後端執行個體,並僅將流量路由至運作狀態良好的執行個體。

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

在環境建立期間或之後在環境執行時,您可以使用 Elastic Beanstalk 主控台設定 Network Load Balancer 的接聽程式和程序。

若要在環境建立期間於 Elastic Beanstalk 主控台設定 Network Load Balancer
  1. 開啟 Elastic Beanstalk 主控台,然後在 Regions (區域) 清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇 Environments (環境)

  3. 選擇 Create a new environment (建立新環境) 以開始建立您的環境。

  4. 在精靈的主頁上,在選擇 Create environment (建立環境) 之前,選擇 Configure more options (設定更多選項)

  5. 選擇 High availability (高可用性) 組態預設。

    或者,在 Capacity (容量) 組態類別中,設定Load balanced (負載平衡器) 環境類型。如需詳細資訊,請參閱容量

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

  7. 選取 Network Load Balancer 選項 (如果尚未選取)。

    Elastic Load Balancing 組態頁面 - 選擇負載平衡器類型
  8. 根據環境所需,變更任何 Network Load Balancer 組態。

  9. 選擇 Save (儲存),然後針對您環境所需對其他組態做變更。

  10. 選擇 Create environment (建立環境)。

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

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

    注意

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

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

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

    注意

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

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

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

Network Load Balancer 設定

接聽程式

使用此名單為您的負載平衡器指定接聽程式。每個接聽程式會將傳入用戶端流量路由傳送到您執行個體上的程序。一開始,清單顯示預設的接聽程式,它會將連接埠 80 上傳入的流量路由至接聽自接埠 80 且名為 default (預設) 的程序。

Network Load Balancer 組態 - 接聽程式清單
要設定現有的接聽程式
  1. 選取其表項目旁邊的核取方塊,然後選擇 Actions (動作)Edit (編輯)

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

加入接聽程式
  1. 選擇 Add listener (新增接聽程式)

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

使用 Network Load Balancer listener (Network Load Balancer 接聽程式) 對話方塊,設定接聽程式監聽流量的連接埠,然後選擇您要將流量路由至哪個程序 (以接聽程式監聽的連接埠指定)。

Network Load Balancer 接聽程式對話方塊

Processes

使用此名單為您的負載平衡器指定程序。程序為接聽程式路由流量的目標。每個接聽程式會將傳入用戶端流量路由傳送到您執行個體上的程序。一開始,清單顯示接聽於連接埠 80 上傳入的流量的預設程序。

Network Load Balancer 組態 - 程序清單

您可以編輯現有程序的設定,或增加新的程序。若要開始編輯清單中的一個程序或新增一個程序,使用列於接聽程式清單的相同步驟。Environment process (環境程序) 對話方塊開啟。

Network Load Balancer 的環境程序對話方塊設定

定義

使用這些設定來定義程序:它的 Name (名稱) 和其接聽請求的 Process Port (程序連接埠)

Network Load Balancer 名稱、接聽程式連接埠和程序連接埠的程序對話方塊設定

運作狀態檢查

使用以下設定以設定程序運作狀態檢查:

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

  • Healthy threshold (運作良好閾值) - 在 Elastic Load Balancing 變更執行個體狀態之前,必須通過的運作狀態檢查數。(就 Network Load Balancer 而言,Unhealthy threshold (狀態不良閾值) 是唯讀設定,一律等於運作良好閾值)。

  • Deregistration delay (取消註冊延遲) - 在取消註冊執行個體前,等待作用中請求完成的時間,以秒為單位。

Network Load Balancer 運作狀態檢查的程序對話方塊設定
注意

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

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

範例:Network Load Balancer 用於具有端對端加密的環境

在此範例中,您的應用程式需要端對端流量加密。若要設定您環境的 Network Load Balancer 以符合這些要求,您必須將預設程序設定為監聽連接埠 443,新增接聽程式至連接埠 443 來將流量路由傳送到預設程序,然後停用預設接聽程式。

要設定負載平衡器在這個範例
  1. 設定預設程序。選取預設程序,然後在 Actions (動作) 中選擇 Edit (編輯)。在 Process Port (程序連接埠) 欄位中輸入 443

    Network Load Balancer 組態範例 - 設定預設程序以使用程序連接埠 443
  2. 新增連接埠 443 接聽程式。新增一個新的接聽程式。在 Listener port (接聽程式連接埠) 中輸入 443。確定已在 Process port (程序連接埠) 中選取 443

    Network Load Balancer 組態範例 - 新增連接埠 443 接聽程式

    您現在可以查看您清單上的額外接聽程式。

    Network Load Balancer 組態範例 - 有兩個接聽程式的接聽程式清單
  3. 停用預設的連接埠 80 接聽程式。針對預設的接聽程式,關閉 Enabled (已啟用) 選項。

    Network Load Balancer 組態範例 - 停用預設接聽程式

使用 EB CLI 設定 Network 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): 3

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

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

Network Load Balancer 命名空間

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

  • aws:elasticbeanstalk:environment - 選擇環境的負載平衡器類型。Network Load Balancer 的值為 network

  • aws:elbv2:listener - 在 Network Load Balancer 上設定接聽程式。這些設定對應至 Classic Load Balancer 之 aws:elb:listener 中的設定。

  • aws:elasticbeanstalk:environment:process - 設定運作狀態檢查,並針對執行於環境執行個體的程序,指定連接埠和通訊協定。此連接埠和通訊協定設定,對應至 Classic Load Balancer 接聽程式之 aws:elb:listener 中的執行個體連接埠和執行個體通訊協定設定。運作狀態檢查設定則對應至 aws:elb:healthcheckaws:elasticbeanstalk:application 命名空間內的設定。

範例
.ebextensions/network-load-balancer.config

若要開始使用 Network Load Balancer,請使用組態檔案,將負載平衡器類型設定為 network

option_settings: aws:elasticbeanstalk:environment: LoadBalancerType: network
注意

您只能在建立環境時設定負載平衡器的類型。

範例
.ebextensions/nlb-default-process.config

下列組態檔案會修改預設程序的運作狀態檢查設定。

option_settings: aws:elasticbeanstalk:environment:process:default: DeregistrationDelay: '20' HealthCheckInterval: '10' HealthyThresholdCount: '5' UnhealthyThresholdCount: '5' Port: '80' Protocol: TCP
範例 .ebextensions/nlb-secure-listener.config

下列組態檔案會針對連接埠 443 上的安全流量新增接聽程式,以及新增接聽連接埠 443 的相符目標程序。

option_settings: aws:elbv2:listener:443: DefaultProcess: https ListenerEnabled: 'true' aws:elasticbeanstalk:environment:process:https: Port: '443'

DefaultProcess 選項以此方式命名,原因是 Application Load Balancer 能夠在相同連接埠上針對送往特定路徑的流量擁有非預設接聽程式 (詳細資訊請參閱Application Load Balancer)。以 Network Load Balancer 而言,此選項會指定此接聽程式的唯一目標程序。

在此範例中,我們將程序命名為 https,因為它會接聽安全 (HTTPS) 流量。由於 Network Load Balancer 僅能與 TCP 搭配運作,因此接聽程式會使用 TCP 通訊協定,將流量傳送至指定連接埠上的程序。此作法沒問題,因為 HTTP 和 HTTPS 的網路流量實作於 TCP 之上。