具有多个子网的Amazon EC2 VPC,用于承载计算群集支持的Web应用程序

时间:2014-04-22 16:52:33

标签: amazon-web-services amazon-ec2 subnet amazon-vpc vpc

我一直在尝试使用VPC将Web应用程序设置移植到EC2。该应用程序需要一个可从外部访问的Web服务器,该服务器与管理VPC子网内的数据库和其他数据资源的多个后端服务器通信。除此之外,我还需要一个计算头节点,它应该连接到VPC的另一个子网中托管的EC2工作节点的网格,只能通过头节点访问,头节点应该充当使用NAT的VPC的两个子网之间的路由器。 / p>

基本配置应类似于以下原理图:

-
-  External Connection ----------+
-                                |
-                            Web Server (Externally Facing + VPC Subnet 1)
-                                |
-          +---------------------+-----------------+
-          |                     |                 |
- Data Services Server    Database Server   Compute Headnode
-    (VPC Subnet 1)       (VPC Subnet 1)   (VPC Subnet 1 & 2)
-                                                  |
-                                   +--------------+--------------+
-                                   |              |              |
-                            Worker Node 01  Worker Node 02  Worker Node 03
-                            (VPC Subnet 2)  (VPC Subnet 2)  (VPC Subnet 2)

目前我已经能够配置两个子网并设置所需的EC2节点。

我已在两个子网内设置网络ACL,以防止子网1中的EC2实例通过在两个子网内设置规则直接与子网2内的任何IP通信,如下所示:

子网1:

  • 99 ALL Traffic ALL ALL 10.81.82.0/24 DENY
  • 100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
  • * ALL Traffic ALL ALL 0.0.0.0/0 DENY

子网2:

  • 80 ALL Traffic ALL ALL 10.81.82.0/24 ALLOW
  • 100 ALL Traffic ALL ALL 0.0.0.0/0 ALLOW
  • * ALL Traffic ALL ALL 0.0.0.0/0 DENY

我似乎对此设置的问题是,我没有看到任何明显的方法允许连接到子网1和子网2的计算节点不优先于{{ 1}}子网1的规则超过子网2的10.81.82.0/24 DENY规则。

我已经阅读了Amazon's VPC networking documentation的大多数页面,但是我仍在努力研究如何实现这种分层设置。任何有关正确方向的帮助或指示都会非常感激。

2 个答案:

答案 0 :(得分:0)

您可以在此处使用安全组 将实例与安全组关联并控制实例级别的流量本身以及使用NACL可以使用流量播放的计算节点

此致 开发

答案 1 :(得分:0)

问题已解决。

事实证明,优先问题并非直接归因于网络ACL配置,而是网络配置(在子网安排方面)以及需要设置Web服务器和计算头节点来执行NAT不同的子网。

关于子网安排,通过仔细检查AWS文档,似乎必须建立如下网络:

  • 子网1:用于与Web服务器的外部连接(在我的情况下为10.0.1.0/24)。此子网配置为将0.0.0.0/0路由到Internet网关。
  • 子网2:对于未直接连接到外部连接的计算机,不包括工作节点(在我的情况下为10.0.2.0/24)。此子网配置为将0.0.0.0/0路由到Web服务器上的辅助网络接口(在子网内)。然后,Web服务器被配置为在其10.0.2.0/24和10.0.1.0/24接口之间执行NAT。
  • 子网3:仅适用于工作节点(在我的情况下为10.0.30 / 24)。此子网配置为将0.0.0.0/0路由到Compute Headnode上的辅助网络接口。然后将Compute Headnode配置为在其10.0.3.0/24和10.0.2.0/24接口之间执行NAT。

然后我能够限制这些子网之间的流量,以便使用传入和传出数据的网络ACL按如下方式强制执行NAT层次结构:

  • 子网1:90 ALL Traffic ALL ALL 10.0.2.0/24 DENY91 ALL Traffic ALL ALL 10.0.3.0/24 DENY100 ALL Traffic ALL ALL 0.0.0.0/0
  • 子网2:90 ALL Traffic ALL ALL 10.0.1.0/24 DENY91 ALL Traffic ALL ALL 10.0.3.0/24 DENY100 ALL Traffic ALL ALL 0.0.0.0/0
  • 子网3:90 ALL Traffic ALL ALL 10.0.1.0/24 DENY91 ALL Traffic ALL ALL 10.0.2.0/24 DENY100 ALL Traffic ALL ALL 0.0.0.0/0

由于我想在我的EC2上使用FreeBSD而不是Linux,因此我有一些令人头疼的问题需要设置所需的NAT实例。

我最终在2012年11月的FreeBSD Magazine期刊中找到了一个非常有用的指南。虽然Daemonology.net上详述的最新FreeBSD AMI不再需要其中的一些配置步骤,但基本配置步骤自发布以来未发生变化。

我想任何想要使用Linux AMI for NAT做类似事情的人会觉得这个过程有点容易,但是我没试过,我无法肯定地说。

无论如何,我希望这可以帮助任何有类似问题的人。