如何仅在访问站点时自动启动 EC2 实例?

如何仅在访问站点时自动启动 EC2 实例?

我有一个 CPU 密集型 EC2 应用程序,但一天中只有一个客户端访问它几个小时。我不想让高 CPU 实例持续运行 - 有没有办法降低我对实例的使用率?

我假设我需要有一个实例(可能是一个小实例)不断运行以便检查流量...然后设置启动/停止高 CPU 实例并转发流量的东西。

这叫什么?我在哪里可以找到有关配置它的信息?(这是我可以在 ubuntu 下使用 apache 做的事情吗?)

答案1

如果您的实例具有一致的“正常运行时间”,那么您可以安排它在特定时间运行,并在该时间范围之外将其关闭。

您可以使用自制的调度工具(例如,在另一个实例上运行某些东西),也可以使用 Skeddly 之类的东西(www.skeddly.com) 来为您完成繁重的工作。

披露:我是 Eleven41 Software 的首席执行官,该公司是 Skeddly 背后的公司。

答案2

亚马逊的弹性负载平衡和自动扩展可能可以将此作为条件,但可能更强大的是只需安排正常运行时间在对您的客户有意义的时间窗口中进行此实例。

也就是说,除非另有要求(这可能是他们向您提交的票据,或者您可以在另一个实例上构建一个控制实例的启动/停止行为的 Web 前端),否则该实例将于周一至周五上午 9 点至中午 12 点运行。

答案3

如果您有一个运行 Linux 版本的微型实例,则可以轻松使用 Amazon 命令行工具通过 crontab 启动和停止该实例

要编辑 crontab 文件,请运行 crontab -e 来编辑它并添加如下行

(minute) (hour) (day of month) (month) (day of week) (command)

例如,如果你想每天早上 5 点启动服务器,晚上 10 点停止服务器,你可以使用

0 5 * * * ec2-start-instances [instance id]
0 22 * * * ec2-stop-instances [instance id]

将要启动和停止的实例 ID 放在此处。

您必须安装 ec2 命令行工具。您需要为要执行此操作的实例分配一个弹性 IP,这样它们启动时就不需要进行任何配置,而且无论什么应用程序访问它们,它们都可以到达那里。

希望这可以帮助。

相关内容