本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置双栈 Elastic Beanstalk 负载均衡器
您可以使您的 Elastic Beanstalk 环境能够同时为配置了双堆栈的负载 IPv6 均 IPv4 衡器的协议提供服务。创建负载平衡环境时,基础架构默认为 IPv4。您可以选择使用双堆栈配置创建新环境,也可以选择将现有的 IPv4仅限环境更新为双堆栈环境。
要使环境的负载均衡器能够同时为 IPv4 网络流量提供服务 IPv6 ,请将aws:elbv2:loadbalancer命名空间中的IpAddressType选项设置为 du alstack。
注意
Elastic Beanstalk 仅支持应用程序负载均衡器和网络负载均衡器的双栈协议。对于使用经典负载均衡器或单实例环境的环境,它不支持双堆栈。
亚马逊 VPC 先决条件
在 Elastic Beanstalk 环境中配置负载均衡器之前,必须先使用 Amazon VPC 完成一些配置步骤:
-
将 IPv6 CIDR 块与您环境的 VPC 关联。
-
将 IPv6 CIDR 块与 VPC 的所有子网关联。
-
(可选)如果您的环境与 VPC 之外的组件交换网络流量,则它会有路由表来指定您的 VPC 可以与哪些网络通信。在这种情况下,您必须更新 VPC 路由表以启用 IPv6 流量。
您可以使用 Amazon VPC 控制台或 AWS CLI 命令完成这些必备配置。以下主题将指导您并引导您参阅 Amazon VPC 用户指南和AWS CLI 命令参考以了解更多详细信息。
注意
完成 VPC 配置后,请等待几分钟让更改传播,然后再为负载均衡器配置双堆栈。如果您在双堆栈设置过程中遇到 VPC 或子网配置错误,请等待几分钟,让 VPC 配置传播,然后再次尝试双堆栈配置。
使用控制台完成 VPC 先决条件
A mazon VPC 用户指南提供了完成这些先决任务的详细步骤。
-
请参阅 Amazon VPC 用户指南中的步骤 1:将 IPv6 CIDR 块与您的 VPC 和子网关联。
此步骤提供您必须完成的两个过程:
-
将 IPv6 CIDR 块与您的 VPC 关联。
-
将 IPv6 CIDR 块与您的 VPC 子网关联。
-
-
(可选)如果您的环境与 VPC 之外的组件交换网络流量,则它会有路由表来指定您的 VPC 可以与哪些网络通信。在这种情况下,您必须更新 VPC 路由表以启用 IPv6 流量。要完成此配置,请参阅 Amazon VPC 用户指南中的步骤 2:更新您的路由表。
使用完成 VPC 先决条件 AWS CLI
您可以使用 AWS CLI 来完成和验证必备配置。
-
将 IPv6 CIDR 块与您环境的 VPC 关联。
-
使用associate-vpc-cidr-block命令将 CIDR 块与您的 VPC 关联。
-
使用 desc ribe-vpcs 命令验证您的 VPC 配置。
例 命令
# Associate an Amazon-provided IPv6 CIDR block with your VPC aws ec2 associate-vpc-cidr-block \ --vpc-idvpc-12345678\ --regionus-east-1\ --amazon-provided-ipv6-cidr-block # Verify the IPv6 CIDR block association aws ec2 describe-vpcs \ --vpc-idsvpc-12345678\ --regionus-east-1\ --query'Vpcs[0].Ipv6CidrBlockAssociationSet' -
-
将 IPv6 CIDR 块与 VPC 的所有子网关联。
-
使用associate-subnet-cidr-block命令将 CIDR 块与您的子网关联。
-
使用 desc ribe-subnets 命令验证您的子网配置。
例 命令
# List all subnets in your VPC aws ec2 describe-subnets \ --regionus-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-idsubnet-12345678\ --regionus-east-1\ --ipv6-cidr-block2001:db8::/64# Verify IPv6 CIDR block association for all subnets aws ec2 describe-subnets \ --regionus-east-1\ --filters"Name=vpc-id,Values=vpc-12345678"\ --query'Subnets[].{SubnetId:SubnetId,Ipv6CidrBlock:Ipv6CidrBlockAssociationSet[0].Ipv6CidrBlock}' -
-
(可选)如果您的环境与 VPC 之外的组件交换网络流量,则它会有路由表来指定您的 VPC 可以与哪些网络通信。在这种情况下,您必须更新 VPC 路由表以启用 IPv6 流量。
-
使用 create-ro ute 命令在 VPC 内的路由表中添加路由。
-
使用describe-route-tables命令验证您的路由表。
例 命令
# Add IPv6 route to Internet Gateway for public subnets aws ec2 create-route \ --route-table-idrtb-12345678\ --destination-ipv6-cidr-block::/0\ --gateway-idigw-12345678\ --regionus-east-1# Add IPv6 route to NAT Gateway for private subnets (if applicable) aws ec2 create-route \ --route-table-idrtb-87654321\ --destination-ipv6-cidr-block::/0\ --nat-gateway-idnat-12345678\ --regionus-east-1# Verify routes aws ec2 describe-route-tables \ --route-table-idsrtb-12345678\ --regionus-east-1\ --query'RouteTables[0].Routes' -
为您的 Elastic Beanstalk 负载均衡器配置双堆栈
为您的环境设置 VPC 先决条件配置后,您可以使用双堆栈选项配置负载均衡器,使其可以同时为 IPv4 和 IPv6协议提供服务。您可以使用 Elastic Beanstalk 控制台 AWS CLI、中的配置.ebextensions文件 AWS 和软件开发工具包来配置负载均衡器以提供双堆栈流量。
使用控制台
您可以使用 Elastic Beanstalk 控制台为环境的负载均衡器配置双堆栈。
注意
此配置取决于数据在多个点传播的时机。配置负载均衡器并测试更改时,请考虑以下时间要求。
VPC 配置时间。完成中所述的 VPC 配置后亚马逊 VPC 先决条件,请等待几分钟让更改传播,然后再执行以下步骤。如果您在双堆栈设置过程中遇到 VPC 或子网配置错误,请等待几分钟,然后重试配置步骤。
DNS 传播时间。将IpAddressType选项设置为 dualstack 后,请等待几分钟让更改传播后再进行测试。路由 53 的 DNS 传播可能需要 1-2 分钟才能完成。在此期间,如果您使用 IPv6 协议发起请求,则在测试从客户端到应用程序的通信时可能会遇到问题。
创建新环境:配置您的负载均衡器以支持双堆栈
-
启动 Elastic Beanstalk 控制台,开始创建新环境的步骤。在配置服务访问权限页面中设置必填字段服务角色和EC2 实例配置文件后,继续执行此过程中的步骤,将您的负载均衡器设置为双堆栈配置。有关入门的更多信息,请参阅创建 Elastic Beanstalk 环境。
-
在配置服务访问权限中,选择下一步。
-
将显示 “设置网络、数据库和标签” 页面。
如果您完成了上一节亚马逊 VPC 先决条件中所述的操作,那么您已经设置了所需的 VPC 和子网。在这种情况下,请跳过此步骤及其子步骤,继续选择 VPC。
-
要配置 VPC 和子网,您可以选择创建 VPC 以导航到 VPC 控制台。按照使用控制台完成 VPC 先决条件中的步骤操作。
-
等待几分钟让 VPC 更新传播,然后返回 Elastic Beanstalk 控制台并选择刷新以继续下一步。
如果您在剩下的步骤中遇到 VPC 或子网配置错误,请等待几分钟,让 VPC 配置有时间传播,然后重试这些步骤。
-
-
在设置网络、数据库和标签页面上,从 VPC 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。
选择 VPC 后,实例子网将填充 VPC 子网。
-
选择一个或多个实例子网,然后选择下一步。
-
将显示 “配置实例流量和扩展” 页面。
在负载均衡器网络设置中,为 Dualstack (IPv4 & IPv6) 选择启用。
-
选择负载均衡器类型。应用程序负载均衡器或网络负载均衡器都支持双堆栈。
-
您可以继续在当前控制台页面上配置其他负载均衡器选项。有关负载均衡器选项和配置的更多信息,请参阅本章中的其他主题。
-
继续执行这些步骤以完成环境的配置和创建。有关更多信息,请参阅 创建 Elastic Beanstalk 环境。
现有环境:配置您的负载均衡器以支持双堆栈
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 AWS 区域 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
在导航窗格中,选择 Configuration(配置)。
-
在网络和数据库配置类别中,选择编辑。
-
如果您完成了上一节亚马逊 VPC 先决条件中所述的操作,那么您已经设置了所需的 VPC 和子网。在这种情况下,请跳过此步骤及其子步骤,继续选择 VPC。
-
要配置 VPC 和子网,您可以选择创建 VPC 以导航到 VPC 控制台。按照使用控制台完成 VPC 先决条件中的步骤操作。
-
等待几分钟让 VPC 更新传播,然后返回 Elastic Beanstalk 控制台并选择刷新以继续下一步。
如果您在剩下的步骤中遇到 VPC 或子网配置错误,请等待几分钟,让 VPC 配置有时间传播,然后重试这些步骤。
-
-
在网络和数据库页面中,从 VPC 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。
选择 VPC 后,实例子网将填充 VPC 子网。
-
选择一个或多个实例子网。
-
要保存更改,请选择页面底部的 Apply(应用)。
-
在 Instance traffic and scaling(实例流量和扩展)配置类别中,选择 Edit(编辑)。
-
在负载均衡器网络设置中,选择为双栈启用 (IPv4 & IPv6)。
-
要保存更改,请选择页面底部的 Apply(应用)。
使用 AWS CLI
您可以使用 AWS 命令行界面 (AWS CLI) 来配置环境的负载均衡器,以同时 IPv6 为 IPv4 网络流量提供服务。本节提供了带有命名空间的创建环境和更新环境命令的示例。aws:elbv2:loadbalancer
注意
此配置取决于数据在多个点传播的时机。配置负载均衡器并测试更改时,请考虑以下时间要求。
VPC 配置时间。完成中所述的 VPC 配置后亚马逊 VPC 先决条件,请等待几分钟让更改传播,然后再运行这些命令将您的负载均衡器配置为双堆栈。如果您在双堆栈设置过程中遇到 VPC 或子网配置错误,请等待几分钟,然后重试这些命令。
DNS 传播时间。将IpAddressType选项设置为 dualstack 后,请等待几分钟让更改传播后再进行测试。路由 53 的 DNS 传播可能需要 1-2 分钟才能完成。在此期间,如果您使用 IPv6 协议发起请求,则在测试从客户端到应用程序的通信时可能会遇到问题。
例 使用双栈配置的 create-environment(内联命名空间选项)
aws elasticbeanstalk create-environment \ --region\ --application-nameus-east-1\ --environment-namemy-app\ --solution-stack-namemy-env\ --option-settings \ Namespace="64bit Amazon Linux 2 v3.4.0 running Python 3.8"aws:autoscaling:launchconfiguration,OptionName=IamInstanceProfile,Value=aws-elasticbeanstalk-ec2-role\ Namespace=aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=dualstack
作为替代方法,请使用 options.json 文件来指定命名空间选项,而不是将其内联。以下示例命令演示了 update- environment 命令。
例 使用双栈配置的更新环境(文件中的命名空间选项)options.json
aws elasticbeanstalk update-environment \ --region\ --application-nameus-east-1\ --environment-namemy-app\ --solution-stack-namemy-env\ --option-settings \"64bit Amazon Linux 2 v3.4.0 running Python 3.8"file://options.json
### example options.json ### [ { "Namespace":"aws:elbv2:loadbalancer", "OptionName":"IpAddressType", "Value": "" } ]dualstack
以下示例更新现有环境以将IpAddressType选项设置为IPv4。
注意
如果您需要将环境配置从双堆栈回滚到,则此示例update-environment命令很有用。 IPv4
例 要设置为的更新环境 IpAddressType IPv4
aws elasticbeanstalk update-environment \ --region\ --application-nameus-east-1\ --environment-namemy-app\ --solution-stack-namemy-env\ --option-settings \ Namespace="64bit Amazon Linux 2 v3.4.0 running Python 3.8"aws:elbv2:loadbalancer,OptionName=IpAddressType,Value=ipv4
使用.ebextensions 配置文件
您可以使用 Elastic B eanstalk 配置文件使环境的负载均衡器能够同时为网络流量提供服务。 IPv6 IPv4 将aws:elbv2:loadbalancer命名空间中的IpAddressType选项设置为 dual stack。
注意
此配置取决于数据在多个点传播的时机。配置负载均衡器并测试更改时,请考虑以下时间要求。
VPC 配置时间。完成中所述的 VPC 配置后亚马逊 VPC 先决条件,请等待几分钟让 VPC 更改传播,然后再应用.ebextensions配置。如果在此配置设置过程中遇到 VPC 或子网配置错误,请等待几分钟,然后重试。
DNS 传播时间。将IpAddressType选项设置为 dualstack 后,请等待几分钟让更改传播后再进行测试。路由 53 的 DNS 传播可能需要 1-2 分钟才能完成。在此期间,如果您使用 IPv6 协议发起请求,则在测试从客户端到应用程序的通信时可能会遇到问题。
例 .ebextensions/options.config 用于负载均衡器双堆栈配置(速记语法)
option_settings:aws:elbv2:loadbalancer:IpAddressType:dualstack
例 .ebextensions/options.config 用于负载均衡器双堆栈配置(标准语法)
option_settings: - namespace:aws:elbv2:loadbalanceroption_name:IpAddressTypevalue:dualstack
使用 AWS SDK
您可以使用配置双堆栈。AWS SDKs与上一节中提到的update-environment和create-environment AWS CLI 命令类似,您可以使用CreateEnvironment和 UpdateEnvironmentAPI 操作。使用 re OptionSettings quest 参数指定aws:elbv2:loadbalancer命名空间的选项。
注意
此配置取决于数据在多个点传播的时机。配置负载均衡器并测试更改时,请考虑以下时间要求。
VPC 配置时间。完成中所述的 VPC 配置后亚马逊 VPC 先决条件,请等待几分钟让更改传播,然后再运行程序为双堆栈配置负载均衡器。如果您在双堆栈设置过程中遇到 VPC 或子网配置错误,请等待几分钟,然后再次尝试运行双堆栈配置程序。
DNS 传播时间。将IpAddressType选项设置为 dualstack 后,请等待几分钟让更改传播后再进行测试。路由 53 的 DNS 传播可能需要 1-2 分钟才能完成。在此期间,如果您使用 IPv6 协议发起请求,则在测试从客户端到应用程序的通信时可能会遇到问题。
故障排除
试用 Amazon Q 开发者 CLI 进行人工智能辅助故障排除
Amazon Q 开发者 CLI 可以帮助您快速解决环境问题。Q CLI 通过检查环境状态、查看事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练,请参阅博客中的使用 Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除
本节提供有关对负载均衡器双堆栈配置问题进行故障排除的指导。
事件:VPC vpc_id 未配置 IPv6 CIDR 块。 IPv6双栈负载均衡器需要 CIDR 块。在使用双堆栈模式之前,请将 IPv6 CIDR 块与您的 VPC 关联。
您的 VPC 和所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须完成的 VPC 先决条件之一。有关完成此任务的更多信息,请参阅本主题亚马逊 VPC 先决条件前面的部分。
事件:VPC 的一个或多个子网vpc_id未配置 IPv6 CIDR 块。 IPv6 双栈负载均衡器使用的子网需要 CIDR 块。在使用双堆栈模式之前,请将 IPv6 CIDR 块与所有必需的子网关联。
您的 VPC 的所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须完成的 VPC 先决条件之一。有关完成此任务的更多信息,请参阅本主题亚马逊 VPC 先决条件前面的部分。
错误:该IpAddressType选项只能应用于配置了应用程序负载均衡器或网络负载均衡器的 Elastic Beanstalk 环境。
此消息表明您的 Elastic Beanstalk 环境可能是单实例环境,或者它可能正在使用 Classic Load Balancer。只有配置了 Application Load Balancer 或 Network Load Balancer 的环境才能进行配置IpAddressType。