Elastic Load Balancing
Network Load Balancers

Network Load Balancers 的目標群組

每個目標群組會用來將請求轉送到一個或多個註冊的目標。在建立每個接聽程式規則時,您會指定目標群組和條件。規則的條件符合時,會將流量轉送到對應的目標群組。您可以針對不同類型的請求,建立不同的目標群組。例如,針對一般請求建立一個目標群組,然後再針對應用程式微型服務的請求,建立其他的目標群組。如需詳細資訊,請參閱「Network Load Balancer 元件」。

您可以針對每個目標群組,指定負載平衡器的運作狀態檢查設定。除非您在建立目標群組時覆寫這些設定,或是在之後修改設定,否則每個目標群組都會使用預設的運作狀態檢查設定。當您在接聽程式的規則中指定目標群組後,負載平衡器會針對自己已啟用可用區域中的目標群組,持續地監控透過該目標群組註冊的所有目標,以了解目標的運作狀態。負載平衡器會將請求路由至運作狀態良好的已註冊目標。

路由組態

根據預設,負載平衡器會使用您在建立目標群組時所指定的通訊協定和埠號,來將請求路由至其目標。或者,您可以在使用目標群組來登錄目標時,覆寫用來將流量轉傳到目標的連接埠。

Network Load Balancers 的目標群組支援下列的通訊協定和連接埠:

  • Protocols (通訊協定):TCP、TLS、UDP、TCP_UDP

  • Ports (連接埠):1-65535

下表總結接聽程式通訊協定和目標群組設定的支援組合。

接聽程式通訊協定 目標群組通訊協定 目標群組類型 運作狀態檢查通訊協定

TCP

TCP | TCP_UDP

執行個體 | ip

HTTP | HTTPS | TCP

TLS

TCP | TLS

執行個體 | ip

HTTP | HTTPS | TCP

UDP

UDP | TCP_UDP

執行個體

HTTP | HTTPS | TCP

TCP_UDP

TCP_UDP

執行個體

HTTP | HTTPS | TCP

目標類型

在建立目標群組時,您會指定其目標類型,這會決定您指定其目標的方式。目標群組建立之後,您就無法更改其目標類型。

下列是可能的目標類型:

instance

以執行個體 ID 來指定目標。

ip

以 IP 地址來指定目標。

如果目標類型是 ip,您可以從下列其中一個 CIDR 區塊指定 IP 地址:

  • 目標群組 VPC 的子網路

  • 10.0.0.0/8 (RFC 1918)

  • 100.64.0.0/10 (RFC 6598)

  • 172.16.0.0/12 (RFC 1918)

  • 192.168.0.0/16 (RFC 1918)

重要

您無法指定公開的可繞送 IP 地址。

這些支援的 CIDR 區塊,可讓您使用目標群組來登錄下列項目:ClassicLink 執行個體、可透過 IP 地址和連接埠來定址的 AWS 資源 (例如資料庫),以及透過 AWS Direct Connect 或軟體 VPN 連接,連結到 AWS 的現場部署資源。

若目標類型是 ip,負載平衡器可支援 55,000 條同時連線,或每分鐘 55,000 條連線連至唯一目標 (IP 地址和連接埠)。若超過上述連線數量,將提高連接埠配置錯誤機率。若發生連接埠配置錯誤,請將更多目標新增至目標群組。

如果目標群組通訊協定是 UDP 或 TCP_UDP,則目標類型必須是 instance

Network Load Balancers 不支援 ​lambda 目標類型,僅有 ​Application Load Balancers​ 支援 lambda​ 目標類型。如需詳細資訊,請參閱《User Guide for Application Load Balancers》中的做為目標的 Lambda 函數

請求轉傳與 IP 地址

如果使用執行個體 ID 來指定目標,會利用在執行個體的主要網路界面中,所指定的主要私有 IP 地址,來將流量轉送到執行個體。負載平衡器會重新寫入資料封包的目的地 IP 地址,再轉送至目標執行個體。

如果使用 IP 地址來指定目標,您可以利用來自一個或多個網路界面的任何私有 IP 地址,將流量轉送到執行個體。這可讓執行個體上的多個應用程式,使用相同的連接埠。請注意,每個網路界面都可以有自己的安全群組。負載平衡器會先重新寫入目的地 IP 地址,再轉送至目標。

如需允許流量進入執行個體的詳細資訊,請參閱 目標安全群組

來源 IP 保留

如果使用執行個體 ID 來指定目標,會保留用戶端的來源 IP 地址,並將這些地址提供給您的應用程式。

如果使用 IP 地址來指定目標,來源 IP 地址是負載平衡器節點的私有 IP 地址。如果您需要用戶端的 IP 地址,請啟用 Proxy Protocol,並從 Proxy Protocol 標頭取得用戶端的 IP 地址。

如果您在使用 Network Load Balancer 登錄的執行個體上擁有微型服務,除非負載平衡器是連線到網際網路,或執行個體是依 IP 地址登錄,否則您無法使用負載平衡器來在這兩者之間提供通訊。如需詳細資訊,請參閱「目標向其負載平衡器發出的請求連線逾時」。

註冊的目標

您的負載平衡器可做為用戶端的單一聯絡窗口,並將傳入的流量分配到各個運作狀態良好的已登錄目標。在負載平衡器能夠使用的每個可用區域中,每個目標群組都必須擁有至少一個已登錄的目標。您可以利用一個或多個群組來登錄每個目標。您可以使用不同的連接埠,使用同一個目標群組來註冊每個 EC2 執行個體或 IP 地址多次,讓負載平衡器將請求轉送到微型服務。

如果對應用程式的需求增加,您可以利用一個或多個目標群組來登錄額外的目標,來應付需求。只要登錄程序一完成,負載平衡器就會開始將流量轉傳到新登錄的目標。

如果對您應用程式的需求減少,或者您需要為目標提供服務,可以從目標群組取消目標的登錄。取消目標的登錄,會將該目標從目標群組中移除,但不會影響到目標。取消目標的登錄之後,負載平衡器就會立即停止將流量轉傳到目標。目標會進入 draining 狀態,直到處理中的請求已完成。當您準備讓目標再繼續接收流量時,可以將目標登錄到目標群組。

如果是根據執行個體 ID 來註冊目標,您可以使用負載平衡器搭配 Auto Scaling 群組。在將目標群組連接到 Auto Scaling 群組之後,Auto Scaling 會在該群組啟動這些目標時,將目標註冊到目標群組。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling User Guide 中的將負載平衡器連接到您的 Auto Scaling 群組

限制

  • 如果執行個體類型如下:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 和 T1,就不能以執行個體 ID 來登錄執行個體。您可以使用 IP 地址來登錄這些類型的執行個體。

  • 如果執行個體位於與負載平衡器 VPC 對等的 VPC 中,則您無法依執行個體 ID 註冊執行個體。您可以依照 IP 地址來註冊這些執行個體。

目標群組屬性

下列是目標群組的屬性:

deregistration_delay.timeout_seconds

在針對取消登錄的目標,將其狀態從 draining 變更為 unused 之前,Elastic Load Balancing 所等待的時間長度。範圍介於 0 到 3600 秒之間。預設值為 300 秒。

proxy_protocol_v2.enabled

顯示是否已啟用 Proxy Protocol 第 2 版。預設會停用 Proxy Protocol。

取消註冊的延遲

將執行個體取消登錄時,負載平衡器會停止建立執行個體的新連線。負載平衡器會以連接耗盡功能,來確保傳輸中流量在現有連線上完成。如果取消登錄的執行個體保持良好的狀態,且現有連線未閒置,負載平衡器可以繼續傳送流量至執行個體。若要確保現有連線關閉,您可以在取消登錄執行個體之前確保該執行個體運作不良,或您可以定期關閉用戶端連線。

取消註冊中的目標,其初始狀態為 draining。根據預設,負載平衡器會在 300 秒後將取消登錄的目標狀態變更成 unused。若要變更負載平衡器在將取消登錄目標的狀態變更成 unused 之前的等候時間,請更新取消登錄的延遲的值。我們建議您指定的值至少 120 秒,以確保完成該請求。

使用主控台來更新取消登錄的延遲值

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. 在導覽窗格的 LOAD BALANCING (負載平衡) 中,選擇 Target Groups (目標群組)

  3. 選取目標群組。

  4. 依序選擇 Description (說明)Edit attributes (編輯屬性)

  5. 根據需要變更 Deregistration delay (取消登錄的延遲) 的值,然後選擇 Save (儲存)

使用 AWS CLI 來更新取消登錄的延遲值

使用 modify-target-group-attributes 指令。

Proxy Protocol (代理通訊協定)

Network Load Balancers 會使用 Proxy Protocol 第 2 版來傳送額外的連線資訊,例如來源和目的地。Proxy Protocol 第 2 版提供 Proxy Protocol 標頭的二進位編碼。負載平衡器會在 TCP 資料前面加上 Proxy Protocol 標頭。它不會捨棄或覆寫現有資料,包括用戶端傳送的 proxy protocol 標頭或網路路徑中的其他代理程式、負載平衡器或伺服器。因此,可能接收多個 proxy protocol 標頭。此外,若有 Network Load Balancer 以外的其他網路路徑連至目標,第一個 proxy protocol 標頭可能並非來自您的 Network Load Balancer。

如果使用 IP 地址來指定目標,則提供給應用程式的來源 IP 地址,會是負載平衡器節點的私有 IP 地址。如果應用程式需要用戶端的 IP 地址,請啟用 Proxy Protocol,並且從 Proxy Protocol 標頭取得用戶端的 IP 地址。

如果使用執行個體 ID 來指定目標,則提供給應用程式的來源 IP 地址,會是用戶端的 IP 地址。不過,如果您需要的話,可以啟用 Proxy Protocol,並從 Proxy Protocol 標頭取得用戶端的 IP 地址。

運作狀態檢查連線

啟用 Proxy Protocol 之後,在與負載平衡器的運作狀態檢查連線中,也會包含 Proxy Protocol 標頭。不過,如果有運作狀態檢查連線,在 Proxy Protocol 的標頭中就不會傳送用戶端的連線資訊。

VPC 端點服務

針對服務使用者透過 VPC 端點服務傳來的流量,提供給應用程式的來源 IP 地址,會是負載平衡器節點的私有 IP 地址。如果應用程式需要服務使用者的 IP 地址,請啟用 Proxy Protocol,並且從 Proxy Protocol 標頭取得這些地址。

Proxy Protocol 標頭也包含了端點的 ID。這項資訊是使用自訂的 Type-Length-Value (類型/長度/值,TLV) 向量進行編碼。

欄位 長度 (單位:octet (八位元組)) 敘述

類型

1

PP2_TYPE_AWS (0xEA)

長度

2

值的長度

Value

1

PP2_SUBTYPE_AWS_VPCE_ID (0x01)

變數 (值的長度減 1) 端點的 ID

如需剖析 TLV 類型 0xEA 的範例,請參閱 https://github.com/aws/elastic-load-balancing-tools/tree/master/proprot

啟用 Proxy Protocol

在針對目標群組啟用 Proxy Protocol 之前,請確定應用程式可處理和剖析 Proxy Protocol 第 2 版的標頭,否則應用程式可能會當機。如需詳細資訊,請參閱 Proxy Protocol 第 1 版和第 2 版

使用主控台來啟用 Proxy Protocol

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. 在導覽窗格的 LOAD BALANCING (負載平衡) 中,選擇 Target Groups (目標群組)

  3. 選取目標群組。

  4. 依序選擇 Description (說明)Edit attributes (編輯屬性)

  5. 選擇 Enable proxy protocol v2 (啟用 proxy protocol 第 2 版),然後選擇 Save (儲存)

使用 AWS CLI 來啟用 Proxy Protocol

使用 modify-target-group-attributes 指令。