我在ec2ubuntu上问了一个类似的问题,但后来意识到这更多的是一个通用的服务器可扩展性/冗余问题。
基本上,我有一个运行Ubuntu AMI的Amazon EC2实例。 它与一个基本的LAMP堆栈安装在一起,作为一个数据库/networking服务器。
现在,我想知道设置一定程度的冗余的最好方法是什么,基本上是这样,如果实例死亡,我们可以启动一个新的实例,安装相同的EBS卷,并在我们的快乐的方式。 当我们等待新的实例启动时,可能会有一些最小的停机时间。 在赛道后面,我们可能会想要使其更具弹性,并且可以向上扩大以适应新的负载。
我曾经build议我可以使用ELB(Elastic Load Balancing)和Autoscaling来设置类似的东西(这只是用于replace的实例),但是,我不确定它是如何工作的,只有一个服务器实例?
此外,是否有任何替代解决scheme,不依赖于ELB /自动调节,或者这是我最好的select这个设置? (从我所了解的情况来看,scalr和rightscale是围绕着游泳池而devise的 – 我只想要一个相当低调的设置,而且我愿意忍受几分钟的停机时间,同时等待replace实例的启动。
干杯,维克多
我会说你会需要2台机器。
首先是负载平衡器,将呼叫redirect到最佳服务器(负载均衡器将处理该问题)
第二个是与当前机器完全相同的第二台机器。
当然,在任何时候,你都可以简单地插入一个新的networking服务器,并将其添加到负载均衡器上的机器列表中,现在您将有三台机器根据其负载进行设置和使用。 等等
如果你想确保一切都很好,你可以select第三个服务器,这个服务器就是你的数据库服务器,这两个服务器都可以写和读这个数据库服务器。 将来,您可以轻松添加从新数据库服务器开始的复制数据库基础架构。
可能稍微有些过头,但理论上这样的设置对于以后来说是有好处的
重要的是有一些东西可以检测到实例死亡并重新启动。 我不认为EC2内部可以做到这一点,所以你需要有一些外部的东西来处理它。 如果有人在某个地方运行一个服务来监控您的站点,并在出现问题的时候停止/启动EC2实例,那么我不会感到惊讶,但是我不知道任何事情。
你将需要一个外部的实体为你照顾。 我只是不知道这样的服务是否适用于单机设置,因为单机types是您的方程中的缺陷。 🙂
我确定你知道你可以自动化EC2设置,例如用一些用户数据,正确的AMI(例如安装了厨师独奏)等等 – 这是简单的部分。
最后,问题是如果你在另一个供应商身上更好。 例如一个slicehost实例可能对你有好处。 还是两个 一个用于应用程序,一个用于DB。 “实例可能会消失”的东西也less了。 尽pipe我必须补充一点,但它确实很less发生。 (但是我也看到了。)
一个非常便宜的解决scheme可能是在共享networking托pipe上使用cron作业,例如bluehost等。 你可以创build一个脚本,每5分钟运行一次,并执行如下操作:
当然,你的共享虚拟主机会崩溃,你的实例可能会同时崩溃:-P