【问题标题】:Elastic Beanstalk without Elastic Load Balancer没有弹性负载均衡器的 Elastic Beanstalk
【发布时间】:2011-12-22 06:40:42
【问题描述】:

我想为我的 Elastic Beanstalk 环境关闭 Elastic Load Balancer (ELB)。

目前我不需要它,也不想为此付费。

可以在 EC2 管理窗口中删除 ELB,但随后 Elastic Beanstalk 运行状况从绿色切换到红色。 我刚刚发现了一个information,这是不可能的。

有人知道如何在没有负载平衡的情况下运行 Elastic Beanstalk 并获得环境绿色健康状态吗?

【问题讨论】:

  • 恐怕您无法从 Elastic Beanstalk 中删除负载均衡器,因为它是软件包的一部分。您可以做一些其他可能需要更多配置的事情 ​​- 您可以创建一个使用预定义 AMI(可能类似于 Beanstalk 使用的东西)的 CloudFormation 脚本并自行完成所有部署。
  • 我相信您可以从EC2管理页面中获取与您的负载均衡器关联的Elastic IP,并将其与您的应用服务器实例直接关联。不过,我预计预配置的健康监控仍会失败 - 因此需要进行更多更改才能让一切再次“绿色”。
  • 您不想为整个 EB 应用程序还是只为负载均衡器付费?那里有is a way to sustain your EB without any instances or a load balancer(所以它被暂时免费暂停了),你以后仍然可以相当快地重新打开它。

标签: amazon-web-services amazon-ec2 cloud load-balancing amazon-elastic-beanstalk


【解决方案1】:

自 2013 年 7 月起,Elastic Beanstalk 支持 "single-instance" environments,即在没有负载均衡器的情况下运行单个容器实例。使用“负载均衡环境”设置的现有环境可以切换为“单实例”,反之亦然。

在此之前,无法移除负载均衡器并让 Elastic Beanstalk 仍然正常工作。负载均衡器是 Elastic Beanstalk 在“负载均衡环境”配置中工作方式不可或缺的一部分。

【讨论】:

  • 这对我来说失败了,因为“无法应用 Auto Scaling EvaluationPeriods 设置,因为 AWSEBCloudwatchAlarmHigh 不存在”和“负载均衡器 HealthCheck 设置无法应用,因为 AWSEBLoadBalancer 不存在”,然后是“更新失败设置:配置验证异常:无法应用 Auto Scaling EvaluationPeriods 设置,因为 AWSEBCloudwatchAlarmHigh 不存在。"
  • 单实例也消除了自动缩放,我只想消除ELB来构建自定义工作者。我的应用需要有两种环境,一种是基于网络的,一种是工作环境,看来我们只能选择一种?
【解决方案2】:

在新的 Elastic Beanstalk 界面中,我注意到将我的环境创建为单个实例的选项。

我试过了,正如人们所预料的那样,它没有创建弹性负载均衡器。万岁!

the AWS EB documentation 中描述了这些选项。起初我重新创建了我不需要自动平衡的环境,但显然你甚至可以switch environment type on the fly

【讨论】:

  • 这不起作用(请参阅我对answer above 的评论)。
  • @raxacoricofallapatorius,听起来您的 Elastic Beanstalk 配置有问题,这与这个特定问题无关。也许您应该将其作为一个新问题提出,例如在Server Fault?
  • 我想我找到了问题(基本上是文档遗漏):我在我的.ebextensions 配置文件中设置了一些与 ELB 相关的东西。这些都需要在配置文件中删除或注释掉并部署,然后才能尝试更改环境类型。
  • 这对我有用。注意:如果您碰巧收到错误“无法为单实例环境启用基于健康的滚动更新”,您需要将滚动更新类型更改为基于时间,如下所示:forums.aws.amazon.com/thread.jspa?messageID=640868
  • 我觉得您应该能够在多个实例且没有 ELB 的情况下执行此操作(例如,作为目标组和另一个 ALB 的一部分)
【解决方案3】:

从命令行你可以这样做

eb create -s

注意 激活单实例模式(-s 开关)时,既不会创建负载均衡器,也不会创建 Auto Scaling 组

另一种方法是通过控制台创建工作环境

或通过 CLI

eb create -t Worker

【讨论】:

  • 创建一个 worker 不是一个好主意,因为它需要附加到 SQS 队列并且还需要 ping localhost:80/ 以获取健康状态
【解决方案4】:

在保存的配置或模块特定的 env.yaml 中,使用这个:

OptionSettings: aws:elasticbeanstalk:environment: EnvironmentType: SingleInstance

创建单实例 EB 环境。

【讨论】:

猜你喜欢
  • 2013-08-10
  • 2020-11-21
  • 2017-09-28
  • 2019-04-21
  • 2017-02-14
  • 2023-04-03
  • 2019-07-30
  • 2018-04-23
  • 2014-02-11
相关资源
最近更新 更多