編輯 Network Load Balancer 的屬性 - Elastic Load Balancing

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

編輯 Network Load Balancer 的屬性

建立 Network Load Balancer 之後,您可以編輯其屬性。

刪除保護

若要防止意外刪除 Network Load Balancer,您可以啟用刪除保護。根據預設,會停用 Network Load Balancer 的刪除保護。

如果您為 Network Load Balancer 啟用刪除保護,您必須先停用它,才能刪除 Network Load Balancer。

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

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

  3. 選取您 Network Load Balancer 的名稱來開啟其詳細資訊頁面。

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

  5. 保護下,啟用刪除保護

  6. 選擇儲存變更

AWS CLI
啟用刪除保護

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

aws elbv2 modify-load-balancer-attributes \ --load-balancer-arn load-balancer-arn \ --attributes "Key=deletion_protection.enabled,Value=true"
CloudFormation
啟用刪除保護

更新 AWS::ElasticLoadBalancingV2::LoadBalancer 資源以包含 deletion_protection.enabled 屬性。

Resources: myLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer' Properties: Name: my-nlb Type: network Scheme: internal Subnets: - !Ref subnet-AZ1 - !Ref subnet-AZ2 SecurityGroups: - !Ref mySecurityGroup LoadBalancerAttributes: - Key: "deletion_protection.enabled" Value: "true"

跨區域負載平衡

當使用 Network Load Balancer 時,在負載平衡器層級預設會關閉跨區域負載平衡,但您可以隨時將其開啟。對於目標群組,預設值是使用負載平衡器設定,但您可以在目標群組層級明確關閉跨區域負載平衡來覆寫預設值。如需詳細資訊,請參閱目標群組的跨區域負載平衡

Console
啟用負載平衡器的跨區域負載平衡
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格的 Load Balancing (負載平衡) 下方,選擇 Load Balancers (負載平衡器)

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

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

  5. 編輯負載平衡器屬性 頁面,開啟 跨區域負載平衡 或關閉。

  6. 選擇儲存變更

AWS CLI
啟用負載平衡器的跨區域負載平衡

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

aws elbv2 modify-load-balancer-attributes \ --load-balancer-arn load-balancer-arn \ --attributes "Key=load_balancing.cross_zone.enabled,Value=true"
CloudFormation
啟用負載平衡器的跨區域負載平衡

更新 AWS::ElasticLoadBalancingV2::LoadBalancer 資源以包含 load_balancing.cross_zone.enabled 屬性。

Resources: myLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer' Properties: Name: my-nlb Type: network Scheme: internal Subnets: - !Ref subnet-AZ1 - !Ref subnet-AZ2 SecurityGroups: - !Ref mySecurityGroup LoadBalancerAttributes: - Key: "load_balancing.cross_zone.enabled" Value: "true"

可用區域 DNS 親和性

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

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

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

    用戶端 DNS 查詢會在自己的可用區域中偏好 Network Load Balancer IP 地址。如果自有區域中沒有運作狀態良好的 Network Load Balancer IP 地址,查詢可能會解析為其他區域。

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

    85% 的用戶端 DNS 查詢會偏好其可用區域中的 Network Load Balancer IP 地址,其餘查詢則會解析為任何運作狀態良好的區域。如其區域無運作狀態良好的 IP,則查詢可能解析為其他運作狀態良好區域。當所有區域均無運作狀態良好的 IP 時,查詢會解析為任何區域。

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

    用戶端 DNS 查詢會在所有 Network Load Balancer 可用區域中運作狀態良好的 Network Load Balancer IP 地址之間解決。

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

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

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

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

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

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

  • 搭配 Network Load Balancer 和 Route 53 Resolver 使用可用區域親和性時,我們建議用戶端在自己的可用區域中使用 Route 53 Resolver 傳入端點。

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

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

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

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

監控

建議使用區域 Network Load Balancer 指標,追蹤可用區域之間的連線分佈。您可利用指標來檢視每個區域的新連線與作用中連線數目。

我們建議追蹤下列項目:

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

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

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

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

如需詳細資訊,請參閱Network Load Balancer 的CloudWatch 指標

啟用可用區域親和性

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

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

  3. 選取您 Network Load Balancer 的名稱來開啟其詳細資訊頁面。

  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 命令。

aws elbv2 modify-load-balancer-attributes \ --load-balancer-arn load-balancer-arn \ --attributes "Key=dns_record.client_routing_policy,Value=partial_availability_zone_affinity"
CloudFormation
啟用可用區域親和性

更新 AWS::ElasticLoadBalancingV2::LoadBalancer 資源以包含 dns_record.client_routing_policy 屬性。

Resources: myLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer' Properties: Name: my-nlb Type: network Scheme: internal Subnets: - !Ref subnet-AZ1 - !Ref subnet-AZ2 SecurityGroups: - !Ref mySecurityGroup LoadBalancerAttributes: - Key: "dns_record.client_routing_policy" Value: "partial_availability_zone_affinity"

次要 IP 地址

如果您遇到連接埠配置錯誤,而且無法將目標新增至目標群組來解決這些錯誤,您可以將次要 IP 地址新增至負載平衡器網路介面。對於啟用負載平衡器的每個區域,我們從負載平衡器子網路中選取 IPv4 地址,並將其指派給對應的網路介面。這些次要 IP 地址用於建立與目標的連線。它們也用於運作狀態檢查流量。我們建議您新增一個次要 IP 地址以開始、監控PortAllocationErrors指標,以及只有在連接埠配置錯誤未解決時新增另一個次要 IP 地址。

警告

新增次要 IP 地址之後,您就無法將其移除。釋放次要 IP 地址的唯一方法是刪除負載平衡器。新增次要 IP 地址之前,請確認負載平衡器子網路中有足夠的可用 IPv4 地址。

Console
新增次要 IP 地址
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

  3. 選取您 Network Load Balancer 的名稱來開啟其詳細資訊頁面。

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

  5. 展開特殊案例屬性,解鎖每個子網路屬性自動指派的次要 IP 地址,然後選擇次要 IP 地址的數量。

  6. 選擇儲存變更

AWS CLI
新增次要 IP 地址

屬性來使用 modify-load-balancer-attributessecondary_ips.auto_assigned.per_subnet 命令。

aws elbv2 modify-load-balancer-attributes \ --load-balancer-arn load-balancer-arn \ --attributes "Key=secondary_ips.auto_assigned.per_subnet,Value=1"

您可以使用 describe-network-interfaces 命令來取得負載平衡器網路介面的 IPv4 地址。--filters 參數會將結果範圍限定為 Network Load Balancer 的網路介面,而 --query 參數會將結果範圍進一步限定為具有指定名稱的負載平衡器,並僅顯示指定的欄位。您可以視需要包含其他欄位。

aws elbv2 describe-network-interfaces \ --filters "Name=interface-type,Values=network_load_balancer" \ --query "NetworkInterfaces[?contains(Description,'my-nlb')].{ID:NetworkInterfaceId,AZ:AvailabilityZone,Addresses:PrivateIpAddresses[*]}"
CloudFormation
新增次要 IP 地址

更新 AWS::ElasticLoadBalancingV2::LoadBalancer 資源以包含 secondary_ips.auto_assigned.per_subnet 屬性。

Resources: myLoadBalancer: Type: 'AWS::ElasticLoadBalancingV2::LoadBalancer' Properties: Name: my-nlb Type: network Scheme: internal Subnets: - !Ref subnet-AZ1 - !Ref subnet-AZ2 SecurityGroups: - !Ref mySecurityGroup LoadBalancerAttributes: - Key: "secondary_ips.auto_assigned.per_subnet" Value: "1"