我应该使用亚马逊的AWS虚拟私有云(VPC)

目前正从另一家VPS提供商转向Amazon EC2。 我们有你典型的Web服务器/数据库服务器的需求。 我们的数据库服务器前面的Web服务器。 数据库服务器不能从Internet直接访问。

我想知道是否有任何理由将这些服务器放到AWS虚拟私有云(VPC)中,而不是仅仅创build实例并使用安全组来防火墙。

我们没有做任何事情只是一个典型的Web应用程序。

任何使用VPC或不使用VPC的理由?

谢谢。

注意:AWS中的新帐户立即启用“默认VPC”,并使“EC2-Classic”不可用。 因此,与2012年8月相比,这个问题和答案的意义不大。我现在离开答案是因为它有助于区分“EC2-Classic”和VPC产品线之间的差异。 请参阅亚马逊的常见问题了解更多详情。

是。 如果您是安全意识强的CloudFormation用户,或者想要完全控制自动缩放(而不是Beanstalk,它抽象了某些方面但仍然可以完全访问缩放参数),请使用VPC。 这篇博客做了很好的总结优点和缺点。 博客文章中的一些亮点(由kiip.me撰写):

EC2有什么错误?

所有节点都可以上网。 对于没有理由在全球互联网上存在的节点来说,这没什么意义。 例如:数据库节点不应该有任何公共Internet主机名/ IP。

所有节点都在共享networking上,并且可以相互访问。 这意味着由用户“Bob”启动的EC2节点可以访问由用户“Fred”启动的任何EC2节点。请注意,默认情况下,安全组不允许这样做,但是很容易撤消此保护,特别是在使用自定义安全组织。

没有公共与私人界面。 即使你想禁用公共主机名的所有stream量,你也不能。 在networking接口级别,每个EC2实例只有一个networking接口。 公共主机名和弹性IP路由到“私人”networking。

VPC有什么好处

首先,与EC2相比,VPC提供了惊人的安全性。 在VPC内部启动的节点不能通过全球互联网,EC2或任何其他VPC寻址。 这并不意味着你可以忘记安全性,但是与EC2相比,它提供了一个更加明智的起点。 此外,它使防火墙规则更容易,因为私人节点可以简单地说:“允许任何来自我们的专用networking的stream量”。从启动节点到拥有完全运行的Web服务器的时间从20分钟降低到5分钟左右由于节省时间避免传播防火墙周围的变化。

DHCP选项集允许您指定新节点在VPC内启动时将使用的域名,DNS服务器,NTP服务器等。 这使得实现自定义DNS更容易。 在EC2中,您必须启动一个新节点,修改DNSconfiguration,然后重新启动networking服务才能获得相同的效果。 我们在Kiip上运行我们自己的DNS服务器来进行内部节点parsing,而DHCP选项集使得这一切变得轻松(把east-web-001input到浏览器而不是10.101.84.22)更为合理。

最后,VPC只是提供一个更实际的服务器环境。 虽然VPC是AWS的独特产品,并且似乎将您“locking”到AWS,但如果您决定开始运行自己的专用硬件,则VPC所采用的模式更类似于此。 预先掌握这些知识,并build立真实世界的经验将是非常宝贵的,如果你需要移动到自己的硬件。

这篇文章还列举了VPC的一些困难,所有这些都与路由或多或less有关:从VPC获取互联网网关或NAT实例,在VPC之间进行通信,为您的数据中心build立VPN。 有时这些可能会令人沮丧,学习曲线也不是微不足道的。 同样,安全优势本身可能是值得的,亚马逊的支持(如果你愿意付钱的话)在VPCconfiguration方面非常有用。

目前VPC比EC2有一些有用的优势,比如:

  • 每个实例多个NIC
  • 多个IP的每个网卡
  • 安全团体中的“否认”规则
  • DHCP选项
  • 可预测的内部IP范围
  • 在实例之间移动NIC和内部IP
  • VPN

据推测,亚马逊也将升级一些这些function的EC2,但目前,他们只是VPC。

现在VPC是拥有内部负载均衡器的唯一方法

如果您的应用程序需要访问EC2之外的服务器,例如,如果您的公用服务托pipe在您自己的物理数据中心,并且无法通过Internet访问,则VPC非常有用。 如果您打算将所有的Web和数据库服务器放在EC2上,那么没有理由使用VPC。

如果selectRDS来提供数据库服务,则可以将数据库安全组configuration为允许来自给定EC2安全组的数据库连接,即使您的EC2集群中有dynamicIP地址,RDS也会自动创build防火墙规则以允许只能从您的实例连接,在这种情况下减lessVPS的好处。

另一方面,当您的EC2实例访问您的本地networking时,VPS非常棒,那么您可以在您的VPS和本地networking之间build立VPN连接 ,控制IP范围,子networking,路由和外出防火墙规则,我认为不是你在找什么。

我还强烈build议尝试使用Elastic Beanstalk ,它将提供一个控制台,使您可以轻松地为PHP,Java和.Net应用程序设置EC2群集,启用Auto Scaling , Elastic Load Balancer和自动应用程序版本控制,从而轻松地从错误部署。