如何在办公时间打开/关闭云实例

时间:2012-01-25 12:22:08

标签: azure amazon-ec2 cloud cloud-hosting rackspace-cloud

我已经开始在AWS,Azure和Rackspace中创建云实例了。但是,我需要在一天结束时和早上关闭我的实例,因为这将是我的托管成本的一半(它们用于开发)。

我看了一些管理服务,但他们把我的脑子吹了出来。有一种简单的方法可以做到这一点吗?

9 个答案:

答案 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接口提供了所有相关方法(例如,许多其他方法),特别是:

通过脚本(EC2)

关于RebootInstances()的最简单方法是通过优秀的Amazon EC2 (亚马逊网提供的当前和未来基础设施服务的集成接口)来创建一些Python脚本服务),公开了上述所有EC2方法;然后,您可以根据需要或通过操作系统调度程序启动这些脚本。

通过持续集成/自动化(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,可用于自动化,包括计划的启动和关闭。如上所述,为了防止收费,请确保您处于停止(解除分配)状态,而不是刚停止。

更多信息:

Script to stop your VMs

Azure automation, official MS docs.

答案 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 Datapipeline
  • AWS Lambda预定活动
  • EC2实例上的预定Cron
  • Auto Scaling组的预定缩放

所以在你的情况下,我建议如下:

适用于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)

AWS

AWS开发工具包是您最好的选择,但是我在免费套餐下的startstop实例中使用TotalCloud.io。高度可定制。

易于设置。