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

Posted

技术标签:

【中文标题】我应该使用亚马逊的 AWS 虚拟私有云 (VPC) [关闭]【英文标题】:Should I use Amazon's AWS Virtual Private Cloud (VPC) [closed] 【发布时间】:2012-08-11 06:41:48 【问题描述】:

目前正在从另一个 VPS 提供商迁移到 Amazon EC2。我们有您典型的 Web 服务器/数据库服务器需求。我们的数据库服务器前面的 Web 服务器。无法从 Internet 直接访问数据库服务器。

我想知道是否有任何理由将这些服务器放入 AWS 虚拟私有云 (VPC) 中,而不仅仅是创建实例并使用安全组将它们隔离开来。

我们并没有做任何花哨的事情,只是一个典型的网络应用程序。

是否有任何理由使用 VPC 或不使用 VPC?

谢谢。

【问题讨论】:

这个问题的原始“最佳答案”不再有效,因为亚马逊 EC2 实例会自动分配一个新的 VPC,或者要求您选择要在哪个 VPC 上运行。它们本质上是现在直接相互依赖的服务/现在不是无关的东西。鉴于 Amir 指出亚马逊将朝这个方向发展,我认为他的回答现在应该是最好的了。 现在阿米尔的答案无处可寻。 【参考方案1】:

注意:AWS 中的新账户启动时会立即启用“默认 VPC”,并使“EC2-Classic”不可用。因此,与 2012 年 8 月相比,这个问题和答案现在更没有意义了。我将按原样保留答案,因为它有助于界定“EC2-Classic”和 VPC 产品线之间的差异。详情请查看Amazon's FAQ。

是的。如果您有安全意识、重度 CloudFormation 用户,或者想要完全控制自动缩放(与 Beanstalk 不同,Beanstalk 抽象了它的某些方面但仍然让您可以完全访问缩放参数),请使用 VPC。这个blog post 很好地总结了利弊。博文中的一些亮点(作者kiip.me):

EC2 出了什么问题?

所有节点均可通过 Internet 寻址。这对于没有理由存在于全球互联网上的节点来说没有多大意义。例如:数据库节点不应有任何公共互联网主机名/IP。

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

没有公共与私有接口。即使您想禁用公共主机名上的所有流量,也不能。在网络接口级别,每个 EC2 实例只有一个网络接口。公共主机名和弹性 IP 被路由到“私有”网络。

VPC 的优点

首先,与 EC2 相比,VPC 提供了令人难以置信的安全性。在 VPC 中启动的节点无法通过全球互联网、EC2 或任何其他 VPC 寻址。这并不意味着您可以忘记安全性,但与 EC2 相比,它提供了一个更明智的起点。此外,它使防火墙规则变得更加容易,因为私有节点可以简单地说“允许来自我们私有网络的任何流量”。我们从启动一个节点到拥有一个完全运行的 Web 服务器的时间从 20 分钟缩短到了大约 5 分钟,这完全归功于避免传播防火墙更改所节省的时间。

DHCP 选项集可让您指定新节点在 VPC 中启动时将使用的域名、DNS 服务器、NTP 服务器等。这使得实施自定义 DNS 变得更加容易。在 EC2 中,您必须启动一个新节点,修改 DNS 配置,然后重新启动网络服务才能获得相同的效果。我们在 Kiip 运行我们自己的 DNS 服务器以进行内部节点解析,而 DHCP 选项集让这一切变得轻松(在浏览器中输入 east-web-001 而不是 10.101.84.22 更有意义)。

最后,VPC 只是提供了一个更加真实的服务器环境。虽然 VPC 是 AWS 的独特产品,并且似乎将您“锁定”到 AWS,但如果您决定开始运行自己的专用硬件,VPC 采用的模型更类似于。如果您需要迁移到自己的硬件,事先掌握这些知识并围绕它建立现实世界的经验将是非常宝贵的。

这篇文章还列出了 VPC 的一些困难,所有这些或多或少都与路由有关:从 VPC 中获取 Internet 网关或 NAT 实例、在 VPC 之间进行通信、设置 *** 到您的数据中心。这些有时会让人很沮丧,而且学习曲线也不是微不足道的。尽管如此,仅凭安全优势可能就值得采取行动,而亚马逊支持(如果您愿意为此付费)在 VPC 配置方面非常有用。

【讨论】:

"所有节点都可以通过 Internet 寻址" => 这可以通过安全组轻松控制。"所有节点都在共享网络上.." => 这可以通过安全组轻松控制。 “即使你想禁用公共主机名上的所有流量,你也不能。” => 再次,安全组。到目前为止,这些都不是正当理由,或者无论如何都不如 VPC 安全。我听到有人说,哦,你可以在配置安全组时出错。我想说,你可以做同样的配置子网和 NATs @Stewie,安全组确实可以做这些事情。他们在 EC2 中无法做到但在 VPC 中可以做到的一件事是使用拒绝规则阻止特定流量。例如,阻止特定 IP 访问您的公共网络服务器。另外,我不会轻易打折分层安全性。当然,你可以在任何地方犯错,但在 EC2 中,公共互联网只有一个错误,而在 VPC 中你需要几个。 是的,您不能拒绝 IP,但是您可以通过不同的方式在实例级别模仿该功能; IP 表、mod 安全性、第三方 IPS 等分层安全性是如此 2000 ! 2012 年,云时代。我为一家通过 PCI 1 级认证的公司管理运营团队,我们每年处理超过 1000 万美元的信用卡交易,因此我非常重视安全性。当您已经切换到云时,为什么还要模仿传统环境?在我看来,VPC 适合需要向后兼容系统以获得心理利益的人。 我需要 VPC,这样我就可以轻松地将我们的本地网络扩展到云端。如果没有专门控制的地址空间(公共或私有),将我们的本地流量通过 *** 路由到这些实例将非常困难。 这个答案不再正确,特别是因为新的 EC2 实例现在默认分配给 VPC。它们现在一起工作,如果不将实例分配给现有 VPC 或允许亚马逊创建通用的新实例,您就无法实际创建实例。【参考方案2】:

目前 VPC 相对于 EC2 有一些有用的优势,例如:

每个实例多个 NIC 每个 NIC 有多个 IP “拒绝”-安全组中的规则 DHCP 选项 可预测的内部 IP 范围 在实例之间移动 NIC 和内部 IP ***

据推测,Amazon 也将使用其中一些功能升级 EC2,但目前它们仅限于 VPC。

【讨论】:

我发现在 EC2 中精心构建的安全组非常强大——我当然同意 Stewie 的 cmets 对 Christopher 的回答——但正是这些更细粒度的网络控制使 VPC 值得. 补充@Schwartzie 的评论,如果您在云中运行任何类型的许可现场软件(例如AppDynamics),则非常需要NIC 功能。其中许多许可方案需要一致的 MAC 地址。 VPC 中的安全组 (SG) 没有“拒绝”规则,而是有传出规则。同样在 VPC 中,您可以随时将 SG 重新分配给实例。但是,VPC 的 SG 不能引用其他 AWS 账户的 SG。 如果他们将这些(至少一部分)添加到 EC2-Classic 中会很好。有时您不需要整个 VPC。然而,每次您在 EC2-Classic 中进行更改时都必须重新附加 Elastic IP,而不是在 VPC 中,这似乎是一个简单的软件限制。 @rcd 确实如此,但我不会指望对经典 EC2 进行许多更改。亚马逊似乎真的专注于 VPC。我们已经迁移到 VPC。缺少 IPv6 是我唯一的烦恼。新区域的新 AWS 账户或现有账户甚至不能再使用旧的 EC2。旧的 EC2 现在被称为“EC2-Classic”,而现代的 EC2 被命名为“EC2-VPC”。如果他们启动一个新实例,则会自动创建一个“默认 VPC”,Amazon 声称它提供了与 EC2-Classic 相同的易用性。见aws.typepad.com/aws/2013/03/…【参考方案3】:

如果您的应用需要访问 EC2 之外的服务器,例如,VPC 非常有用。如果您有一个托管在您自己的物理数据中心且无法通过 Internet 访问的通用服务。如果您要将所有 Web 和数据库服务器都放在 EC2 上,则没有理由使用 VPC。

【讨论】:

这有点简单。目前,VPC 比 EC2 有更多优势,例如每个实例多个 NIC、每个 NIC 多个 IP、安全组中的“拒绝”规则、DHCP 选项、可预测的 IP 范围等。对我来说,这些远比 *** 重要-to-local-DC 功能。据推测,亚马逊也将使用其中一些功能升级 EC2,但目前它们仅限于 VPC。【参考方案4】:

目前 VPC 是拥有内部负载平衡器的唯一方法

【讨论】:

【参考方案5】:

如果您选择 RDS 来提供数据库服务,您可以配置 DB 安全组 以允许来自给定 EC2 安全组 的数据库连接,那么即使您有动态在您的 EC2 集群中的 IP 地址,RDS 将自动创建防火墙规则以允许仅来自您的实例的连接,在这种情况下会降低 VPS 的优势。

另一方面,当您的 EC2 实例必须访问您的本地网络时,VPS 非常棒,那么您可以在您的 VPS 和本地网络之间建立 *** 连接,控制 IP 范围、子网络,路由和传出防火墙规则,我认为这不是您要寻找的。​​p>

我还强烈建议尝试Elastic Beanstalk,它提供了一个控制台,可以轻松为 php、Java 和 .Net 应用程序设置 EC2 集群,启用 Auto Scaling、Elastic Load Balancer 和自动应用程序版本控制,允许从糟糕的部署中轻松回滚。

【讨论】:

【参考方案6】:

您在这里提出了一个很好的问题。

我想关注成本方面的可行性...

成本因素呢?

我认为您将按小时支付该服务器的费用。即使您选择每月 20 至 50 美元的实例,这也是您将在服务器的剩余生命周期中支付的费用。 *** 服务器是您可以在旧硬件上轻松设置的东西,非常便宜,甚至可以免费用于开源解决方案。

将 *** 添加到现有的 AWS 服务器停放是有意义的,但在 AWS 上设置单独的 *** 服务器则没有意义。我不认为这是最具成本效益的选择,但这只是我的看法。

谢谢,

艾丽莎

【讨论】:

您的个人资料显示为 Alex,但您以 Alisa 的身份签名。哪一个是你?您是机器人还是垃圾邮件发送者?无论如何,不​​要签名 - 您已经有一个个人资料头像,可以告诉每个人您的姓名和有关您的各种其他信息,并为想要了解更多信息的人提供指向您个人资料的链接。

以上是关于我应该使用亚马逊的 AWS 虚拟私有云 (VPC) [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

亚马逊AWS学习——EC2的自己定义VPC配置

AWS 云技术专栏系列文章

vpc 虚拟网络设计之openstack私有云

aws vpc 知识总结(助理级)

如何使用 mySQL 工作台连接到 AWS 私有子网 VPC 中的 RDS

2 个 AWS 区域之间的 VPC 访问