动态集群在云上调整大小

时间:2012-07-09 23:20:55

标签: java algorithm cloud cluster-computing jclouds

我是一名Java开发人员,我正在考虑将AWS,Rackspace和Heroku作为我的应用程序的潜在云提供商。之前只使用过传统的Web主机(虚拟专用服务器计划),我有点不知所措。

我的理解是,通过云,您可以根据需求生成/终止虚拟设备(具有预配置软件堆栈的虚拟机,例如您的应用服务器,数据库服务器等)。因此,如果它是午夜或假期而没有人使用我的应用程序,那么我可以减少运行实例的数量并节省一些钱。但是,如果它是星期六早上,而且我已经危险地接近峰值负载,我可以生成新的服务器,并放心我的应用程序不会崩溃。

首先,如果我的理解不正确或有任何缺陷,请先纠正我!

假设我或多或少对云的正确性,那么我应该构建我自己的监视器来监视应用程序使用中的突然增加/减少/模式(我假设基于网络流量和带宽?!) 。当流量增长到某一点时,我应该实例化更多虚拟机,反之亦然,当流量减慢时。

由于JClouds允许你这样做,我的监视器只会使用JClouds API来生成/杀死服务器。

我窒息的是:我应该使用什么算法/公式告诉我的显示器什么时候产生/杀死虚拟机?我写了一个试验性的算法,它基本上确保我在任何时候都需要加倍“马力”(VM)。监视器大约每10秒轮询一个节点,如果系统上的当前负载已经改变某个增量,它允许ClusterResizer启动并确定我们是否需要更多/更少的节点。

虽然我已经花了几个小时设计这个动态调整大小系统的大纲/骨架,但我想在我走得太远之前停下来并在这里做一个完整性检查,以防我做了一些不必要的事情,错了或者只是简单的疯狂!

其他云应用如何监控其虚拟机并调整其大小?我应该熟悉哪些算法或最佳实践?提前谢谢!

1 个答案:

答案 0 :(得分:0)

在Amazon EC2上,您不需要自己实施监控,有一个名为cloudwatch的功能可以为您进行弹性缩放 - 在负载增加时自动扩展,在缩小时缩小。因此,您无需自己实施监控服务。在RackSpace上有一个名为Scalr的自动扩展的第三方解决方案。可能还存在与Amazon CloudWatch等效的本机RackSpace功能,您应该进行调查以节省自己从头开始构建此基础架构。