Elastic Load Balancing
应用程序负载均衡器
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

教程:使用 AWS CLI 创建应用程序负载均衡器

本教程介绍了使用 AWS CLI 创建应用程序负载均衡器的实际操作。

在您开始之前

  • 使用以下命令可验证您是否在运行支持应用程序负载均衡器的 AWS CLI 版本。

    aws elbv2 help

    如果您获取的错误消息指示 elbv2 不是有效选择,请更新您的 AWS CLI。有关更多信息,请参阅 AWS Command Line Interface 用户指南 中的安装 AWS 命令行界面

  • 启动 Virtual Private Cloud (VPC) 中您的 EC2 实例。确保这些实例的安全组允许访问侦听器端口和运行状况检查端口。有关更多信息,请参阅 目标安全组

创建负载均衡器

要创建第一个负载均衡器,请完成以下步骤。

创建负载均衡器

  1. 使用 create-load-balancer 命令创建负载均衡器。您必须指定来自不同可用区的两个子网。

    aws elbv2 create-load-balancer --name my-load-balancer \ --subnets subnet-12345678 subnet-23456789 --security-groups sg-12345678

    输出包含负载均衡器的 Amazon 资源名称 (ARN),格式如下:

    arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/1234567890123456
  2. 使用 create-target-group 命令创建目标组,并指定用于 EC2 实例的相同 VPC:

    aws elbv2 create-target-group --name my-targets --protocol HTTP --port 80 \ --vpc-id vpc-12345678

    输出包含目标组的 ARN,格式如下:

    arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/1234567890123456
  3. 使用 register-targets 命令将您的实例注册到目标组:

    aws elbv2 register-targets --target-group-arn targetgroup-arn \ --targets Id=i-12345678 Id=i-23456789
  4. 使用 create-listener 命令为您的负载均衡器创建侦听器,该侦听器带有将请求转发到目标组的默认规则:

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn \ --protocol HTTP --port 80 \ --default-actions Type=forward,TargetGroupArn=targetgroup-arn

    输出包含侦听器的 ARN,格式如下:

    arn:aws-cn:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/1234567890123456/1234567890123456
  5. (可选) 您可以使用此 describe-target-health 命令验证目标组的已注册目标的运行状况:

    aws elbv2 describe-target-health --target-group-arn targetgroup-arn

添加 HTTPS 侦听器

如果您拥有带 HTTP 侦听器的负载均衡器,则可按如下方式添加 HTTPS 侦听器。

向您的负载均衡器添加 HTTPS 侦听器

  1. 使用下列方法之一创建要用于负载均衡器的 SSL 证书:

    • 使用 AWS Certificate Manager (ACM) 创建或导入证书。有关更多信息,请参阅AWS Certificate Manager 用户指南中的请求证书导入证书

    • 使用 AWS Identity and Access Management (IAM) 上传证书。有关更多信息,请参阅 IAM 用户指南 中的使用服务器证书

  2. 使用 create-listener 命令创建侦听器,该侦听器带有将请求转发到目标组的默认规则。在创建 HTTPS 侦听器时,您必须指定 SSL 证书。请注意,您可以使用 --ssl-policy 选项指定默认值之外的 SSL 策略。

    aws elbv2 create-listener --load-balancer-arn loadbalancer-arn \ --protocol HTTPS --port 443 \ --certificates CertificateArn=certificate-arn \ --default-actions Type=forward,TargetGroupArn=targetgroup-arn

使用端口覆盖添加目标

如果您在一个实例中有多个 ECS 容器,则每个容器均通过不同的端口接受连接。您可以将实例注册到目标组多次,每次使用不同的端口进行注册。

使用端口覆盖添加目标

  1. 使用 create-target-group 命令创建目标组:

    aws elbv2 create-target-group --name my-targets --protocol HTTP --port 80 \ --vpc-id vpc-12345678
  2. 使用 register-targets 命令将您的实例注册到目标组。请注意,每个容器的实例 ID 相同,但端口不同。

    aws elbv2 register-targets --target-group-arn targetgroup-arn \ --targets Id=i-12345678,Port=80 Id=i-12345678,Port=766
  3. 使用 create-rule 命令向侦听器添加可将请求转发到目标组的规则:

    aws elbv2 create-rule --listener-arn listener-arn --priority 10 \ --actions Type=forward,TargetGroupArn=targetgroup-arn

添加基于路径的路由

如果您的侦听器具有可将请求转发到一个目标组的默认规则,则可添加一个将请求转发到另一个基于 URL 的目标组的规则。例如,您可以将一般请求路由到一个目标组,并将图像显示请求路由到另一个目标组。

将规则添加到带路径模式的侦听器

  1. 使用 create-target-group 命令创建目标组:

    aws elbv2 create-target-group --name my-targets --protocol HTTP --port 80 \ --vpc-id vpc-12345678
  2. 使用 register-targets 命令将您的实例注册到目标组:

    aws elbv2 register-targets --target-group-arn targetgroup-arn \ --targets Id=i-12345678 Id=i-23456789
  3. 使用 create-rule 命令向侦听器添加一个可在 URL 包含指定模式时将请求转发到目标组的规则:

    aws elbv2 create-rule --listener-arn listener-arn --priority 10 \ --conditions Field=path-pattern,Values='/img/*' \ --actions Type=forward,TargetGroupArn=targetgroup-arn

删除负载均衡器

当您不再需要负载均衡器和目标组时,可以将其删除,如下所示:

aws elbv2 delete-load-balancer --load-balancer-arn loadbalancer-arn aws elbv2 delete-target-group --target-group-arn targetgroup-arn