設定雙堆疊 Elastic Beanstalk 負載平衡器 - AWS Elastic Beanstalk

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

設定雙堆疊 Elastic Beanstalk 負載平衡器

您可以啟用 Elastic Beanstalk 環境,以雙堆疊設定的負載平衡器同時提供 IPv4 和 IPv6 通訊協定。當您建立負載平衡環境時,基礎設施預設為 IPv4。您可以選擇使用雙堆疊組態建立新的環境,或將現有的IPv4-only環境更新為雙堆疊。

若要讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量,請將aws:elbv2:loadbalancer命名空間中的 IpAddressType選項設定為雙堆疊

注意

Elastic Beanstalk 僅支援 Application Load Balancer 和 Network Load Balancer 的雙堆疊通訊協定。它不支援使用 Classic Load Balancer 或單一執行個體環境的環境的雙堆疊。

Amazon VPC 先決條件

在 Elastic Beanstalk 環境中設定負載平衡器之前,您必須先使用 Amazon VPC 完成一些組態步驟:

  1. 將 IPv6 CIDR 區塊與您環境的 VPC 建立關聯。

  2. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

  3. (選用) 如果您的環境與 VPC 外部的元件交換網路流量,其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下,您必須更新 VPC 路由表以啟用 IPv6 流量。

您可以使用 Amazon VPC 主控台或 AWS CLI 命令來完成這些先決條件組態。以下主題將引導您,並引導您參閱 Amazon VPC 使用者指南AWS CLI 命令參考,以取得更多詳細資訊。

注意

完成 VPC 組態後,請等待幾分鐘讓變更傳播,然後再為負載平衡器設定雙堆疊。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤,請等待幾分鐘讓 VPC 組態傳播,然後再次嘗試雙堆疊組態。

使用主控台完成 VPC 先決條件

Amazon VPC 使用者指南提供完成這些先決條件任務的詳細步驟。

  1. 請參閱《Amazon VPC 使用者指南》中的步驟 1:將 IPv6 CIDR 區塊與 VPC 和子網路建立關聯

    此步驟提供兩個您必須完成的程序:

    • 建立 IPv6 CIDR 區塊與 VPC 的關聯。

    • 將 IPv6 CIDR 區塊與您的 VPC 子網路建立關聯。

  2. (選用) 如果您的環境與 VPC 外部的元件交換網路流量,其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下,您必須更新 VPC 路由表以啟用 IPv6 流量。若要完成此組態,請參閱《Amazon VPC 使用者指南》中的步驟 2:更新您的路由表

使用 完成 VPC 先決條件 AWS CLI

您可以使用 AWS CLI 來完成和驗證先決條件組態。

  1. 將 IPv6 CIDR 區塊與您環境的 VPC 建立關聯。

    1. 使用 associate-vpc-cidr-block 命令,將 CIDR 區塊與您的 VPC 建立關聯。

    2. 使用 describe-vpcs 命令來驗證 VPC 組態。

    範例 commands
    # Associate an Amazon-provided IPv6 CIDR block with your VPC aws ec2 associate-vpc-cidr-block \ --vpc-id vpc-12345678 \ --region us-east-1 \ --amazon-provided-ipv6-cidr-block # Verify the IPv6 CIDR block association aws ec2 describe-vpcs \ --vpc-ids vpc-12345678 \ --region us-east-1 \ --query 'Vpcs[0].Ipv6CidrBlockAssociationSet'
  2. 將 IPv6 CIDR 區塊與所有 VPC 子網路建立關聯。

    1. 使用 associate-subnet-cidr-block 命令,將 CIDR 區塊與您的子網路建立關聯。

    2. 使用 describe-subnets 命令來驗證子網路組態。

    範例 commands
    # List all subnets in your VPC aws ec2 describe-subnets \ --region us-east-1 \ --filters "Name=vpc-id,Values=vpc-12345678" \ --query 'Subnets[].{SubnetId:SubnetId,AvailabilityZone:AvailabilityZone}' # Associate IPv6 CIDR block with each subnet aws ec2 associate-subnet-cidr-block \ --subnet-id subnet-12345678 \ --region us-east-1 \ --ipv6-cidr-block 2001:db8::/64 # Verify IPv6 CIDR block association for all subnets aws ec2 describe-subnets \ --region us-east-1 \ --filters "Name=vpc-id,Values=vpc-12345678" \ --query 'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}'
  3. (選用) 如果您的環境與 VPC 外部的元件交換網路流量,其具有指定 VPC 可與哪些網路通訊的路由表。在此情況下,您必須更新 VPC 路由表以啟用 IPv6 流量。

    1. 使用 create-route 命令在 VPC 內的路由表中新增路由。

    2. 使用 describe-route-tables 命令來驗證您的路由表。

    範例 commands
    # Add IPv6 route to Internet Gateway for public subnets aws ec2 create-route \ --route-table-id rtb-12345678 \ --destination-ipv6-cidr-block ::/0 \ --gateway-id igw-12345678 \ --region us-east-1 # Add IPv6 route to NAT Gateway for private subnets (if applicable) aws ec2 create-route \ --route-table-id rtb-87654321 \ --destination-ipv6-cidr-block ::/0 \ --nat-gateway-id nat-12345678 \ --region us-east-1 # Verify routes aws ec2 describe-route-tables \ --route-table-ids rtb-12345678 \ --region us-east-1 \ --query 'RouteTables[0].Routes'

為您的 Elastic Beanstalk 負載平衡器設定雙堆疊

為您的環境設定 VPC 先決條件組態之後,您可以使用雙堆疊選項設定負載平衡器,以便同時提供 IPv4 和 IPv6 通訊協定。您可以使用 Elastic Beanstalk 主控台、 AWS CLI、 中的組態檔案.ebextensions,以及 AWS SDK 來設定負載平衡器來提供雙堆疊流量。

使用主控台

您可以使用 Elastic Beanstalk 主控台來設定環境負載平衡器的雙堆疊。

注意

此組態取決於多個點的資料傳播時間。當您設定負載平衡器並測試變更時,請考慮下列時間要求。

VPC 組態時間。完成中所述的 VPC 組態後Amazon VPC 先決條件,請等待幾分鐘讓變更傳播,然後再遵循這些程序。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤,請等待幾分鐘,然後重試組態步驟。

DNS 傳播時間。IpAddressType選項設定為 dualstack 之後,請等待幾分鐘讓變更傳播,再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間,如果您使用 IPv6 通訊協定啟動請求,在測試從用戶端到應用程式的通訊時可能會遇到問題。

建立新環境:設定負載平衡器以獲得雙堆疊支援
  1. 啟動 Elastic Beanstalk 主控台,並開始建立新環境的步驟。在設定服務存取頁面中設定必要欄位服務角色EC2 執行個體描述檔後,請繼續此程序中的步驟,將負載平衡器設定為雙堆疊組態。如需開始使用的詳細資訊,請參閱 建立 Elastic Beanstalk 環境

  2. 設定服務存取中選取下一步

  3. 設定聯網、資料庫和標籤頁面隨即顯示。

    如果您已完成上一節Amazon VPC 先決條件所述的 ,則表示您已設定必要的 VPC 和子網路。在此情況下,請略過此步驟及其子步驟,以繼續選取 VPC。

    1. 若要設定 VPC 和子網路,您可以選擇建立 VPC 以導覽至 VPC 主控台。請遵循 使用主控台完成 VPC 先決條件 中的步驟。

    2. 等待幾分鐘讓 VPC 更新傳播,然後返回 Elastic Beanstalk 主控台,然後選取重新整理以繼續下一個步驟。

      如果您在其餘步驟中遇到 VPC 或子網路組態錯誤,請等待幾分鐘,讓 VPC 組態有時間傳播,然後再試一次這些步驟。

  4. 設定聯網、資料庫和標籤頁面上,從具有相關聯 IPv6 CIDR 區塊的 VPC 下拉式清單中選取值。

    選取 VPC 之後,執行個體子網路會填入 VPC 子網路。

  5. 選取一或多個執行個體子網路,然後選取下一步

  6. 設定執行個體流量和擴展頁面隨即顯示。

    負載平衡器網路設定中,選取啟用雙堆疊 (IPv4 和 IPv6)。

  7. 選取負載平衡器類型應用程式負載平衡器網路負載平衡器都支援雙堆疊

  8. 您可以在目前的主控台頁面上繼續設定其他負載平衡器選項。如需負載平衡器選項和組態的詳細資訊,請參閱本章的其他主題。

  9. 繼續執行完成環境組態和建立的步驟。如需詳細資訊,請參閱建立 Elastic Beanstalk 環境

現有環境:為雙堆疊支援設定負載平衡器
  1. 開啟 Elastic Beanstalk 主控台,然後在區域清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

  3. 在導覽窗格中,選擇組態

  4. 網路和資料庫組態類別中,選擇編輯

  5. 如果您已完成上一節Amazon VPC 先決條件所述的 ,則表示您已設定必要的 VPC 和子網路。在此情況下,請略過此步驟及其子步驟,以繼續選取 VPC。

    1. 若要設定 VPC 和子網路,您可以選擇建立 VPC 以導覽至 VPC 主控台。請遵循 使用主控台完成 VPC 先決條件 中的步驟。

    2. 等待幾分鐘讓 VPC 更新傳播,然後返回 Elastic Beanstalk 主控台,然後選取重新整理以繼續下一個步驟。

      如果您在其餘步驟中遇到 VPC 或子網路組態錯誤,請等待幾分鐘,讓 VPC 組態有時間傳播,然後再試一次這些步驟。

  6. 網路和資料庫頁面中,從具有相關聯 IPv6 CIDR 區塊的 VPC 下拉式清單中選取值。

    選取 VPC 之後,執行個體子網路會填入 VPC 子網路。

  7. 選取一或多個執行個體子網路

  8. 若要儲存變更,請選擇頁面底部的儲存變更

  9. Instance traffic and scaling (執行個體流量和擴展) 組態類別中,選擇 Edit (編輯)。

  10. 負載平衡器網路設定中,選取啟用雙堆疊 (IPv4 和 IPv6)。

  11. 若要儲存變更,請選擇頁面底部的儲存變更

使用 AWS CLI

您可以使用 AWS 命令列界面 (AWS CLI) 來設定您環境的負載平衡器,以同時提供 IPv6 和 IPv4 網路流量。本節提供具有 aws:elbv2:loadbalancer 命名空間的 create-environmentupdate-environment 命令範例。

注意

此組態取決於多個點的資料傳播時間。當您設定負載平衡器並測試變更時,請考慮下列時間要求。

VPC 組態時間。完成 中所述的 VPC 組態後Amazon VPC 先決條件,請等待幾分鐘讓變更傳播,然後再執行這些命令來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤,請等待幾分鐘,然後重試命令。

DNS 傳播時間。IpAddressType選項設定為 dualstack 之後,請等待幾分鐘讓變更傳播,再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間,如果您使用 IPv6 通訊協定啟動請求,則測試從用戶端到應用程式的通訊時可能會遇到問題。

範例 具有雙堆疊組態的 create-environment (命名空間選項內嵌)
aws elasticbeanstalk create-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \ --option-settings \ Namespace=aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role \ Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack

或者,您也可以使用 options.json 檔案來指定命名空間選項,而非透過內嵌方式一併包含於其中。下列範例命令示範 update-environment 命令。

範例 具有雙堆疊組態的 update-environment (options.json檔案中的命名空間選項)
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \ --option-settings \ file://options.json
### example options.json ### [ { "Namespace": "aws:elbv2:loadbalancer", "OptionName": "IpAddressType", "Value": "dualstack" } ]

下列範例會更新現有環境,將 IpAddressType選項設定為 IPv4

注意

如果您需要將環境組態從雙堆疊復原至 IPv4,此範例update-environment命令會很有用。

範例 將 IpAddressType 設定為 IPv4 的 update-environment
aws elasticbeanstalk update-environment \ --region us-east-1 \ --application-name my-app \ --environment-name my-env \ --solution-stack-name "64bit Amazon Linux 2 v3.4.0 running Python 3.8" \ --option-settings \ Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4

使用 .ebextensions 組態檔案

您可以使用 Elastic Beanstalk 組態檔案,讓環境的負載平衡器同時提供 IPv6 和 IPv4 網路流量。將aws:elbv2:loadbalancer命名空間中的 IpAddressType選項設定為 dualstack

注意

此組態取決於多個點的資料傳播時間。當您設定負載平衡器並測試變更時,請考慮下列時間要求。

VPC 組態時間。完成中所述的 VPC 組態後Amazon VPC 先決條件,請等待幾分鐘讓 VPC 變更傳播,再套用.ebextensions組態。如果您在此組態設定期間遇到 VPC 或子網路組態錯誤,請等待幾分鐘,然後再試一次。

DNS 傳播時間。IpAddressType選項設定為 dualstack 之後,請等待幾分鐘讓變更傳播,再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間,如果您使用 IPv6 通訊協定啟動請求,則測試從用戶端到應用程式的通訊時可能會遇到問題。

範例 負載平衡器雙堆疊組態的 .ebextensions/options.config (速記語法)
option_settings: aws:elbv2:loadbalancer: IpAddressType: dualstack
範例 負載平衡器雙堆疊組態的 .ebextensions/options.config (標準語法)
option_settings: - namespace: aws:elbv2:loadbalancer option_name: IpAddressType value: dualstack

使用 AWS SDK

您可以使用 SDK 設定雙堆疊AWS SDKs。與上一節提到的 update-environmentcreate-environment AWS CLI 命令類似,您可以使用 CreateEnvironmentUpdateEnvironment API 動作。使用 OptionSettings請求參數來指定aws:elbv2:loadbalancer命名空間的選項。

注意

此組態取決於多個點的資料傳播時間。當您設定負載平衡器並測試變更時,請考慮下列時間要求。

VPC 組態時間。完成 中所述的 VPC 組態後Amazon VPC 先決條件,請等待幾分鐘讓變更傳播,再執行程式來設定雙堆疊的負載平衡器。如果您在雙堆疊設定期間遇到 VPC 或子網路組態錯誤,請等待幾分鐘,然後再次嘗試執行雙堆疊組態的程式。

DNS 傳播時間。IpAddressType選項設定為 dualstack 之後,請等待幾分鐘讓變更傳播,再進行測試。Route 53 DNS 傳播可能需要 1-2 分鐘才能完成。在此期間,如果您使用 IPv6 通訊協定啟動請求,則測試從用戶端到應用程式的通訊時可能會遇到問題。

疑難排解

試用 Amazon Q Developer CLI 進行 AI 輔助故障診斷

Amazon Q Developer CLI 可協助您快速疑難排解環境問題。Q CLI 透過檢查環境狀態、檢閱事件、分析日誌和詢問釐清問題來提供解決方案。如需詳細資訊和詳細的逐步解說,請參閱 AWS 部落格中的使用 Amazon Q Developer CLI 疑難排解 Elastic Beanstalk 環境

本節提供針對負載平衡器雙堆疊組態問題進行疑難排解的指引。

事件:VPC vpc_id 未設定 IPv6 CIDR 區塊。dualstack 負載平衡器需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前,請將 IPv6 CIDR 區塊與您的 VPC 建立關聯。

您的 VPC 和所有子網路必須具有與其相關聯的 IPv6 CIDR 區塊。這是設定負載平衡器進行雙堆疊支援之前,您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊,請參閱本主題稍Amazon VPC 先決條件早的 。

事件:一或多個 VPC vpc_id 子網路未設定 IPv6 CIDR 區塊。與雙堆疊負載平衡器搭配使用的子網路需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前,請將 IPv6 CIDR 區塊與所有必要子網路建立關聯。

VPC 的所有子網路都必須具有與其相關聯的 IPv6 CIDR 區塊。這是設定負載平衡器進行雙堆疊支援之前,您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊,請參閱本主題稍Amazon VPC 先決條件早的 。

錯誤: IpAddressType選項僅適用於使用 Application Load Balancer 或 Network Load Balancer 設定的 Elastic Beanstalk 環境。

此訊息表示您的 Elastic Beanstalk 環境可能是單一執行個體環境,也可能是使用 Classic Load Balancer。只有使用 Application Load Balancer 或 Network Load Balancer 設定的環境才能設定 IpAddressType