不使用Elastic Load Balancer的弹性Beanstalk

72

我想关闭我的弹性Beanstalk环境中的弹性负载均衡器(ELB)。

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

虽然可以在EC2管理窗口中删除ELB,但这会导致弹性Beanstalk的健康状态从绿色变成红色。我刚刚发现了一些信息表明这是不可能的。

有人知道如何在没有负载均衡的情况下运行Elastic Beanstalk,并使环境保持绿色健康状态吗?


3
抱歉,您不能从Elastic Beanstalk中删除负载均衡器,因为它是软件包的一部分。您可以尝试其他方法,可能需要更多的配置 - 您可以创建一个CloudFormation脚本,使用预定义的AMI(可能类似于Beanstalk使用的内容),并自己完成所有部署。 - Eran Sandler
我相信您可以从EC2管理页面获取与负载均衡器关联的弹性IP,并直接将其与应用程序服务器实例关联。然而,我预计预配置的健康监测仍会出现问题,因此需要进行更多的更改才能使一切恢复正常。 - rvalue
您是不是不想支付整个 EB 应用程序的费用,只想支付负载均衡器的费用?有一种方法可以在没有任何实例或负载均衡器的情况下维持您的 EB(因此它暂时免费停止),稍后仍然可以相当快速地重新启动它。 - ecoe
4个回答

69
自2013年7月起,Elastic Beanstalk支持仅具有单个容器实例且没有负载均衡器的"single-instance" environments。使用“负载均衡环境”设置的现有环境可以切换到“单实例”和反之亦然。
在此之前,不可能移除负载均衡器并使Elastic Beanstalk仍能正常工作。“负载均衡环境”配置中,负载均衡器是Elastic Beanstalk工作方式的重要组成部分。

7
使用“Auto Scaling EvaluationPeriods设置无法应用,因为AWSEBCloudwatchAlarmHigh不存在”和“Load Balancer HealthCheck设置无法应用,因为AWSEBLoadBalancer不存在”的错误信息,接着是“更新设置失败:配置验证异常:无法应用Auto Scaling EvaluationPeriods设置,因为AWSEBCloudwatchAlarmHigh不存在。” - orome
单个实例也可以消除自动缩放,我只想消除ELB以构建自定义工作程序。我的应用程序需要有两个环境,一个基于Web的环境和一个工作程序环境,但似乎我们只能选择其中一个? - Mathieu J.

37
在新的弹性 Beanstalk 界面中,我注意到了创建单个实例环境的选项。

Dropdown with options "Single instance" and "Load balancing, autoscaling".

我尝试了一下,不出所料,并没有创建弹性负载均衡器。太好了!
这些选项在AWS EB文档中有描述。起初,我重新创建了我不需要自动平衡的环境,但显然你甚至可以随时切换环境类型

这个不起作用(请参见我在上面的答案中的评论)。 - orome
@raxacoricofallapatorius,听起来您的Elastic Beanstalk配置存在问题,这与这个特定的问题没有真正的关系。也许您应该把它作为一个新问题提出,比如在Server Fault - lime
2
我认为我找到了问题(基本上是文档遗漏):我在.ebextensions配置文件中设置了一些ELB相关的内容。在尝试更改环境类型之前,所有这些都需要在配置文件中被删除或注释掉,并进行部署。 - orome
这对我有用。注意:如果您遇到错误“无法为单实例环境启用基于健康状况的滚动更新”,则需要将滚动更新类型更改为基于时间的,如此处所述:https://forums.aws.amazon.com/thread.jspa?messageID=640868。 - StCleezy
我觉得你应该能够使用多个实例和没有 ELB 完成这个操作(例如作为目标组和另一个 ALB 的一部分)。 - Andy Hayden
显示剩余2条评论

13

你可以通过命令行这样做

eb create -s

注意:激活单实例模式(-s 开关)时,既不会创建负载均衡器,也不会创建自动扩展组。

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

enter image description here

eb create -t Worker

4
创建一个工作进程并不是一个好主意,因为它需要连接到一个 SQS 队列,并且会对本地主机的端口 80 发送心跳检测以获取健康状态。 - Marcelo

7
在保存的配置文件或模块特定的 env.yaml 中,使用以下内容: OptionSettings: aws:elasticbeanstalk:environment: EnvironmentType: SingleInstance 以创建单实例 EB 环境。

更详细的信息请参见 https://stackoverflow.com/a/41349211/10155767 - Ben Mares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接