Network Load Balancer - Elastic Load Balancing

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

Network Load Balancer

負載平衡器做為用戶端的單一聯絡點。用戶端將請求傳送到負載平衡器,而負載平衡器將請求傳送到目標,例如在一或多個可用區域內的 EC2 執行個體。

若要設定您的負載平衡器,您需要建立目標群組,然後使用您的目標群組來登錄目標。如果您確認每個已啟用的可用區域擁有至少一個登錄的目標,您的負載平衡器會展現最高效率。您也可以建立接聽程式來檢查來自用戶端的連線請求,並路由來自用戶端的請求到目標群組中的目標。

網路負載平衡器支援透過 VPC 對等互連、 AWS 受管理 VPN 和第三方 VPN 解決方案來自用戶端的連線。 AWS Direct Connect

負載平衡器狀態

負載平衡器可為以下其中一種狀態:

provisioning

正在設定負載平衡器。

active

負載平衡器已設定完成並準備好路由流量。

failed

無法設定負載平衡器。

負載平衡器屬性

負載平衡器具以下其中一種屬性:

access_logs.s3.enabled

指出在 Amazon S3 中存放的存取日誌是否啟用。預設值為 false

access_logs.s3.bucket

存取日誌的 Amazon S3 儲存貯體名稱。如果啟用存取日誌,則此為必要屬性。如需詳細資訊,請參閱 儲存貯體需求

access_logs.s3.prefix

Amazon S3 儲存貯體中的位置字首。

deletion_protection.enabled

表示是否已啟用刪除保護。預設值為 false

ipv6.deny_all_igw_traffic

區塊網際網路閘道 (IGW) 對負載平衡器的存取,以防止透過網際網路閘道對內部負載平衡器進行非預期存取。如果是面向網際網路的負載平衡器,設為 false,如果是內部負載平衡器,則設為 true。此屬性不會阻止非 IGW 網際網路存取 (例如透過對等互連、Transit Gateway 或)。 AWS Direct Connect AWS VPN

load_balancing.cross_zone.enabled

表示是否已啟用跨區域負載平衡。預設值為 false

dns_record.client_routing_policy

指出流量在負載平衡器可用區域之間的分配方式。可能值為 availability_zone_affinity 具 100% 區域親和性、partial_availability_zone_affinity 具 85% 區域親和性,以及 any_availability_zone 具 0% 區域親和性。

IP 地址類型

您可設定 IP 地址類型,以便用戶端可搭配您的負載平衡器加以運用。

網路負載平衡器支援下列 IP 位址類型:

ipv4

用戶端必須採用 IPv4 地址 (例如,192.0.2.1) 才能連接負載平衡器。啟用 IPv4 的負載平衡器 (包括面向網際網路與內部) 支援 TCP、UDP、TCP_UDP 與 TLS 接聽程式。

dualstack

用戶端可以使用 IPv4 地址 (例如,192.0.2.1) 和 IPv6 地址 (例如,2001:0db8:85a3:0:0:8a2e:0370:7334) 連接至負載平衡器。啟用雙堆疊的負載平衡器 (包括面向網際網路與內部) 支援 TCP 與 TLS 接聽程式。

考量事項
  • 負載平衡器會根據目標群組的 IP 地址類型與目標進行通訊。

  • 當您啟用負載平衡器的雙堆疊模式時,Elastic Load Balancing 會提供負載平衡器的 AAAA DNS 記錄。使用 IPv4 地址與負載平衡器通訊的用戶端可解析 A DNS 記錄。使用 IPv6 地址與負載平衡器通訊的用戶端可解析 AAAA DNS 記錄。

  • 透過網際網路閘道存取內部雙堆疊負載平衡器會遭到封鎖,以防止來自網際網路的非預期存取。但是,這並不會阻止其他網際網路存取 (例如透過對等互連、Transit Gateway 或 AWS VPN)。 AWS Direct Connect

如需 IP 位址類型的詳細資訊,請參閱Network Load Balancer 的 IP 地址類型

Network Load Balancer 資源對應

Network Load Balancer 資源對應提供負載平衡器架構的互動式顯示,包括其關聯的接聽程式、目標群組和目標。資源對應也會反白顯示所有資源之間的關係和路由路徑,以視覺化方式呈現負載平衡器的組態。

使用主控台檢視網路負載平衡器的資源對應
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 選擇資源對映索引標籤以顯示負載平衡器的資源對映。

資源對映元件

地圖檢視

「Network Load Balancer」資源對映中有兩種檢視:「觀」和「狀態不良的目標對映」。預設情況下會選取「概觀」,並顯示所有負載平衡器的資源。選取「狀況不良的目標對映」檢視只會顯示狀況不良的目標及其相關聯的資源。

狀態不良的目標對映檢視可用來疑難排解未通過健康狀態檢查的目標。如需詳細資訊,請參閱 使用資源對應疑難排解狀況不良的目標

資源欄

Network Load Balancer 資源對映包含三個資源欄,每個資源類型各一個資源欄。資源群組為監聽器目標群組目標

資源並排

欄中的每個資源都有自己的圖標,其中顯示有關該特定資源的詳細資訊。

  • 將游標暫留在資源圖標上,會反白顯示其與其他資源之間的關係。

  • 選取資源圖標會反白該資源與其他資源之間的關係,並顯示有關該資源的其他詳細資訊。

    • 目標群組健全狀況摘要:每個健全狀況狀態的已註冊目標數目。

    • 目標健全狀況狀態:目標目前的健全狀況狀態和說明。

    注意

    您可以關閉 [顯示資源詳細資料] 以隱藏資源對映中的其他詳細資料。

  • 每個資源圖標都包含一個連結,選取此連結後,會導覽至該資源的詳細資訊頁面。

    • 監聽器-選取偵聽程式通訊協定:連接埠。例如:TCP:80

    • 目標群組-選取目標群組名稱。例如:my-target-group

    • 目標-選取目標 ID。例如:i-1234567890abcdef0

匯出資源對應

選取 [匯] 可讓您選擇將網路負載平衡器資源對應的目前檢視匯出為 PDF。

可用區域

建立您的負載平衡器時,啟用一個或多個可用區域。如果您為您的負載平衡器啟用多個可用區域,將會提高應用程式的容錯能力。在建立 Network Load Balancer 之後,無法停用其可用區域,但可啟用其他可用區域。

當您啟用可用區域,表示您從該可用區域指定一個子網路。Elastic Load Balancing 會在可用區域建立負載平衡器節點以及子網路的網路界面 (說明以「ELB 網路」為開頭並包含負載平衡器的名稱)。可用區域中的每個負載平衡器節點皆使用此網路界面來取得 IPv4 地址。請注意,您可查看此網路界面,但無法加以修改。

當您建立面向網際網路的負載平衡器時,您可以選擇每個子網路指定一個彈性 IP 地址。若您未在自己的彈性 IP 地址擇一,Elastic Load Balancing 會為您在每個子網路提供一個彈性 IP 地址。這些彈性 IP 地址為您的負載平衡器提供靜態 IP 地址,這些地址在負載平衡器的生命週期內不會變更。在建立負載平衡器之後,無法變更這些彈性 IP 地址。

當您建立內部負載平衡器時,您可以選擇每個子網路指定一個彈性 IP 地址。如您未從子網路指定 IP 地址,Elastic Load Balancing 會為您選擇一個地址。這些私有 IP 地址為您的負載平衡器提供靜態 IP 位址,這些地址在負載平衡器的生命週期內不會變更。在建立負載平衡器之後,您無法變更這些私有 IP 地址。

考量事項
  • 對於網際網路對向負載平衡器,您指定的子網路必須至少有 8 個可用的 IP 地址。對於內部負載平衡器,只有當您允許從子網路 AWS 選取私人 IPv4 位址時,才需要此選項。

  • 您無法在受限可用區域中指定子網路。錯誤訊息是「在 az_name 中不支援含類型『網路』的負載平衡器」。您可以在另一個非受限的可用區域中指定子網路,並使用跨區域負載平衡將流量分配給受限可用區域中的目標。

  • 您可以指定與您共用的子網路。

  • 您無法在本機區域中指定子網路。

當您啟用可用區域之後,負載平衡器會開始將請求路由到該可用區域內已註冊的目標。如果您確認每個已啟用的可用區域擁有至少一個登錄的目標,您的負載平衡器會展現最高效率。

使用主控台新增可用區域
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 網路映射索引標籤中,選擇編輯子網路

  5. 若要啟用可用區域,請選取該可用區域的核取方塊。如果該可用區域有一個子網路,則會選取該子網路。如果該可用區域有多個子網路,則請選取其中一個子網路。請注意,一個可用區域只能選取一個子網路。

    對於面向網際網路的負載平衡器,您可以為每個可用區域選取一個彈性 IP 地址。對於內部負載平衡器,您可從每個子網路的 IPv4 範圍指派私有 IP 地址,而非讓 Elastic Load Balancing 指派。

  6. 選擇儲存變更

若要使用新增可用區域 AWS CLI

使用 set-subnets 命令。

跨區域負載平衡

預設情況下,每個負載平衡器節點只會將流量分布到其可用區域中的登錄目標。若您開啟跨區域負載平衡功能,每個負載平衡器節點會將流量分布至所有可用區域內已登錄的目標。您也可在目標群組層級開啟跨區域負載平衡。如需詳細資訊,請參閱 Elastic Load Balancing 使用者指南目標群組的跨區域負載平衡跨區域負載平衡

刪除保護

為避免您的負載平衡器上遭意外刪除,您可以啟用刪除保護。您的負載平衡器的刪除保護預設為停用。

如果您為負載平衡器啟用刪除保護,則必須先停用才可刪除負載平衡器。

使用主控台來啟用刪除保護
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 屬性索引標籤中,選擇編輯

  5. 組態下方,開啟刪除保護

  6. 選擇儲存變更

使用主控台來停用刪除保護
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 屬性索引標籤中,選擇編輯

  5. 組態下方,開啟刪除保護

  6. 選擇儲存變更

若要啟用或停用刪除保護,請使用 AWS CLI

屬性來使用 modify-load-balancer-attributesdeletion_protection.enabled 命令。

連線閒置逾時

對於用戶端透過 Network Load Balancer 做出的每項 TCP 請求,將追蹤該連線狀態。若在比閒置逾時更長的時間內沒有由用戶端或目標透過連線傳送的資料,連線將關閉。如果用戶端或目標於閒置逾時時間經過後傳送資料,就會收到一個 TCP RST 封包,表示連線不再有效。

我們會將 TCP 流程的閒置逾時值設為 350 秒。您無法修改此值。用戶端或目標可以使用 TCP 保持連線封包來重設閒置逾時。傳送來維護 TLS 連線的保持連線封包不能包含資料或有效負載。

當 TLS 接聽程式從用戶端或目標收到 TCP 保持連線封包時,負載平衡器會產生 TCP 保持連線封包,並每 20 秒將其傳送至前端與後端連線。您無法修改此行為。

儘管 UDP 為無連線,負載平衡器會根據來源與目的地 IP 地址及連接埠來維護 UDP 流程狀態。這可確保持續傳送屬於相同流程的封包至相同目標。在閒置逾時期間經過之後,負載平衡器會將傳入的 UDP 封包視為新流程,並將其路由至新目標。Elastic Load Balancing 會將 UDP 流量的閒置逾時值設為 120 秒。

EC2 執行個體必須在 30 秒內回應新的請求,才能建立傳回路徑。

DNS 名稱

每個 Network Load Balancer 都會收到預設的網域名稱系統 (DNS) 名稱,其語法如下:name-id.elb.region.amazonaws.com。例如, my-load-balancer-1234567890abcdef.elb.us。我們東部-2.

如果您偏好使用更易於記住的 DNS 名稱,您可以建立自訂網域名稱,並將其與負載平衡器的 DNS 名稱建立關聯。當用戶端使用此自訂網域名稱發出請求時,DNS 伺服器為您的負載平衡器解析 DNS 名稱。

首先,向取得認證的網域名稱註冊商註冊網域名稱。接著,利用您的 DNS 服務 (例如您的網域登錄商) 建立 DNS 記錄,以便將請求路由至您的負載平衡器。如需詳細資訊,請參閱您的 DNS 服務文件。例如,如您採用 Amazon Route 53 做為 DNS 服務,則建立指向負載平衡器的別名記錄。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》中的將流量路由到 ELB 負載平衡器

負載平衡器在每個已啟用的可用區域都有一個 IP 地址。這些是負載平衡器節點的 IP 地址。負載平衡器的 DNS 名稱解析為這些地址。例如,假設負載平衡器的自訂網域名稱是 example.networkloadbalancer.com。使用以下 dignslookup 命令來判斷負載平衡器節點的 IP 地址。

Linux 或 Mac

$ dig +short example.networkloadbalancer.com

Windows

C:\> nslookup example.networkloadbalancer.com

負載平衡器具有其負載平衡器節點的 DNS 記錄。您可利用 DNS 名稱搭配以下語法,來判斷負載平衡器節點的 IP 地址:az.name-id.elb.region.amazonaws.com。

Linux 或 Mac

$ dig +short us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com

Windows

C:\> nslookup us-east-2b.my-load-balancer-1234567890abcdef.elb.us-east-2.amazonaws.com

可用區域 DNS 親和性

當採用預設用戶端路由政策時,傳送至 Network Load Balancer DNS 名稱的請求將收到任何運作狀態良好的負載平衡器 IP 地址。這會導致負載平衡器可用區域之間的用戶端連線分配。當採用可用區域親和性路由政策時,用戶端 DNS 查詢會偏好其本身可用區域的負載平衡器 IP 地址。由於用戶端在連線至目標時不需跨越可用區域界限,因此這有助改善延遲及復原能力。

使用 Route 53 Resolver 之 Network Load Balancer 可採用的用戶端路由政策:
  • 可用區域親和性100% 區域親和性

    用戶端 DNS 查詢會偏好其本身可用區域的負載平衡器 IP 地址。如其區域無運作狀態良好的負載平衡器 IP 地址,則查詢可能解析為其他區域。

  • 部分可用區域親和性 - 85% 區域親和性

    85% 的用戶端 DNS 查詢會偏好其本身可用區域的負載平衡器 IP 地址,而其餘查詢則會解析至任何運作狀態良好的區域。如其區域無運作狀態良好的 IP,則查詢可能解析為其他運作狀態良好區域。當所有區域均無運作狀態良好的 IP 時,查詢會解析為任何區域。

  • 任何可用區域 (預設) – 0% 區域親和性

    用戶端 DNS 查詢會在所有負載平衡器可用區域的運作狀態良好負載平衡器 IP 地址之間進行解析。

注意

可用區域親和性路由政策僅適用採用 Route 53 Resolver 來解析 Network Load Balancer DNS 名稱的用戶端。如需詳細資訊,請參閱《Amazon Route 53 開發人員指南》中的什麼是 Amazon Route 53 Resolver?

可用區域親和性可協助將請求從用戶端路由至負載平衡器,而跨區域負載平衡則用於協助將請求從負載平衡器路由至目標。使用可用區域相似性時,應關閉跨區域負載平衡,如此可確保從用戶端到目標的負載平衡器流量保持在相同的可用區域內。使用此組態時,用戶端流量會傳送至相同的 Network Load Balancer 可用區域,因此建議您將應用程式設定為在每個可用區域中獨立擴充。當每個可用區域的用戶端數目或每個可用區域的流量不相同時,這是一項重要的考量。如需詳細資訊,請參閱 目標群組的跨區域負載平衡

當可用區域被視為運作狀態不佳,或開始區域轉移時,除非故障開放生效,否則區域 IP 地址將被視為運作狀態不佳,且不會傳回用戶端。當 DNS 記錄為故障開放時,會維持可用區域親和性。這有助可用區域保持獨立,並防止潛在的跨區域故障。

當採用可用區域親和性時,可用區域之間預期會出現不平衡時間。建議確保您的目標以區域層級擴展,以便支援每個可用區域工作負載。若出現顯著不平衡情況,建議關閉可用區域親和性。這可允許在 60 秒內或 DNS TTL 在所有負載平衡器可用區域之間平均分配用戶端連線。

在採用可用區域親和性之前,請考量下列事項:
  • 可用區域親和性會對使用 Route 53 Resolver 的所有 Network Load Balancer 用戶端造成變更。

    • 用戶端無法決定區域本機及多區域 DNS 解析。可用區域親和性會為其決定。

    • 不會為用戶端提供可靠方法來判斷何時受到可用區域親和性的影響,或如何得知哪個 IP 地址位於哪個可用區域。

  • 用戶端會持續指派至其區域本機 IP 地址,直到根據 DNS 運作狀態檢查其被視為運作狀態完全故障,並從 DNS 移除為止。

  • 在開啟跨區域負載平衡的情況採用可用區域親和性可能導致可用區域之間的用戶端連線分配不平衡。建議您將應用程式堆疊設為在每個可用區域獨立擴展,以便確保其可支援區域用戶端流量。

  • 如開啟跨區域負載平衡,則 Network Load Balancer 會受到跨區域影響。

  • 每個 Network Load Balancer 可用區域的負載將與用戶端請求的區域位置成比例。如您未設定可用區域可執行的用戶端數目,則必須主動獨立擴展每個可用區域。

監控

建議利用區域負載平衡器指標來追蹤可用區域之間的連線分配情況。您可利用指標來檢視每個區域的新連線與作用中連線數目。

我們建議追蹤下列項目:

  • ActiveFlowCount - 從用戶端到目標的並行流程 (或連線) 總數。

  • NewFlowCount - 在期間內,從用戶端到目標建立的新流程 (或連線) 總數。

  • HealthyHostCount - 視為運作狀態良好的目標數目。

  • UnHealthyHostCount - 視為運作狀態不佳的目標數目。

如需更多資訊,請參閱CloudWatch Network Load Balancer 的指標

開啟可用區域親和性

本程序中的步驟說明如何使用 Amazon EC2 主控台開啟可用區域親和性。

運用主控台開啟可用區域親和性
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 屬性索引標籤中,選擇編輯

  5. Availability Zone routing configuration (可用區域路由組態)Client routing policy (用戶端路由政策) (DNS 記錄),選取 Availability Zone affinity (可用區域親和性)Partial Availability Zone affinity (部分可用區域親和性)

  6. 選擇儲存變更

若要使用開啟可用區域相似性 AWS CLI

屬性來使用 modify-load-balancer-attributesdns_record.client_routing_policy 命令。

關閉可用區域親和性

本程序的步驟說明如何運用 Amazon EC2 主控台關閉可用區域親和性。

運用主控台關閉可用區域親和性
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取您負載平衡器的名稱來開啟其詳細資訊頁面。

  4. 屬性索引標籤中,選擇編輯

  5. Availability Zone routing configuration (可用區域路由組態)Client routing policy (用戶端路由政策) (DNS 記錄),選取 Any Availability Zone (任何可用區域)

  6. 選擇儲存變更

若要使用關閉可用區域相似性 AWS CLI

屬性來使用 modify-load-balancer-attributesdns_record.client_routing_policy 命令。