我是AWS上的新手,它有很多产品(EC2,负载均衡器,EBS,S3,SimpleDB等),还有很多文档,我无法弄清楚我必须在哪里从...开始。
我的目标是为可扩展性做好准备。
假设我想设置一个简单的网络服务器,它可以访问mongolab中的数据库。我想我需要一个EC2实例来运行它。此时,我还需要更多东西(EBS,S3等)吗?
在某些时候,我的应用已达到足够的流量,我必须扩展它。我正在考虑启动我的EC2机器的新副本(实例)。但是它会有另一个IP。那么,如何在两个EC2实例之间分配流量?那是自动的吗?我必须雇用Load Balancer服务来分配流量吗?那么我将需要支付2个EC2实例和1个LB吗?此时,我还需要更多东西(例如:弹性IP)吗?
答案 0 :(得分:13)
欢迎来到索尼桑托斯俱乐部,
AWS是一个非常强大的架构,但有了这种力量,责任就来了。我和其他许多人已经学会了使用AWS服务构建应用程序的艰难方法。
你问,我从哪里开始?这实际上是一个非常好的问题,但你可能不喜欢我的答案。您需要阅读和研究有关亚马逊甚至其他提供商(如Rackspace,GoGrid,Google的Cloud和Azure)提供的所有技术。亚马逊不容易上手,但它并不是真的,它的重点更多是关于可定制和具有非常广泛的API。但是让我们回到你的问题。
要运行一个简单的Web服务器,您需要启动EC2实例,默认情况下,此实例在名为EBS的磁盘驱动器上运行。基本上EBS驱动器是一个普通的硬盘驱动器,除了你可以做很多其他很酷的东西,比如把它从一台服务器上取下并移动到另一台服务器上。 S3实际上更像是一个文件存储系统,如果你有一堆图像,或者你想存储大量的数据库备份等,它更有用,但它不是一个简单的网络服务器的要求。只需运行EC2实例就可以了,其他一切都将在幕后进行。
如果您的应用获得了大量流量,您有两种选择。您可以通过关闭它并使用更大的实例启动它来扩展您的计算机。一般来说这是最容易做到的事情,但是你要达到这样的程度,即使在较大的尺寸下你也无法处理1个实例的所有流量,你决定需要两个 OR 您将需要一个更容错的应用程序,在发生故障或更新时仍然可以联机。
如果您创建第二个实例,则需要执行某种形式的负载平衡。我建议使用amazons Elastic Load Balancer,因为它易于配置,并且它与云的集成比使用Round Robin DNS或像haproxy这样的应用程序更好。弹性负载均衡器并不昂贵,我相信它们的成本约为每月18美元+在负载均衡器之间传递的数据。
但不,你不需要做任何其他事情来扩大你的网站。 2个EC2实例和一个ELB将完成这个任务。
您没有提出但可能应该提出的其他问题。
EC2实例多长时间遇到硬件故障并导致服务器崩溃。如果发生这种情况我该怎么办?
它经常发生,通常是批量生产。有时候我会花几个月没有任何问题然后我会让一些服务器一次崩溃。但是你应该为我准备好的东西,我一开始并没有为此付出代价。确保您创建脚本并准备好备份和备份计划,以免服务器出现故障。从第1天开始,它就可以正常运行或具有负载均衡的解决方案。
关于scalabilty最困难的部分是什么?
测试测试测试测试...不要假设任何东西。还要为您的交通突然出现高峰做好准备。如果你的页面从1到1000人过夜你准备好处理它,你必须做好准备吗?你有没有测试过你“想”会发生什么?
祝你好运,玩得开心......我知道我有:)