现在似乎很多人都在使用 AWS,我真的希望有人能给我指点一下如何在 EC2 中设计一个可扩展的系统。
我尝试搜索,但我能找到的只有 CloudBuzz、CloudCookie、CloudIceCream,而没有关于实际基础设施的良好文档。
我想要的是创建一个可以进行一些计算并可扩大/缩小规模的服务器集群。但是,管理和工作计划取决于非显而易见的因素,这些因素不能直接从 CPU/RAM/HDD 负载中得出。
因此,我想知道是否可以调用 CloudSuperScaleMe 函数以编程方式从云内部或云外部简单地启动和终止实例。
从所有流行语来看,我能找到最接近的是 CloudWatch 和 CloudElasticSomething,但它们似乎基于检查 CPU/网络/等的自动缩放组。负载,并且由于我的架构中这些因素都不可信,我不知道如何在不严重改变和定制 AMI 的情况下编写警报和扩大/缩小功能。
答案1
Cloudwatch 是 AWS 的“监控”服务 - 它将提供“CPU/网络/等负载” - 这是自动扩展所必需的。但是,您可以定义自己的自定义指标也可以通过自动缩放来使用。
使用 CloudWatch 记录的数据类型有一些限制,如下所示本文。
据我了解(虽然我没有亲身经历过),Nagios/Cacti 设置可以配置为进行监控,然后执行您的扩展脚本 - 除非其他人可以为这种方法提供充分的理由,否则我不能。
另一种可能更简单的方法(非常通用的版本)是:在服务器之间设置一个消息层(corosync / heartbeat)它将“选举”一个主节点,并跟踪正在运行的服务器在“主节点”上,您可以跟踪扩展的因素,并触发扩展脚本您的扩展脚本将传递添加/删除+数字需要能够:
- 获取实例列表(最好使用来自消息传递层的数据,但如果没有,则只需使用 DescribeInstances)
- 如果添加,则调用 RunInstances
- 如果要删除,请选择哪些实例,然后对其调用 TerminateInstances