【问题标题】:How to turn on/off cloud instances during office hours如何在办公时间打开/关闭云实例
【发布时间】:2012-02-18 15:10:00
【问题描述】:

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

我查看了一些管理服务,但它们让我大吃一惊。有没有简单的方法可以做到这一点?

【问题讨论】:

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


    【解决方案1】:

    天蓝色

    休息:

    您可以使用 Windows Azure Service Management REST API 对 Azure 部署执行此操作。因为它是 REST,所以您可以使用大多数编程语言来访问它。

    您可以在本地计算机上运行一个应用程序,将这些服务的调用安排在办公时间结束时的某个时间到delete,然后在早上再次向您的服务调用create

    PowerShell:

    或者您可以使用相同的方式管理您的部署,但您可以使用Azure PowerShell cmdlets 而不是使用 REST。我自己就是这样做的,效果很好。

    为了帮助您入门,有一个关于如何使用 PowerShell to deploy Azure applications 的不错的教程。

    另外如果您还不知道,我还应该提一下,如果您只是想在开发过程中降低成本,Azure 可以免费试用 3 个月。

    【讨论】:

      【解决方案2】:

      方法

      您始终可以推出自己的解决方案,只要大多数云提供商都提供相应的 API 来按需(甚至按计划)启动/停止实例,这当然也是这些管理服务实际使用的 - @987654321 @Java 接口提供所有相关方法,例如(以及许多其他方法),具体来说:

      通过脚本 (EC2)

      对于Amazon EC2,最简单的方法是通过出色的boto 为自己编写一些 Python 脚本(亚马逊网络服务提供的当前和未来基础设施服务的集成接口) em>,它暴露了上面提到的所有 EC2 方法;然后,您可以按需或通过您的操作系统调度程序启动这些脚本。

      通过持续集成/自动化 (EC2)

      另一种选择是将continuous integration 服务器作为自动化引擎(这些系统有时被忽视的方面),以防万一您碰巧运行了一个;它可以让您按需启动/停止实例,或者像 cron 一样安排实例。

      我们通过Bamboo AWS Plugin(它是开源的,code is available on Bitbucket)来做到这一点,有关此方法的更多详细信息,请参阅我对How to start and stop an Amazon EC2 instance programmatically in java 的回答。虽然Atlassian Bamboo 是一种商业产品,但对于流行的开源 CI 解决方案,应该有类似的东西可用,例如Jenkins 也是。

      【讨论】:

      【解决方案3】:

      注意:截至 2013 年 6 月,IaaS 实例可以置于“停止(解除分配)”状态。在这种状态下,您只需为与 VM 关联的任何磁盘的存储付费。下面的原始答案描述了一个处于“停止”但未解除分配状态的 VM 实例。解除分配状态当前是通过 Azure 管理门户采取的 VM 停止操作的默认设置。

      今天在 Widows Azure 中完成此操作的唯一方法是删除部署。

      如果您停止服务,您仍然需要付费(就像租用办公空间一样,即使您不在其中也需要付费),并且您不能将实例计数设置为零。可以使用的一个选项是将实例计数减少到绝对最小值 (1),然后在需要的时间将其扩展。但是这样做的成本效益将取决于您的实例的大小。

      【讨论】:

      • 补充:如果单个实例仍然太昂贵,您可以在下班时间将 VM 大小更改为 Extra Small,然后在工作时间将其改回更大的值。
      • 我们今天真的可以做到吗?此设置是服务定义的一部分,而不是配置?
      • 除非删除实例、更改源代码并重新部署,否则无法执行此操作。在这种情况下,你为什么要打扰?!直到早上才删除它
      • 我知道你能做到这一点。而且它不会更改源代码,而只是更改服务定义文件(.csdef)。关键是大卫提到你可以动态地做到这一点,我不知道它是否可用。
      • 实际上,您可以使用包含新目标大小的更新 csdef 文件的新软件包进行就地升级以更改 VM 大小(正如 David 指出的那样)。这项增强功能是在去年秋天推出的,虽然并不理想,但它是希望成为更简单选择的垫脚石。
      【解决方案4】:

      我知道旧线程,但微软在 2014 年为 Azure 推出了“Runbooks”,您可以将其用于自动化,包括计划的启动和关闭。如上所述,请确保您处于停止(解除分配)状态,而不是刚刚停止,以防止收费。

      更多信息:

      Script to stop your VMs

      Azure automation, official MS docs.

      【讨论】:

        【解决方案5】:

        是的,我们可以通过 Automation 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/

        删除和停止是不同的,因为停止虚拟机也会产生成本。

        【讨论】:

          【解决方案6】:

          迄今为止我发现的关于自动化 + 打开/关闭 VM 的最佳文章。 [2015 年 2 月 5 日]。 http://clemmblog.azurewebsites.net/using-azure-automation-start-und-stop-virtual-machines-schedule/

          【讨论】:

            【解决方案7】:

            AWS 的推荐解决方案:

            AWS 数据管道 非常适合这项任务。数据管道 使用 AWS 技术,并且可以配置为在其上运行 AWS CLI 命令 没有外部依赖的设定时间表。数据管道可以写 记录到 S3 并在 IAM 角色的上下文中运行,这消除了 关键管理要求。数据管道也具有成本效益;为了 例如,数据管道免费层可用于停止和启动 每天一次。

            https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/

            【讨论】:

              【解决方案8】:

              请参阅 this article,有一些选项可以在 AWS 中打开/关闭您的实例

              • AWS 数据管道
              • 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

              【讨论】:

                【解决方案9】:

                AWS

                AWS SDK 是您最好的选择,但我在免费套餐下使用 TotalCloud.io 到 startstop 实例。非常可定制。

                易于设置。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2015-09-07
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-10-07
                  • 2021-06-08
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多