如何在 AWS 中为 Elastic Beanstalk 设置应用程序负载均衡器

Posted

技术标签:

【中文标题】如何在 AWS 中为 Elastic Beanstalk 设置应用程序负载均衡器【英文标题】:How to setup Application Load Balancer for Elastic Beanstalk in AWS 【发布时间】:2018-01-30 03:24:38 【问题描述】:

我正在尝试使用 Application Load Balancer 创建一个新的 ElasticBeanstalk 应用程序。我正在调用以下命令:

$ mkdir HelloWorld
$ cd HelloWorld
$ eb init
$ echo "Hello World" > index.html
$ eb create dev-env --elb-type application

最后一条命令的输出导致此错误:

正在创建应用程序版本存档“app-170821_175709”。

将 HelloWorld/app-170821_175709.zip 上传到 S3。这可能需要一段时间。

上传完成。

错误:配置验证异常:无效选项值:“null”(命名空间:“aws:ec2:vpc”,选项名称:“ELBSubnets”):为负载均衡器类型应用程序指定 VPC 的子网。

知道我的 VPC 有什么问题吗?我正在使用该区域的默认 VPC。

更新: 我取得了进一步的进展,但仍然无法正确设置 ALB。我在eb create 命令中添加了一些参数:

eb create staging-env --elb-type application --vpc.id vpc-1234604b --vpc.publicip --vpc.ec2subnets subnet-12340aa2 --vpc.elbsubnets subnet-12340aa3,subnet-12341966 --vpc.securitygroup sg-1234ac01 --vpc.elbpublic

但我仍然收到以下错误:

错误:名为“awseb-e-ifnuqgmbah-stack”的堆栈已中止操作。当前状态:“CREATE_FAILED”原因:未能创建以下资源:[AWSEBV2LoadBalancer]。

错误:创建名为:arn:aws:elasticloadbalancing:us-west-2:123456785170:loadbalancer/app/awseb-AWSEB-Y1OVPGRIAZMD/cc5ce6193af39c0b 的负载均衡器失败原因:S3Bucket:staging-bucket 不在同一区域使用 ELB:app/awseb-AWSEB-Y1OVPGRIAZMD/cc5ce6193af39c0b ```

【问题讨论】:

Whelp,这对于应该只是一个复选框的东西来说太复杂了! 【参考方案1】:

我可以通过使用正确的 vpc 和子网设置运行上面的 eb create 命令来完成这项工作。

【讨论】:

为我工作。 ELB + ALB 目前是一个无证的混乱,所以谢谢你。我认为这还不是控制台选项,因为并非所有 ELB 参数都连接到它们的对应参数。例如,需要在 Target Group 上明确设置健康检查 URL。【参考方案2】:

我能够与eb create dev-env --elb-type classic 合作。

Classic Load Balancer 是 Elastic Load Balancing 上一代负载均衡器。它支持将 HTTP、HTTPS 或 TCP 请求流量路由到环境实例上的不同端口。

【讨论】:

以上是关于如何在 AWS 中为 Elastic Beanstalk 设置应用程序负载均衡器的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 中为 AWS Elastic Beanstalk 构建期间访问 .env 变量

如何在 CloudFormation 模板中为 Elastic Beanstalk 启动配置指定安全组?

直接从 Bitbucket 部署到 AWS Elastic Beanstalk

在 ACM 中为 Elastic Beanstalk 后端请求证书

AWS Elastic Beanstalk 中的 HTTPS 配置

AWS Elastic Beanstalk 负载均衡器在哪里寻找认证?