的目標群組網路負載平衡器 - Elastic Load Balancing

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

的目標群組網路負載平衡器

每個目標群組用於將請求路由到一或多個已登記的目標。當您建立接聽程式時,可以為其預設動作指定一個目標群組。流量會轉送至接聽程式規則中指定的目標群組。您可以針對不同類型的請求,建立不同的目標群組。例如,針對一般請求建立一個目標群組,然後再針對應用程式微型服務的請求,建立其他的目標群組。如需詳細資訊,請參閱「網路負載平衡器 元件.

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

路由組態

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

網路負載平衡器 的目標群組支援下列的通訊協定和連接埠:

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

  • 連接埠:1-65535

如果使用 TLS 通訊協定設定目標群組,則負載平衡器會使用您在目標上安裝的憑證,與目標建立 TLS 連線。負載平衡器不會驗證這些憑證。因此,您可以使用自我簽署的憑證或已過期的憑證。由於負載平衡器位於 Virtual Private Cloud (VPC),系統會在封包層級對負載平衡器與目標之間的流量進行驗證,因此即使目標上的憑證無效,也不會遭受中間人攻擊或詐騙的風險。

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

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

TCP

TCP | TCP_UDP

執行個體 | ip

HTTP | HTTPS | TCP

TLS

TCP | TLS

執行個體 | ip

HTTP | HTTPS | TCP

UDP

UDP | TCP_UDP

執行個體 | ip

HTTP | HTTPS | TCP

TCP_UDP

TCP_UDP

執行個體 | ip

HTTP | HTTPS | TCP

Target type (目標類型)

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

下列是可能的目標類型:

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 地址和連接埠)。若超過上述連線數量,將提高連接埠配置錯誤機率。若發生連接埠配置錯誤,請將更多目標新增至目標群組。

網路負載平衡器 不支援 ​lambda 目標類型,僅有 ​Application Load Balancer​ 支援 lambda​ 目標類型。如需詳細資訊,請查看 https://docs.aws.amazon.com/elasticloadbalancing/latest/application/lambda-functions.html 中的 Lambda 函數做為目標Application Load Balancer 使用者指南。

如果您在使用 網路負載平衡器 登錄的執行個體上擁有微型服務,除非負載平衡器是連線到網際網路,或執行個體是依 IP 地址登錄,否則您無法使用負載平衡器來在這兩者之間提供通訊。如需詳細資訊,請參閱「Connections time out for requests from a target to its load balancer.

請求路由與 IP 地址

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

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

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

來源 IP 保留

如果您依執行個體 ID 指定目標,則會保留 Client 的來源 IP 地址,並提供給您的應用程式。

如果您依 IP 地址指定目標,提供的來源 IP 地址視目標群組的通訊協定而定,如下所示:

如果您使用具有 VPC 端點服務或 網路負載平衡器 的 AWS Global Accelerator,則提供給應用程式的來源 IP 地址,會是負載平衡器節點的私有 IP 地址。如果您需要服務消費者的 IP 地址,請在負載平衡器上允許代理通訊協定

如果您依執行個體 ID 指定目標,您可能會遇到與所觀察到的目標通訊端重複使用相關的 TCP/IP 連接限制。當使用者端或端面的 NAT 裝置同時連接到多個負載平衡器節點時,將使用相同的來源 IP 地址和來源連接埠,就可能會發生這些連接限制。如果負載平衡器將連接路由到相同的目標,這些連接看起來會像它們來自相同的來源插槽一樣,造成連接錯誤。如果發生此問題,則當連接失敗時, Client 可以重試;如果連接中斷,可以重新進行連接。您可以透過增加來源暫時性連接埠的數量或增加負載平衡器的目標數目,來減少此類型的連接錯誤。您可以透過 IP 地址指定目標或停用跨區域負載平衡來避免此類連接錯誤。

已登記的目標

您的負載平衡器可做為用戶端的單一聯絡窗口,並將傳入的流量分配到各個運作狀態良好的已登錄目標。在負載平衡器能夠使用的每個可用區域中,每個目標群組都必須擁有至少一個已登錄的目標。您可以利用一個或多個群組來登錄每個目標。

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

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

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

Requirements

  • 如果執行個體 ID 使用下列執行個體類型之一:C1、CC1、CC2、CG1、CG1、CR1、G1、G2、HI1、HS1、M1、M2、M3 或 T1,則它們無法依執行個體 ID 來登記執行個體。

  • 如果執行個體 ID 是互連至負載平衡器 VPC (相同區域或不同區域) 的 VPC,則您無法依執行個體 ID 來登記執行個體。您可以依照 IP 地址來註冊這些執行個體。

  • 如果您依照 IP 地址註冊目標,且 IP 地址與負載平衡器位於相同的 VPC 中,則負載平衡器會驗證它來自於其可連上的子網路。

  • 針對 UDP 和 TCP_UDP 目標群組,如果執行個體位於負載平衡器 VPC 外部,或使用下列其中一種執行個體類型:C1、CC1、CC2、CG1、CR1、G1、HI1、HS1、M1、M2、M3 或 T1,則請不要依 IP 地址來登記執行個體。位於負載平衡器 VPC 外部或使用不支援之執行個體類型的目標,可能會接收來自負載平衡器的流量,但無法回應。

目標群組屬性

下列是目標群組的屬性:

deregistration_delay.timeout_seconds

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

deregistration_delay.connection_termination.enabled

指出負載平衡器是否在取消登記逾時結束時終止連接。此值為 truefalse。預設值為 false

proxy_protocol_v2.enabled

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

stickiness.enabled

指出是否已啟用黏性工作階段。

stickiness.type

黏性的類型。可能的值為 source_ip.

取消登記的延遲

當您撤銷目標時,負載平衡器會停止建立新的目標連接。負載平衡器會以連接耗盡功能,來確保傳輸中流量在現有連線上完成。如果取消登記的目標正常運作,但現有的連接並非所有,負載平衡器仍可繼續傳送流量到目標。為確保現有連接已關閉,您可以執行下列其中一項操作:允許連接終止的目標群組屬性,確保執行個體狀態不健全,之後再進行取消登記,或定期關閉使用者端連接。

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

如果您允許連接終止的目標群組屬性,已撤銷目標的連接會在取消登記逾時後不久關閉。

New console

使用新主控台更新取消登記的屬性

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選擇目標群組的名稱,以打開其詳細資訊頁面。

  4. Group details (群組詳細資訊) 頁面的 Attributes (屬性) 區段中,選擇 Edit (編輯)

  5. 若要變更取消登記逾時,請輸入 Deregistration delay ( 取消登記延遲) 的新值。若要確保在您撤銷目標後關閉現有的連接,請選取 Connection termination on deregistration (取消登記時連接終止)

  6. 選擇 Save changes (儲存變更).

Old console

使用舊主控台更新取消登記的屬性

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選取目標群組,然後選擇 Description (描述)Edit attributes (編輯屬性)

  4. 若要變更取消登記逾時,請輸入 Deregistration delay (登記延遲) 的新值。若要確保在您撤銷目標後關閉現有的連接,請選取 Connection termination on deregistration (取消登記時連接終止)

  5. 選擇 Save. (儲存)。

使用 AWS CLI 更新取消登記屬性

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

Proxy Protocol (代理通訊協定)

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

如果您依 IP 地址指定目標,提供給應用程式的來源 IP 地址會視目標群組的通訊協定而定,如下所示:

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

  • UDP 和 TCP_UDP:來源 IP 地址是訪客的 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

值的長度

數值

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 版.

New console

若要使用新的主控台來達成 Proxy 通訊協定 v2

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選擇目標群組名稱,以打開其詳細資訊頁面。

  4. Group details (群組詳細資訊) 頁面的 Attributes (屬性) 區段中,選擇 Edit (編輯)

  5. Edit attributes (編輯屬性) 頁面上,選取 Proxy protocol v2

  6. 選擇 Save changes (儲存變更).

Old console

使用舊主控台支援代理通訊協定 v2

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選取目標群組。

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

  5. 對於 Proxy protocol v2 (代理通訊協定第 2 版),請選擇 Enable (啟用).

  6. 選擇 Save. (儲存)。

使用 來啟用 Proxy Protocol 第 2 版AWS CLI

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

黏性工作階段

黏性工作階段是將用戶端流量路由到目標群組中相同目標的機制。這對於維護狀態資訊以便為用戶端提供持續體驗的伺服器來說很實用。

Considerations

  • 使用粘性工作階段會導致連線和流程分配不均,因而可能會影響目標的可用性。例如,相同 NAT 裝置後面的所有用戶端都有相同的來源 IP 地址。因此,來自這些用戶端的所有流量都會路由到相同的目標。

  • 如果目標群組之任何目標的運作狀態發生變更,或者如果您向目標群組註冊或取消註冊目標,則負載平衡器可能會重設該目標群組的粘性工作階段。

  • TLS 接聽程式和 TLS 目標群組不支援相黏工作階段。

New console

使用新的主控台進行黏性工作階段

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選擇目標群組的名稱,以打開其詳細資訊頁面。

  4. Group details (群組詳細資訊) 頁面的 Attributes (屬性) 區段中,選擇 Edit (編輯)

  5. Edit attributes (編輯屬性) 頁面上,選取 Stickiness (黏性)

  6. 選擇 Save changes (儲存變更).

Old console

使用舊主控台進行黏性工作階段

  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選取目標群組。

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

  5. 針對 Stickiness (黏性),選取 Enable (允許)

  6. 選擇 Save. (儲存)。

使用 啟用黏性工作階段AWS CLI

使用 modify-target-group-attributes 命令搭配 stickiness.enabled 屬性。