本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
編輯 Network Load Balancer 的目標群組屬性
建立 Network Load Balancer 的目標群組之後,您可以編輯其目標群組屬性。
用戶端 IP 保留
將要求路由至後端目標時,Network Load Balancer 可以保留用戶端來源的 IP 地址。當您停用用戶端 IP 保留時,來源 IP 地址是 Network Load Balancer 的私有 IP 地址。
根據預設,針對具有 UDP 與 TCP_UDP 通訊協定的執行個體與 IP 類型目標群組,用戶端 IP 保留處於啟用狀態 (且無法停用)。不過,您可以使用 preserve_client_ip.enabled
目標群組屬性啟用或停用 TCP 與 TLS 目標群組的用戶端 IP 保留。
預設設定
-
執行個體類型目標群組:啟用
-
IP 類型目標群組 (UDP、TCP_UDP):已啟用
-
IP 類型目標群組 (TCP, TLS):已停用
需求和考量事項
-
啟用用戶端 IP 保留時,流量必須直接從 Network Load Balancer 流向目標。目標必須位於與 Network Load Balancer 相同的 VPC 中,或位於相同區域中的對等 VPC 中。
-
當流量透過 Gateway Load Balancer 端點在 Gateway Load Balancer 和目標 (執行個體或 IP) 之間檢查流量時,不支援 Network Load Balancer 用戶端 IP 保留,即使目標與 Network Load Balancer 位於相同的 Amazon VPC 中也一樣。
-
以下執行個體類型不支援用戶端 IP 保留:C1、CC1、CC2、CG1、CG2、CR1、G1、G2、HI1、HS1、M1、M2、M3 和 T1 建議您在停用用戶端 IP 保留的情況,將這些執行個體類型登錄為 IP 地址。
-
用戶端 IP 保留不會影響來自 的傳入流量 AWS PrivateLink。 AWS PrivateLink 流量的來源 IP 一律是 Network Load Balancer 的私有 IP 地址。
-
當目標群組包含 AWS PrivateLink ENI 或其他 Network Load Balancer 的 ENI 時,不支援用戶端 IP 保留。這將導致與這些目標的通訊遺失。
-
用戶端 IP 保留對於從 IPv6 轉換為 IPv4 的流量沒有作用。此類型流量的來源 IP 總是 Network Load Balancer 的私有 IP 地址。
-
當您依 Application Load Balancer 類型指定目標時,Network Load Balancer 會保留所有傳入流量的用戶端 IP,並傳送至 Application Load Balancer。接著,Application Load Balancer 會將用戶端 IP 附加至
X-Forwarded-For
要求標頭,然後再將其傳送至目標。 -
用戶端 IP 保留變更只會對新的 TCP 連線生效。
-
當啟用用戶端 IP 保留時,不支援 NAT 迴路,也稱為假髮釘設定。在使用內部 Network Load Balancer 時會發生這種情況,而且在 Network Load Balancer 後方註冊的目標會建立與相同 Network Load Balancer 的連線。連線可以路由到嘗試建立連線的目標,從而導致連線錯誤。我們建議不要從相同 Network Load Balancer 後方的目標連線到 Network Load Balancer,或者您也可以停用用戶端 IP 保留來防止這類連線錯誤。如果您需要用戶端 IP,您可以使用 Proxy Protocol v2 擷取用戶端 IP。若要進一步了解 Proxy Protocol,請參閱 Proxy Protocol (代理通訊協定)。
-
當您停用用戶端 IP 保留時,Network Load Balancer 可支援 55,000 條同時連線,或每分鐘 55,000 條連線連至唯一目標 (IP 地址和連接埠)。若超過上述連線數量,將提高連接埠配置錯誤機率,導致無法建立新連線。可以使用
PortAllocationErrorCount
指標追蹤連接埠配置錯誤。若要修復連接埠配置錯誤,請將更多目標加入目標群組。如需詳細資訊,請參閱Network Load Balancer 的CloudWatch 指標。
使用主控台設定用戶端 IP 保留
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的 Load Balancing (負載平衡) 中,選擇 Target Groups (目標群組)。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
如果要啟用用戶端 IP 保留,請開啟 保留用戶端 IP 地址。如果要停用用戶端 IP 保留,請關閉 保留用戶端 IP 地址。
-
選擇 Save changes (儲存變更)。
使用 啟用或停用用戶端 IP 保留 AWS CLI
使用 modify-target-group-attributes 命令搭配 preserve_client_ip.enabled
屬性。
例如,使用以下命令停用用戶端 IP 保留。
aws elbv2 modify-target-group-attributes --attributes Key=preserve_client_ip.enabled,Value=
false
--target-group-arnARN
輸出內容應如下範例所示。
{
"Attributes": [
{
"Key": "proxy_protocol_v2.enabled",
"Value": "false"
},
{
"Key": "preserve_client_ip.enabled",
"Value": "false"
},
{
"Key": "deregistration_delay.timeout_seconds",
"Value": "300"
}
]
}
取消登記的延遲
取消註冊目標時,負載平衡器會停止建立新目標連線。負載平衡器會以連接耗盡功能,來確保傳輸中流量在現有連線上完成。如果執行取消登錄的目標保持良好的狀態,且現有連線未閒置,負載平衡器可以繼續傳送流量至執行目標。為了確保現有連線已關閉,您可以執行下列其中一項操作:啟用連線終止目標群組屬性、在執行取消登錄目標之前確保執行個體運作狀態不佳或定期關閉用戶端連線。
取消註冊目標的初始狀態為 draining
,在此期間目標將停止接收新的連線。不過,目標仍可能因組態傳播延遲而收到連線。根據預設,負載平衡器會在 300 秒後將取消登錄的目標狀態變更成 unused
。若要變更負載平衡器在將取消登錄目標的狀態變更成 unused
之前的等候時間,請更新取消登錄的延遲的值。我們建議您指定的值至少 120 秒,以確保完成該請求。
如果啟用連線終止目標群組屬性,則與已取消登錄目標的連線會在取消登錄逾時結束後不久關閉。
使用主控台更新取消註冊屬性
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的 Load Balancing (負載平衡) 中,選擇 Target Groups (目標群組)。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤選擇編輯。
-
若要變更取消登錄延遲,請輸入新的取消登錄延遲值。若要確保在取消登錄目標後關閉現有連線,請選擇 取消登錄終止時連線。
-
選擇 Save changes (儲存變更)。
使用 更新取消註冊屬性 AWS CLI
使用 modify-target-group-attributes 指令。
Proxy Protocol (代理通訊協定)
將使用 Proxy Protocol 第 2 版來傳送額外的連線資訊,例如來源與目的地。Proxy Protocol 第 2 版提供 Proxy Protocol 標頭的二進位編碼。負載平衡器會透過 TCP 接聽程式在 TCP 資料前面加上 Proxy Protocol 標頭。它不會捨棄或覆寫現有資料,包括用戶端傳送的 proxy protocol 標頭或網路路徑的其他代理程式、負載平衡器或伺服器。因此,可能接收多個 proxy protocol 標頭。此外,如果 Network Load Balancer 之外還有另一個通往目標的網路路徑,則第一個 Proxy Protocol 標頭可能不是來自 Network Load Balancer 的協定標頭。
如果您依 IP 地址指定目標,則提供給應用程式的來源 IP 地址會依據目標群組的通訊協定而定,如下所示:
-
TCP 和 TLS:預設會停用用戶端 IP 保留,而提供給應用程式的來源 IP 地址是負載平衡器節點的私有 IP 地址。若要保留用戶端的 IP 地址,請確定目標位於相同的 VPC 或對等 VPC 中,並啟用用戶端 IP 保留。如果您需要用戶端的 IP 地址,但不符合這些條件,請啟用代理通訊協定,並從代理通訊協定標頭取得用戶端 IP 地址。
-
UDP 和 TCP_UDP:來源 IP 地址是用戶端的 IP 地址,因為用戶端 IP 保留預設為針對這些通訊協定啟用,且無法停用。如果使用執行個體 ID 來指定目標,則提供給應用程式的來源 IP 地址,會是用戶端的 IP 地址。不過,如果您需要的話,可以啟用 Proxy Protocol,並從 Proxy Protocol 標頭取得用戶端的 IP 地址。
如果使用執行個體 ID 來指定目標,則提供給應用程式的來源 IP 地址,會是用戶端的 IP 地址。不過,如果您需要的話,可以啟用 Proxy Protocol,並從 Proxy Protocol 標頭取得用戶端的 IP 地址。
注意
TLS 接聽程式不支援透過用戶端或任何其他 Proxy 傳送代理通訊協定標頭的傳入連線。
運作狀態檢查連線
啟用 Proxy Protocol 之後,在與負載平衡器的運作狀態檢查連線中,也會包含 Proxy Protocol 標頭。不過,如果有運作狀態檢查連線,在 Proxy Protocol 的標頭中就不會傳送用戶端的連線資訊。
VPC 端點服務
針對服務使用者透過 VPC 端點服務傳來的流量,提供給應用程式的來源 IP 地址,會是負載平衡器節點的私有 IP 地址。如果應用程式需要服務消費者的 IP 地址,請啟用 Proxy Protocol,並且從 Proxy Protocol 標頭取得這些地址。
Proxy Protocol 標頭也包含了端點的 ID。這項資訊是使用自訂的 Type-Length-Value (類型/長度/值,TLV) 向量進行編碼。
欄位 | 長度 (單位:octet (八位元組)) | Description (描述) |
---|---|---|
Type |
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 第 2 版
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的 Load Balancing (負載平衡) 中,選擇 Target Groups (目標群組)。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在 編輯屬性 頁面上,選擇 Proxy Protocol v2。
-
選擇 Save changes (儲存變更)。
使用 啟用代理通訊協定 v2 AWS CLI
使用 modify-target-group-attributes 指令。
黏性工作階段
黏性工作階段是將用戶端流量路由到目標群組中相同目標的機制。這對於維護狀態資訊以便為用戶端提供持續體驗的伺服器來說很實用。
考量事項
-
使用粘性工作階段會導致連線和流程分配不均,因而可能會影響目標的可用性。例如,相同 NAT 裝置後面的所有用戶端都有相同的來源 IP 地址。因此,來自這些用戶端的所有流量都會路由到相同的目標。
-
如果目標群組之任何目標的運作狀態發生變更,或者如果您向目標群組註冊或取消註冊目標,則負載平衡器可能會重設該目標群組的粘性工作階段。
-
當目標群組的黏性屬性開啟時,不支援被動運作狀態檢查。如需詳細資訊,請參閱目標群組的運作狀態檢查。
-
TLS 接聽程式不支援粘性會話。
使用主控台啟用黏性工作階段
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的 Load Balancing (負載平衡) 中,選擇 Target Groups (目標群組)。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在目標選擇配置下,開啟粘性。
-
選擇 Save changes (儲存變更)。
使用 啟用黏性工作階段 AWS CLI
使用 modify-target-group-attributes 命令搭配 stickiness.enabled
屬性。
目標群組的跨區域負載平衡
負載平衡器的節點會將請求從用戶端分發到已註冊的目標。開啟跨區域負載平衡時,每個負載平衡器節點會將流量分散到所有已註冊可用區域內的已註冊目標。關閉跨區域負載平衡時,每個負載平衡器節點只會將流量分散到其可用區域內已註冊的目標。如果區域故障網域優先於地區故障網域,就可能發生此情形,以確保運作狀態良好的區域不受運作狀態不佳區域的影響,也可能是為改善整體延遲。
當使用 Network Load Balancer 時,在負載平衡器層級預設會關閉跨區域負載平衡,但您可以隨時將其開啟。對於目標群組,預設值是使用負載平衡器設定,但您可以在目標群組層級明確關閉跨區域負載平衡來覆寫預設值。
考量事項
-
啟用 Network Load Balancer 的跨區域負載平衡時,需支付 EC2 資料傳輸費用。如需詳細資訊,請參閱 Data AWS Exports 使用者指南中的了解資料傳輸費用
-
目標群組設定會決定目標群組的負載平衡行為。例如,如果在負載平衡器層級啟用跨區域負載平衡,並在目標群組層級停用,則傳送至目標群組的流量不會跨可用區域路由傳送。
-
當跨區域負載平衡關閉時,請確定您在每個負載平衡器可用區域都有足夠的目標容量,以便每個區域都能為其關聯的工作負載提供服務。
-
當關閉跨區域負載平衡時,請確定所有目標群組都參與相同的可用區域。空白的可用區域會被視為運作狀態不佳。
修改負載平衡器的跨區域負載平衡
您可以隨時在負載平衡器層級開啟或關閉跨區域負載平衡。
使用控制台修改負載平衡器的跨區域負載平衡
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的 Load Balancing (負載平衡) 下方,選擇 Load Balancers (負載平衡器)。
-
選取您負載平衡器的名稱來開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在 編輯負載平衡器屬性 頁面,開啟 跨區域負載平衡 或關閉。
-
選擇 Save changes (儲存變更)。
使用 修改負載平衡器的跨區域負載平衡 AWS CLI
以 屬性來使用 modify-load-balancer-attributesload_balancing.cross_zone.enabled
命令。
修改目標群組的跨區域負載平衡
目標群組層級的跨區域負載平衡設定會在負載平衡器層級覆寫設定。
如果目標群組類型為 instance
或 ip
,您可以在目標群組層次開啟或關閉跨區域負載平衡。如果目標群組類型為 alb
,則目標群組一律會繼承負載平衡器的跨區域負載平衡設定。
使用控制台修改目標群組的跨區域負載平衡
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的負載平衡下,選取目標群組。
-
選取目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在編輯目標群組屬性頁面上,選取開啟以進行跨區域負載平衡。
-
選擇 Save changes (儲存變更)。
使用 修改目標群組的跨區域負載平衡 AWS CLI
使用 modify-target-group-attributes 命令搭配 load_balancing.cross_zone.enabled
屬性。
運作狀態不佳目標的連線終止
連線終止預設為啟用。當 Network Load Balancer 的目標未通過設定的運作狀態檢查,且視為運作狀態不佳時,負載平衡器會終止已建立的連線,並停止將新連線路由至目標。在停用連線終止的情況下,目標仍會被視為運作狀態不佳,且不會收到新的連線,但已建立的連線會保持作用中狀態,讓目標可以正常關閉。
每個目標群組可以個別設定運作狀態不佳目標的連線終止。
使用主控台修改連線終止設定
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的負載平衡中,選擇目標群組。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在 目標運作狀態不佳管理,選擇是否啟用或停用 當目標運作狀態不佳時終止連線 。
-
選擇 Save changes (儲存變更)。
使用 修改連線終止設定 AWS CLI
使用 modify-target-group-attributes 命令搭配 target_health_state.unhealthy.connection_termination.enabled
屬性。
運作狀態不佳的耗盡間隔
重要
在啟用運作狀態不佳的耗盡間隔之前,必須停用連線終止。
unhealthy.draining
狀態中的目標會被視為運作狀態不良,不會接收新的連線,但會在設定的間隔內保留已建立的連線。運作狀態不佳的連線間隔會決定目標在狀態變為 之前,會保持在 unhealthy.draining
狀態的時間量unhealthy
。如果目標在運作狀態不佳的連線間隔內通過運作狀態檢查,則其狀態會healthy
再次變成。如果觸發取消註冊,則目標狀態會變成 draining
,且取消註冊延遲逾時開始。
您可以為每個目標群組個別設定運作狀態不佳的耗盡間隔。
使用主控台修改運作狀態不佳的耗盡間隔
在 https://console.aws.amazon.com/ec2/
開啟 Amazon EC2 主控台。 -
在導覽窗格的負載平衡中,選擇目標群組。
-
選擇目標群組的名稱,以開啟其詳細資訊頁面。
-
在屬性索引標籤中,選擇編輯。
-
在目標運作狀態不良管理下,確保在目標運作狀態不佳時終止連線已關閉。
-
輸入運作狀態不佳耗盡間隔的值。
-
選擇 Save changes (儲存變更)。
使用 修改運作狀態不佳的耗盡間隔 AWS CLI
使用 modify-target-group-attributes 命令搭配 target_health_state.unhealthy.draining_interval_seconds
屬性。