我已经开始在AWS,Azure和Rackspace中创建云实例了。但是,我需要在一天结束时和早上关闭我的实例,因为这将是我的托管成本的一半(它们用于开发)。
我看了一些管理服务,但他们把我的脑子吹了出来。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:12)
<强>天青强>
<强> REST:强>
您可以使用Windows Azure Service Management REST API对Azure部署执行此操作。因为它是REST,所以您可以使用大多数编程语言来访问它。
您可以在本地计算机上运行一个应用程序,在办公时间结束时的某个时间安排对delete的这些服务的调用,然后在早上再次create您的服务。 / p>
<强>的PowerShell:强>
或者您可以以相同的方式管理部署,但您可以使用Azure PowerShell cmdlets而不是使用REST。我自己这样做了,效果很好。
为了帮助您入门,有一个很好的教程,介绍如何使用PowerShell to deploy Azure applications。
还如果您还不知道我还应该提一下,如果您只是在开发过程中寻找削减成本,那么Azure将有3个月免费试用。
答案 1 :(得分:11)
您可以随时推出自己的解决方案,只要大多数云提供商提供相应的API来按需启动/停止实例(甚至按计划),这就是那些管理服务实际上正在使用的那些 - {{{ 3}} Java接口提供了所有相关方法(例如,许多其他方法),特别是:
关于RebootInstances()的最简单方法是通过优秀的Amazon EC2 (亚马逊网提供的当前和未来基础设施服务的集成接口)来创建一些Python脚本服务),公开了上述所有EC2方法;然后,您可以根据需要或通过操作系统调度程序启动这些脚本。
另一个选择是促进boto服务器作为自动化引擎(这些系统有时被忽视的一个方面),以防万一你碰巧运行一个;它将允许您按需启动/停止实例或安排类似于cron。
我们通过continuous integration(它的开源和Bamboo AWS Plugin)完成此操作,有关此方法的详细信息,请参阅我对code is available on Bitbucket的回答。虽然How to start and stop an Amazon EC2 instance programmatically in java是商业产品,但应该有类似的流行开源CI解决方案,例如Atlassian Bamboo也是如此。
答案 2 :(得分:6)
注意:截至2013年6月,IaaS实例可以置于“已停止(取消分配)”状态。在此状态下,您只需存储与VM关联的任何磁盘。下面的原始答案描述了处于“已停止”但未解除分配状态的VM实例。解除分配状态是当前通过Azure管理门户执行的VM停止操作的默认状态。
今天在Widows Azure中实现此目的的唯一方法是删除部署。
如果您停止服务,您仍然需要付费(如租用办公室空间,即使您不在办公室,也需要付费),并且您无法将实例计数设置为零。可以使用的选项是将实例计数减少到绝对最小值(1),然后在需要的时间内将其重新调整。但这样做的成本效益取决于实例的大小。
答案 3 :(得分:2)
旧线程我知道,但微软推出了&#39; Runbooks&#39;适用于2014年的Azure,可用于自动化,包括计划的启动和关闭。如上所述,为了防止收费,请确保您处于停止(解除分配)状态,而不是刚停止。
更多信息:
答案 4 :(得分:1)
是自动化Runbook是我们可以安排工作的地方。我创建了用于停止(取消分配)Azure VM的脚本。
https://gallery.technet.microsoft.com/Deallocate-all-VM-under-79049c69
请阅读有关如何使用Runbook http://azure.microsoft.com/blog/2014/06/19/azure-automation-runbook-management/
的信息Dellocation和stop是不同的,因为stop vm也会产生费用。
答案 5 :(得分:1)
迄今为止我发现的有关自动化+开启/关闭虚拟机的最佳文章。 [2015年2月5日]。 http://clemmblog.azurewebsites.net/using-azure-automation-start-und-stop-virtual-machines-schedule/
答案 6 :(得分:0)
推荐的AWS解决方案:
AWS Data Pipeline 非常适合此任务。数据管道 使用AWS技术,可以配置为运行AWS CLI命令 没有外部依赖关系的设置计划。数据管道可以写 记录到S3并在IAM角色的上下文中运行,这消除了 关键管理要求。数据管道也具有成本效益;对于 例如,Data Pipeline免费套餐可用于停止和启动 实例每天一次。
https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/
答案 7 :(得分:0)
请参阅 this article ,在AWS内部有 打开/关闭实例 的一些选项。
所以在你的情况下,我建议如下:
适用于AWS :
通过 Shell命令,例如AWS CLI命令:请参阅 Turn on/off Cloud instances using AWS Pipeline 。这个方法会启动一个 为每个AWS API分别启动和终止EC2实例 称运行时间对您的账单有影响。
通过编程语言,例如 Node.js / Python :请参阅 Turn on/off Cloud instances using AWS Lambda 。任务运行两次 一天通常少于3秒,内存消耗最多 128MB通常成本低于0.0004美元/月
对于Azure和Rackspace (或您可能拥有的其他平台):
使用上述工具提供 Respective API 以按需启动/停止实例。
您也可以考虑设置每次启动实例时运行的scripts-per-boot。
答案 8 :(得分:0)