亚马逊 EC2 自动扩展测试

4
我创建了一个亚马逊 EC2 自动缩放组,在此组中至少应始终有 1 台服务器。
以下是需要完成的任务:
  1. CPU 利用率超过 80% 时,添加 2 台服务器。

  2. CPU 利用率低于 30% 时,终止 2 台服务器。

挑战在于如何增加/降低 CPU 利用率?由于我处于办公系统/受限制的 AWS 访问中,无法连接任何实例或使用 CLI。
是否有办法在这些限制下进行测试?

为什么我的问题被踩了?有什么问题吗? - Abdul Salam
2个回答

4

有一种方法可以对实例或容器进行压力测试(假设它是基于Linux的),使用Stress,这是一个旨在在指定时间内提高CPU使用率,然后在指定时间之后降低CPU百分比的软件包。它还有其他参数可用于自定义测试。

我个人最喜欢用于测试系统响应和灾难恢复的工具是Netflix的ChaosMonkey。它是一个由Netflix支持的开源项目,旨在测试容错性。在生产中使用它取决于个人喜好,但它是一个测试系统的工具。


3
如果您想测试“真实”情况,那么您需要一种在系统上生成负载的方法。这可以是人工负载(例如触发执行计算的程序,以便旋转CPU)或实际活动的真实模拟,这些活动是您的系统将要执行的活动。
没有必要测试Amazon EC2的自动扩展是否真正起作用 - 如果是这样,AWS状态页面上会显示问题 - 因此我假设您只是想测试自己的配置。在这种情况下,您应该真正测试一个“真实世界的场景”,比如模拟一定数量的同时用户进行典型活动。
如果您进行任何其他形式的测试(例如虚假增加CPU负载),则实际上并没有测试您希望自动缩放执行的真实情况,因此您的测试结果实际上并不有用。
例如,可能会出现应用程序在达到任何CPU限制之前遇到内存问题或单线程问题。在让真实用户使用您的系统之前,这将是您真正想知道的事情。

谢谢你的澄清,John。正如你所说,我只需要为自己的配置进行测试。但是我该怎么做呢?因为我需要检查当实例启动/关闭时生成的SNS邮件。 - Abdul Salam
如果您希望在 Amazon SNS 主题收到消息时收到通知,您可以简单地订阅该主题。最简单的方法是通过电子邮件或短信订阅接收通知。 - John Rotenstein
添加SNS主题没问题。我可以通过终止一个实例来触发SNS邮件,但是如何为扩展服务器获取SNS邮件呢?如何在公司的约束下生成流量是我的问题。 - Abdul Salam
我的建议是 不要 生成虚假的CPU利用率。我的建议是模拟真实用户与您的系统的交互,因为这是唯一真正的“测试”系统的方法。否则,您所做的所有测试都是虚假情况,无法证明您的系统在真实世界中是否能够处理负载。您必须问自己 为什么 想要测试该系统?答案希望是您想知道它是否能处理真实用户的负载。这就是您想要测试的内容,而不是某些假的CPU使用情况。 - John Rotenstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接