我一心想在 AWS、Azure 和 Rackspace 中创建云实例。但是,我需要在一天结束时关闭我的实例并在早上打开,因为这将使我的托管成本减半(它们用于开发)。
我看过一些管理服务,但它们让我大吃一惊。有没有一种简单的方法可以做到这一点?
我一心想在 AWS、Azure 和 Rackspace 中创建云实例。但是,我需要在一天结束时关闭我的实例并在早上打开,因为这将使我的托管成本减半(它们用于开发)。
我看过一些管理服务,但它们让我大吃一惊。有没有一种简单的方法可以做到这一点?
天蓝色
休息:
您可以使用Windows Azure 服务管理 REST API对 Azure 部署执行此操作。因为它是 REST,所以您可以使用大多数编程语言来访问它。
您可以在本地计算机上运行一个应用程序,该应用程序安排对这些服务的调用在办公时间结束时的某个时间删除,然后在早上再次创建您的服务。
电源外壳:
或者,您可以使用相同的方式管理您的部署,但您可以使用Azure PowerShell cmdlet而不是使用 REST 。我自己就是这样做的,效果很好。
为了帮助您入门,有一个关于如何使用PowerShell 部署 Azure 应用程序的很好的教程。
另外,如果您还不知道,我还应该提到,如果您只是想在开发过程中降低成本,Azure 可以免费试用 3 个月。
您总是可以推出自己的解决方案,因为大多数云提供商都提供了相应的 API 来按需(甚至按计划)启动/停止实例,这当然也是这些管理服务实际使用的 - AmazonEC2 Java 接口提供了所有相关方法,例如(在许多其他方法中),特别是:
对于Amazon EC2 ,最简单的方法是通过出色的boto (Amazon Web Services 提供的当前和未来基础设施服务的集成接口)为自己编写一些 Python 脚本,它公开了上述所有 EC2 方法;然后,您可以按需或通过操作系统调度程序启动这些脚本。
另一种选择是促进持续集成服务器作为自动化引擎(这些系统有时被忽视的一个方面),以防你碰巧运行一个;它将允许您按需启动/停止实例或安排类似于 cron 的时间。
我们通过Bamboo AWS 插件(它是开源的,代码可在 Bitbucket 上获得)来做到这一点,有关此方法的更多详细信息,请参阅我对How to start and stop an Amazon EC2 instance in programmatically in java的回答。虽然Atlassian Bamboo是一种商业产品,但对于流行的开源 CI 解决方案(例如Jenkins )也应该有类似的东西。
注意:截至 2013 年 6 月,IaaS 实例可以置于“停止(解除分配)”状态。在这种状态下,您只需为与 VM 关联的任何磁盘的存储付费。下面的原始答案描述了一个处于“停止”但未解除分配状态的 VM 实例。解除分配状态当前是通过 Azure 管理门户执行的 VM 停止操作的默认设置。
今天在 Widows Azure 中完成此操作的唯一方法是删除部署。
如果您停止服务,您仍然需要付费(如租用办公空间,即使您不在其中也要付费),并且您不能将实例计数设置为零。可以使用的一个选项是将实例计数减少到绝对最小值 (1),然后在需要的时间将其扩展。但是这样做的成本效益将取决于您的实例的大小。
我知道旧线程,但微软在 2014 年为 Azure 推出了“运行手册”,您可以将其用于自动化,包括计划的启动和关闭。如上所述,请确保您处于停止(解除分配)状态,而不是刚刚停止,以防止收费。
更多信息:
是的,我们可以通过 Automation Runbook 安排作业。我创建了用于停止(取消分配)Azure VM 的脚本。
https://gallery.technet.microsoft.com/Deallocate-all-VM-under-79049c69
请阅读有关如何使用运行手册http://azure.microsoft.com/blog/2014/06/19/azure-automation-runbook-management/
Dellocation 和 stop 是不同的,因为 stop vm 也会产生成本。
迄今为止我发现的关于自动化 + 打开/关闭 VM 的最佳文章。[2015 年 2 月 5 日]。http://clemmblog.azurewebsites.net/using-azure-automation-start-und-stop-virtual-machines-schedule/
AWS 的推荐解决方案:
AWS Data Pipeline非常适合这项任务。Data Pipeline 使用 AWS 技术,并且可以配置为按设定的计划运行 AWS CLI 命令,而无需外部依赖。Data Pipeline 可以将日志写入 S3 并在 IAM 角色的上下文中运行,从而消除了密钥管理要求。数据管道也具有成本效益;例如,Data Pipeline 免费层可用于每天停止和启动一次实例。
https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/
请参阅这篇文章,有一些选项可以在 AWS中打开/关闭您的实例。
因此,在您的情况下,我建议以下内容:
对于 AWS:
通过类似 AWS CLI 命令的Shell命令:请参阅使用 AWS Pipeline 打开/关闭云实例。此方法将启动一个单独的 EC2 实例,以便为每个运行时间影响您的账单的 AWS API 调用启动和终止。
通过Node.js / Python等编程语言:请参阅使用 AWS Lambda 打开/关闭云实例。该任务每天运行两次,时间通常不到 3 秒,内存消耗高达 128MB,通常每月花费不到 0.0004 美元
对于 Azure 和 Rackspace(或您可能拥有的其他平台):
使用上述工具提供相应的API来按需启动/停止实例。
您还可以考虑设置每次启动实例时运行的 scripts-per-boot 。