亚马逊EC2与单台服务器上的医pipe局 – 可能吗?

我在ec2ubuntu上问了一个类似的问题,但后来意识到这更多的是一个通用的服务器可扩展性/冗余问题。

基本上,我有一个运行Ubuntu AMI的Amazon EC2实例。 它与一个基本的LAMP堆栈安装在一起,作为一个数据库/networking服务器。

现在,我想知道设置一定程度的冗余的最好方法是什么,基本上是这样,如果实例死亡,我们可以启动一个新的实例,安装相同的EBS卷,并在我们的快乐的方式。 当我们等待新的实例启动时,可能会有一些最小的停机时间。 在赛道后面,我们可能会想要使其更具弹性,并且可以向上扩大以适应新的负载。

我曾经build议我可以使用ELB(Elastic Load Balancing)和Autoscaling来设置类似的东西(这只是用于replace的实例),但是,我不确定它是如何工作的,只有一个服务器实例?

此外,是否有任何替代解决scheme,不依赖于ELB /自动调节,或者这是我最好的select这个设置? (从我所了解的情况来看,scalr和rightscale是围绕着游泳池而devise的 – 我只想要一个相当低调的设置,而且我愿意忍受几分钟的停机时间,同时等待replace实例的启动。

干杯,维克多

我会说你会需要2台机器。

  1. 首先是负载平衡器,将呼叫redirect到最佳服务器(负载均衡器将处理该问题)

  2. 第二个是与当前机器完全相同的第二台机器。

当然,在任何时候,你都可以简单地插入一个新的networking服务器,并将其添加到负载均衡器上的机器列表中,现在您将有三台机器根据其负载进行设置和使用。 等等

如果你想确保一切都很好,你可以select第三个服务器,这个服务器就是你的数据库服务器,这两个服务器都可以写和读这个数据库服务器。 将来,您可以轻松添加从新数据库服务器开始的复制数据库基础架构。

可能稍微有些过头,但理论上这样的设置对于以后来说是有好处的

重要的是有一些东西可以检测到实例死亡并重新启动。 我不认为EC2内部可以做到这一点,所以你需要有一些外部的东西来处理它。 如果有人在某个地方运行一个服务来监控您的站点,并在出现问题的时候停止/启动EC2实例,那么我不会感到惊讶,但是我不知道任何事情。

你将需要一个外部的实体为你照顾。 我只是不知道这样的服务是否适用于单机设置,因为单机types是您的方程中的缺陷。 🙂

我确定你知道你可以自动化EC2设置,例如用一些用户数据,正确的AMI(例如安装了厨师独奏)等等 – 这是简单的部分。

最后,问题是如果你在另一个供应商身上更好。 例如一个slicehost实例可能对你有好处。 还是两个 一个用于应用程序,一个用于DB。 “实例可能会消失”的东西也less了。 尽pipe我必须补充一点,但它确实很less发生。 (但是我也看到了。)

一个非常便宜的解决scheme可能是在共享networking托pipe上使用cron作业,例如bluehost等。 你可以创build一个脚本,每5分钟运行一次,并执行如下操作:

  • 有没有适当的实例运行? (例如使用ec2-describe-instances)
  • 它正在运行? 比如对主机名进行“curl”处理,然后检查一下是否合理
  • 如果这两个问题中的任何一个都不是,那么在必要时杀死旧的实例并启动一个新的实例

当然,你的共享虚拟主机会崩溃,你的实例可能会同时崩溃:-P