

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置双堆栈 Elastic Beanstalk 负载均衡器
<a name="environments-cfg-elbv2-ipv6-dualstack"></a>

您可以使您的 Elastic Beanstalk 环境能够同时为配置了双堆栈的负载 IPv6 均 IPv4 衡器的协议提供服务。创建负载平衡环境时，基础架构默认为 IPv4。您可以选择使用双堆栈配置创建新环境，也可以选择将现有的 IPv4仅限环境更新为双堆栈环境。

要使环境的负载均衡器能够同时为 IPv4 网络流量提供服务 IPv6 ，请将[aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2)命名空间中的`IpAddressType`选项设置为 *du* alstack。

**注意**  
Elastic Beanstalk 仅支持应用程序负载均衡器和网络负载均衡器的双堆栈协议。对于使用经典负载均衡器的环境或单实例环境，它不支持双堆栈。

## Amazon VPC 先决条件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs"></a>

在 Elastic Beanstalk 环境中配置负载均衡器之前，必须先使用 Amazon VPC 完成一些配置步骤：

1. 将 IPv6 CIDR 块与您环境的 VPC 关联。

1. 将 IPv6 CIDR 块与 VPC 的所有子网关联。

1. （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。

您可以使用 Amazon VPC 控制台或 AWS CLI 命令完成这些先决条件配置。以下主题将指导您并引导您参阅《Amazon VPC 用户指南》**和AWS CLI 命令参考**以了解更多详细信息。

**注意**  
完成 VPC 配置后，请等待几分钟让更改传播，然后再为负载均衡器配置双堆栈。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后再次尝试配置双堆栈。

### 使用控制台完成 VPC 先决条件
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.console"></a>

《Amazon VPC 用户指南》**中提供了完成这些先决任务的详细步骤。

1. 请参阅 Amazon VPC *用户指南中的步骤 1：将 IPv6 CIDR 块与您的 VPC* [和子网关联](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-cidr)。

   此步骤包含两个您必须完成的程序：
   + 将 IPv6 CIDR 块与您的 VPC 关联。
   + 将 IPv6 CIDR 块与您的 VPC 子网关联。

1. （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。要完成此配置，请参阅《Amazon VPC 用户指南》**中的[步骤 2：更新路由表](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html#vpc-migrate-ipv6-routes)。

### 使用完成 VPC 先决条件 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.prereqs.cli"></a>

您可以使用 AWS CLI 来完成和验证必备配置。

1. 将 IPv6 CIDR 块与您环境的 VPC 关联。

   1. 使用[associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html)命令将 CIDR 块与您的 VPC 关联。

   1. 使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令验证您的 VPC 配置。

   

     
**Example 命令**  

   ```
   # 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'
   ```

1. 将 IPv6 CIDR 块与 VPC 的所有子网关联。

   1. 使用[associate-subnet-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-subnet-cidr-block.html)命令将 CIDR 块与您的子网关联。

   1. 使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令验证您的子网配置。

   

     
**Example 命令**  

   ```
   # 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}'
   ```

1.  （可选）如果您的环境与 VPC 以外的组件交换网络流量，则其具有指定 VPC 可以与之通信的网络的路由表。在这种情况下，您必须更新 VPC 路由表以启用 IPv6 流量。

   1. 使用 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令在 VPC 内的路由表中添加路由。

   1. 使用[describe-route-tables](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-route-tables.html)命令验证您的路由表。

   

     
**Example 命令**  

   ```
   # 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 负载均衡器配置双堆栈
<a name="environments-cfg-elbv2-ipv6-dualstack.enable"></a>

为您的环境设置 VPC 先决条件配置后，您可以使用双堆栈选项配置负载均衡器，使其可以同时为 IPv4 和 IPv6协议提供服务。您可以使用 Elastic Beanstalk 控制台 AWS CLI、中的配置`.ebextensions`文件 AWS 和软件开发工具包来配置负载均衡器以提供双堆栈流量。

### 使用控制台
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.console"></a>

您可以使用 Elastic Beanstalk 控制台为环境的负载均衡器配置双堆栈。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再执行以下步骤。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试配置步骤。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

**创建新环境：配置负载均衡器以支持双堆栈**

1. 启动 Elastic Beanstalk 控制台，并开始执行创建新环境的步骤。在**配置服务访问权限**页面中设置**服务角色**和 **EC2 实例配置文件**必填字段后，继续执行此过程中的步骤，为负载均衡器设置双堆栈配置。有关开始操作的更多信息，请参阅[创建 Elastic Beanstalk 环境](using-features.environments.md)。

1. 在**配置服务访问权限**中，选择**下一步**。

1. **设置联网、数据库和标签**页面随即显示。

   如果您完成了上一节中所述的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，那么您已经设置了所需的 VPC 和子网。在这种情况下，请跳过此步骤及其子步骤，继续选择 VPC。

   1. 若要配置 VPC 和子网，您可以选择**创建 VPC** 以转到 VPC 控制台。按照 [使用控制台完成 VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步骤操作。

   1.  等待几分钟让 VPC 更新传播，然后返回到 Elastic Beanstalk 控制台并选择刷新以继续下一步。

       如果在后续步骤中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后重试步骤。

1. 在**设置网络、数据库和标签页面上，**从 **VPC** 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。

   选择 VPC 后，**实例子网**将会填充 VPC 子网。

1. 选择一个或多个**实例子网**，然后选择**下一步**。

1. **配置实例流量和扩缩**页面随即显示。

   在**负载均衡器网络设置**中，为 **Dualstack (IPv4 & IPv6)** 选择**启用**。

1. 选择**负载均衡器类型**。**应用程序负载均衡器**和**网络负载均衡器**均支持*双堆栈*。

1. 您可以继续在当前控制台页面上配置其他负载均衡器选项。有关负载均衡器选项和配置的更多信息，请参阅本章中的其他主题。

1. 继续执行后续步骤，完成环境的配置和创建。有关更多信息，请参阅 [创建 Elastic Beanstalk 环境](using-features.environments.md)。



**现有环境：配置负载均衡器以支持双堆栈**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在**网络和数据库**配置类别中，选择**编辑**。

1. 如果您完成了上一节中所述的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)，那么您已经设置了所需的 VPC 和子网。在这种情况下，请跳过此步骤及其子步骤，继续选择 VPC。

   1. 若要配置 VPC 和子网，您可以选择**创建 VPC** 以转到 VPC 控制台。按照 [使用控制台完成 VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs.console) 中的步骤操作。

   1.  等待几分钟让 VPC 更新传播，然后返回到 Elastic Beanstalk 控制台并选择刷新以继续下一步。

       如果在后续步骤中遇到 VPC 或子网配置错误，请等待几分钟让 VPC 配置传播，然后重试步骤。

1. 在**网络和数据库**页面中，从 **VPC** 下拉列表中选择一个具有关联 IPv6 CIDR 块的值。

   选择 VPC 后，**实例子网**将会填充 VPC 子网。

1. 选择一个或多个**实例子网**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

1. 在 **Instance traffic and scaling**（实例流量和扩展）配置类别中，选择 **Edit**（编辑）。

1. 在**负载均衡器网络设置**中，选择为**双栈**启用** (IPv4 & IPv6)**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

### 使用 AWS CLI
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.cli"></a>

您可以使用 AWS 命令行界面 (AWS CLI) 来配置环境的负载均衡器，以同时 IPv6 为 IPv4 网络流量提供服务。本节提供包含 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间 [create-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/create-environment.html) 和 [update-environment](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令的示例。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再运行这些命令将您的负载均衡器配置为双堆栈。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试命令。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

 

**Example ：具有双堆栈配置的 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](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/update-environment.html) 命令。

**Example ：具有双堆栈配置的 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**  

```
### example options.json ###
[
  {
    "Namespace": "aws:elbv2:loadbalancer",
    "OptionName": "IpAddressType",
    "Value": "dualstack"
  }
]
```



以下示例更新现有环境以将`IpAddressType`选项设置为*IPv4*。

**注意**  
如果您需要将环境配置从双堆栈回滚到，则此示例`update-environment`命令很有用。 IPv4

**Example 要设置的更新环境 IpAddressType IPv4**  

```
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 配置文件
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.ebx"></a>

您可以使用 Elastic B [eanstalk](ebextensions.md) 配置文件使环境的负载均衡器能够同时为网络流量提供服务。 IPv6 IPv4 请将 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间中的 `IpAddressType` 选项设置为*双堆栈*。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让 VPC 更改传播，然后再应用 `.ebextensions` 配置。如果在此配置的设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后重试。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

**Example ：用于负载均衡器双堆栈配置的 .ebextensions/options.config（[速记语法](ebextensions-optionsettings.md#ebextensions-optionsettings.title)）**  

```
option_settings:
  aws:elbv2:loadbalancer:
    IpAddressType: dualstack
```

**Example ：用于负载均衡器双堆栈配置的 .ebextensions/options.config（[标准语法](ebextensions-optionsettings.md#ebextensions-optionsettings.title)）**  

```
option_settings:
  - namespace: aws:elbv2:loadbalancer
    option_name: IpAddressType
    value: dualstack
```

### 使用 AWS 软件开发工具包
<a name="environments-cfg-elbv2-ipv6-dualstack.enable.sdk"></a>

您可以使用配置双堆栈。[AWS SDKs](https://docs.aws.amazon.com//code-library/)与上一节中提到的`update-environment`和`create-environment` AWS CLI 命令类似，您可以使用[CreateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_CreateEnvironment.html)和 [UpdateEnvironment](https://docs.aws.amazon.com//elasticbeanstalk/latest/api/API_UpdateEnvironment.html)API 操作。使用 `OptionSettings` 请求参数来指定 [aws:elbv2:loadbalancer](command-options-general.md#command-options-general-elbv2) 命名空间的选项。

**注意**  
此配置取决于数据在多个点的传播时间。配置负载均衡器并测试更改时，请考虑以下时间要求。  
*VPC 配置时间。*完成 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)中所述的 VPC 配置后，请等待几分钟让更改传播，然后再运行程序为双堆栈配置负载均衡器。如果在双堆栈设置过程中遇到 VPC 或子网配置错误，请等待几分钟，然后再次尝试运行双堆栈配置程序。  
*DNS 传播时间。*将 `IpAddressType` 选项设置为*双堆栈*后，请等待几分钟让更改传播，然后再进行测试。Route 53 DNS 传播可能需要 1 至 2 分钟才能完成。在此期间，如果您使用 IPv6 协议发起请求，则在测试从客户端到应用程序的通信时可能会遇到问题。

## 问题排查
<a name="environments-cfg-elbv2-ipv6-dualstack.troubleshooting"></a>

**尝试使用 Amazon Q 开发者版 CLI 进行人工智能辅助故障排除**  
 Amazon Q 开发者版 CLI 可以帮助您针对环境问题快速进行故障排除。Q CLI 可通过检查环境状态、审核事件、分析日志和询问澄清问题来提供解决方案。有关更多信息和详细演练，请参阅博客中的使用 [Amazon Q Developer CLI 对 Elastic Beanstalk 环境进行故障排除](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。 AWS 

本节提供有关对负载均衡器双堆栈配置问题进行故障排除的指导。

**事件：***VPC *vpc\$1id* 未配置 IPv6 CIDR 块。 IPv6双栈负载均衡器需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与您的 VPC 关联。*

您的 VPC 和所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **事件：***VPC 的一个或多个子网*vpc\$1id*未配置 IPv6 CIDR 块。 IPv6 双栈负载均衡器使用的子网需要 CIDR 块。在使用双堆栈模式之前，请将 IPv6 CIDR 块与所有必需的子网关联。*

您的 VPC 的所有子网都必须有与之关联的 IPv6 CIDR 块。这是在配置负载均衡器以支持双堆栈之前必须达成的 VPC 先决条件之一。有关更多信息，请参阅本主题前面的 [Amazon VPC 先决条件](#environments-cfg-elbv2-ipv6-dualstack.prereqs)。

 **错误：***The `IpAddressType` option can only be applied on Elastic Beanstalk environments configured with an Application Load Balancer or Network Load Balancer.*

此消息表明 Elastic Beanstalk 环境可能是单实例环境，或者该环境可能正在使用经典负载均衡器。只有配置了应用程序负载均衡器或网络负载均衡器的环境才能配置 `IpAddressType`。