我的 Application Load Balancer 需要一個靜態 IP 位址。我想在 Network Load Balancer 後面註冊 Application Load Balancer。
簡短說明
您無法為 Application Load Balancer 分配靜態 IP 位址。如果您的 Application Load Balancer 需要靜態 IP 位址,則最佳實踐是在 Network Load Balancer 後方註冊。無法變更為 Network Load Balancer 分配的靜態 IP 位址,並為您的 Application Load Balancer 提供固定的進入點。
**注意:**下列解決方法使用 Amazon Elastic Compute Cloud (Amazon EC2) 主控台上的新啟動體驗。在 Amazon EC2 主控台中切換此功能,以完成下列解析步驟。
解決方法
Amazon EC2 主控台
使用 Amazon EC2 主控台建立新的目標群組,並將 Application Load Balancer 註冊為目標。然後,建立並設定 Network Load Balancer,以將流量轉送至 Application Load Balancer。
為 TCP 80 和 TCP 443 流量建立新的目標群組,並將您的 Application Load Balancer 註冊為目標
若要為 EC2 執行個體建立新的目標群組並註冊目標,請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導航窗格中,展開負載平衡,然後選擇目標群組。
- 選擇建立目標群組。
- 對於選擇目標類型,選擇 Application Load Balancer。
- 在 Target group name (目標群組名稱) 中,輸入目標群組的名稱。
- 在 Protocol (通訊協定) 中,選擇 TLS。在 Port (連接埠) 的 HTTP 流量中,選擇 80。
- 在 VPC 中,選取用於您 Application Load Balancer 的虛擬私有雲端 (VPC)。
- 在 Health Check protocol (運作狀態檢查通訊協定) 中,為傳回 HTTP 200 - 399 狀態的 Application Load Balancer 選擇 HTTP 或 HTTPS。
- 選擇 Next (下一步)。
- 對於 Application Load Balancer,選取您的 Application Load Balancer。
- 選擇建立目標群組。
- 重複執行步驟 3-11,以建立其他目標群組。重複執行步驟 6 時,選擇 TCP 通訊協定和 443 連接埠,為 HTTPS 流量建立另一個目標群組。
建立並設定 Network Load Balancer,將 HTTP 和 HTTPS 流量轉送至 Application Load Balancer
若要建立並設定 Network Load Balancer,以將 HTTP 和 HTTPS 流量轉送至 Application Load Balancer,請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導航窗格中,展開負載平衡,然後選擇負載平衡器。
- 選擇建立負載平衡器。
- 對於負載平衡器類型,選擇 Network Load Balancer,然後選擇建立。
- 對於負載平衡器名稱,輸入 Network Load Balancer 的名稱。
- 在方案中,選擇面向網際網路或內部。您可以將內部 Application Load Balancer 與面向網際網路的 Network Load Balancer 搭配使用。
- 對於 IP 位址類型,選擇 IPv4。
- 對於 VPC,選取您的 VPC。
- 對於映射,選擇一或多個可用區域和子網路。為內部負載平衡器選擇私有子網路,或為面向網際網路的負載平衡器選擇公有子網路。
- 在 IPv4 address (IPv4 位址) 中,選取 Assigned by AWS (由 AWS 指派) 或 Use an Elastic IP address (使用彈性 IP 位址)。
- 在 Protocol (通訊協定) 中,選擇 TLS。在 Port (連接埠) 的 HTTP 流量中,選擇 80。
- 在 Default action (預設動作) 中,選擇包含 Application Load Balancer 作為已註冊目標的目標群組。
- 選擇 Add listener (新增接聽程式),然後重複執行步驟 11-12。使用預設動作選擇 TCP 通訊協定和 443 連接埠,該動作可將流量轉送至 Application Load Balancer 的 TCP 443 目標群組。
- 選擇 Create load balancer (建立負載平衡器)。
- 測試負載平衡器。
**注意:**若要使用此組態在 Application Load Balancer 上使用 HTTP 至 HTTPS 重新導向,您必須建立兩個目標群組。為 TCP 80 建立一個 Application Load Balancer 目標群組,為 TCP 443 建立另一個群組。
設定 Application Load Balancer 的安全群組和網路存取控制清單 (網路 ACLs),以允許從 Network Load Balancer 的私人 IP 位址進行運作狀態檢查。
AWS CLI
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請參閱AWS CLI 錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要使用 AWS CLI 在 Network Load Balancer 後面註冊 Application Load Balancer,請完成下列步驟:
- 建立新目標群組並使用 alb 目標類型:
aws elbv2 create-target-group \
--name <name> \
--protocol TCP \
--port <port> \
--target-type alb \
--vpc-id <vpc_id>
**注意:**將 name 取代為您的目標群組名稱,將 port 取代為連接埠號碼,將 vpc_id 取代為您的 VPC ID。
- 向目標群組註冊 Application Load Balancer:
aws elbv2 register-targets \
--target-group-arn <tg_arn from previous command> \
--targets Id=<alb_arn>
注意:將上一個命令中的 tg_arn 替換為目標群組的 ARN,將 alb_arn 替換為 Application Load Balancer ARN。
- 建立 Network Load Balancer:
aws elbv2 create-load-balancer \
--name <nlb name> \
--type network \
--scheme internal \
--subnets <subnet_ids>
**注意:**將 nlb_name 替換為您的 Network Load Balancer 名稱,將 subnet_ids 替換為您的子網路 ID。
- 建立接聽程式:
aws elbv2 create-listener --load-balancer-arn ${nlb1_arn} \
--protocol TCP --port <port> \
--default-actions Type=forward,TargetGroupArn=<target group>
相關資訊
使用 AWS Lambda 啟用 Application Load Balancer 的靜態 IP 位址
Application Load Balancer 現在透過與 Network Load Balancer 直接整合來啟用 AWS PrivateLink 和靜態 IP 位址