向 Application Load Balancer 目標群組註冊目標 - Elastic Load Balancing

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

向 Application Load Balancer 目標群組註冊目標

您會向目標群組註冊您的目標。建立目標群組時,您會指定其目標類型,這會決定您目標的註冊方式。例如,您可以註冊執行個體 ID、IP 地址或 Lambda 函數。如需詳細資訊,請參閱Application Load Balancer 的目標群組

如果對目前已註冊目標的需求增加,您可以註冊額外的目標來應付需求。當目標準備好處理請求時,請透過目標群組來註冊目標。在註冊程序完成、目標通過初始的運作狀態檢查之後,負載平衡器就會立即開始將請求轉送到目標。

如果對已註冊目標的需求減少,或是需要為目標提供服務,您可以從目標群組取消目標的註冊。取消目標的註冊之後,負載平衡器就會立即停止將請求轉送到目標。當目標準備好接收請求時,您可以再次將目標註冊到目標群組。

當您取消註冊目標時,負載平衡器會等到傳輸中的請求完成。這稱為連接耗盡。當連接耗盡作業正在進行時,目標的狀態是 draining

取消註冊透過 IP 地址註冊的目標時,您必須等待取消註冊延遲完成,之後才能再次註冊相同的 IP 地址。

如果是根據執行個體 ID 來註冊目標,您可以使用負載平衡器搭配 Auto Scaling 群組。在將目標群組連接到 Auto Scaling 群組,而且群組擴展之後,由 Auto Scaling 群組啟動的執行個體會自動註冊到目標群組。如果分離目標群組與 Auto Scaling 群組的連結,會自動從該目標群組中取消註冊執行個體。如需詳細資訊,請參閱 Amazon EC2 Auto Scaling User Guide 中的 Attaching a load balancer to your Auto Scaling group

關閉目標上的應用程式時,您必須先從目標群組取消註冊目標,並預留時間讓現有連線耗盡。您可以使用 describe-target-health CLI 命令或重新整理 中的目標群組檢視來監控取消註冊狀態 AWS 管理主控台。確認目標取消註冊後,您可以繼續停止或終止應用程式。此序列可防止使用者在處理流量時,於應用程式終止時遇到 5XX 錯誤。

目標安全群組

當您將 EC2 執行個體註冊為目標時,必須確定執行個體的安全群組,會允許負載平衡器同時透過接聽程式連接埠和運作狀態檢查連接埠與您的執行個體通訊。

建議的規則
Inbound
來源 連接埠範圍 Comment
負載平衡器安全群組 執行個體接聽程式 Allow traffic from the load balancer on the instance listener port
負載平衡器安全群組 運作狀態檢查 Allow traffic from the load balancer on the health check port

我們也建議您允許傳入 ICMP 流量,以支援路徑 MTU 探索。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的路徑 MTU 探索

目標最佳化工具

目標最佳化工具可讓您對目標群組中的目標強制執行嚴格的並行。它使用您在目標上安裝和設定的代理程式的協助。代理程式可做為負載平衡器和應用程式之間的內嵌代理。您可以將代理程式設定為強制執行負載平衡器可傳送至目標的並行請求數量上限。代理程式會追蹤目標正在處理的請求數量。當數字低於設定的最大值時,代理程式會傳送訊號給負載平衡器,讓它知道目標已準備好處理另一個請求。

若要啟用目標最佳化工具,您可以在建立目標群組時指定目標控制連接埠。負載平衡器會與此連接埠上的代理程式建立控制頻道,以管理流量。此連接埠與負載平衡器傳送應用程式流量的連接埠不同。向目標群組註冊的目標必須讓代理程式在其上執行。

注意:目標最佳化工具只能在建立目標群組期間啟用。目標控制連接埠無法在建立後修改。

代理程式以 Docker 映像的形式提供於: public.ecr.aws/aws-elb/target-optimizer/target-control-agent:latest。您可以在執行代理程式容器時設定下列環境變數:

TARGET_CONTROL_DATA_ADDRESS

代理程式會從此通訊端 (IP:port) 上的負載平衡器接收應用程式流量。此通訊端中的連接埠是您為目標群組設定的應用程式流量連接埠。根據預設,代理程式可以同時接受純文字和 TLS 連線。

TARGET_CONTROL_CONTROL_ADDRESS

代理程式會從此通訊端 (IP:port) 上的負載平衡器接收管理流量。通訊端中的連接埠是您為目標群組設定的目標控制連接埠。

TARGET_CONTROL_DESTINATION_ADDRESS

代理程式會將應用程式流量代理到此通訊端 (IP:port)。您的應用程式應該正在接聽此通訊端。

(選用) TARGET_CONTROL_MAX_CONCURRENCY

目標將從負載平衡器接收的並行請求數目上限。它可以介於 0-1000 之間。預設為 1。

(選用) TARGET_CONTROL_TLS_CERT_PATH

代理程式在 TLS 交握期間提供給負載平衡器的 TLS 憑證位置。根據預設,代理程式會在記憶體中產生自我簽署的憑證。

(選用) TARGET_CONTROL_TLS_KEY_PATH

對應至代理程式在 TLS 交握期間提供給負載平衡器之 TLS 憑證的私有金鑰位置。根據預設,代理程式會在記憶體中產生私有金鑰。

(選用) TARGET_CONTROL_TLS_SECURITY_POLICY

您為目標群組設定的 ELB 安全政策。預設值為 ELBSecurityPolicy-2016-08

(選用) TARGET_CONTROL_PROTOCOL_VERSION

負載平衡器與代理程式通訊的通訊協定。可能的值為 HTTP1 HTTP2 GRPC。預設值為 HTTP1

(選用) RUST_LOG

代理程式程序的日誌層級。代理程式軟體是以 Rust 撰寫。可能的值為 debug info error 。預設值為 info

若要修改任何環境變數的值,您必須使用新值重新啟動代理程式。您可以使用下列指標監控目標最佳化工具:TargetControlRequestCountTargetControlRequestRejectCountTargetControlActiveChannelCountTargetControlNewChannelCountTargetControlChannelErrorCount TargetControlWorkQueueLength、、TargetControlProcessedBytes。如需詳細資訊,請參閱目標最佳化工具指標 如需故障診斷資訊,請參閱目標最佳化工具故障診斷

共用子網路

參與者可以在共用 VPC 中建立 Application Load Balancer。參與者無法註冊在未與他們共用的子網路中執行的目標。

登記目標

在負載平衡器能夠使用的每個可用區域中,每個目標群組都必須擁有至少一個已登錄的目標。

目標群組的目標類型會決定您向該目標群組註冊目標的方式。如需詳細資訊,請參閱Target type (目標類型)

需求和考量事項
  • 在註冊時,執行個體必須處於 running 狀態。

  • 目標執行個體必須位於您為目標群組指定的虛擬私有雲端 (VPC) 中。

  • 依執行個體 ID 註冊 IPv6 目標群組的目標時,目標必須具有指派的主要 IPv6 地址。若要進一步了解,請參閱《Amazon EC2 使用者指南》中的 IPv6 地址

  • 依 IPv4 目標群組的 IP 地址註冊目標時,您註冊的 IP 地址必須來自下列其中一個 CIDR 區塊:

    • 目標群組 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)

  • 依 IPv6 目標群組的 IP 地址註冊目標時,您註冊的 IP 地址必須位於 VPC IPv6 CIDR 區塊內或對等 VPC 的 IPv6 CIDR 區塊內。

  • 您無法在相同的 VPC 中註冊另一個 Application Load Balancer 的 IP 地址。如果另一個 Application Load Balancer 位於與負載平衡器 VPC 對等的 VPC 中,您可以註冊其 IP 地址。

Console
註冊目標
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

  4. 選擇 Targets (目標) 標籤。

  5. 選擇 Register targets (註冊目標)

  6. 如果目標群組的目標類型為 instance,請選取可用的執行個體,視需要覆寫預設連接埠,然後選擇包含為待定

  7. 如果目標群組的目標類型為 ip,請針對每個 IP 地址選取網路,輸入 IP 地址和連接埠,然後選擇包含為以下待定

  8. 如果目標群組的目標類型是 lambda,請選取 Lambda 函數或輸入其 ARN。如需詳細資訊,請參閱使用 Lambda 函數做為目標

  9. 選擇註冊待定目標

AWS CLI
註冊目標

使用 register-targets 命令。下列範例會依執行個體 ID 註冊目標。由於未指定連接埠,負載平衡器會使用目標群組連接埠。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890

下列範例會依 IP 地址註冊目標。由於未指定連接埠,負載平衡器會使用目標群組連接埠。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=10.0.50.10 Id=10.0.50.20

下列範例會將 Lambda 函數註冊為目標。

aws elbv2 register-targets \ --target-group-arn target-group-arn \ --targets Id=lambda-function-arn
CloudFormation
註冊目標

更新 AWS::ElasticLoadBalancingV2::TargetGroup 資源以包含新目標。下列範例會依執行個體 ID 註冊兩個目標。

Resources: myTargetGroup: Type: 'AWS::ElasticLoadBalancingV2::TargetGroup' Properties: Name: my-target-group Protocol: HTTP Port: 80 TargetType: instance VpcId: !Ref myVPC Targets: - Id: !GetAtt Instance1.InstanceId Port: 80 - Id: !GetAtt Instance2.InstanceId Port: 80

取消註冊目標

如果對您應用程式的需求減少,或者您需要為目標提供服務,可以從目標群組取消目標的登錄。取消目標的登錄,會將該目標從目標群組中移除,但不會影響到目標。

Console
取消註冊目標
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

  4. 目標索引標籤上,選取要移除的目標。

  5. 選擇 Deregister (取消註冊)

  6. 出現確認的提示時,請選擇取消註冊

AWS CLI
取消註冊目標

使用 deregister-targets 命令。下列範例會取消註冊透過執行個體 ID 註冊的兩個目標。

aws elbv2 deregister-targets \ --target-group-arn target-group-arn \ --targets Id=i-1234567890abcdef0 Id=i-0abcdef1234567890