AWS VPC 的良好子网策略是什么?

roc*_*cer 3 subnet amazon-web-services amazon-vpc sysadmin

我目前每个集群(stg、prd、tst、misc)都有每个 VPC,标准集群(stg、prd)有以下子网:

  • elb:用于将接收直接公共交通的公共 elb
  • elb-int:用于将接收服务到服务通信的内部 elb
  • svc:用于应用服务
  • db:用于数据库
  • dmz:用于 nat 网关、代理等
VPC(stg,prd)
?10.100.0.0/16 az-1
| ?10.100.0.0/20 elb
| ?10.100.16.0/20 elb-int
| ?10.100.32.0/20 svc
| ?10.100.48.0/20 svc
| ?10.100.64.0/20 分贝
| ?10.100.80.0/20 dmz
| ?10.100.96.0/20 <保留>
| ? ...
| ?10.1-0.240.0/20 <保留>
?10.101.0.0/16 az-2
| ?10.101.0.0/20 elb
| ?10.101.16.0/20 elb-int
| ?10.101.32.0/20 svc
| ?10.101.48.0/20 svc
| ?10.101.64.0/20 分贝
| ?10.101.80.0/20 dmz
| ?10.101.96.0/20 <保留>
| ? ...
| ?10.101.240.0/20 <保留>
?10.102.0.0/16 az-3
   ?10.102.0.0/20 elb
   ?10.102.16.0/20 elb-int
   ?10.102.32.0/20 svc
   ?10.102.48.0/20 svc
   ?10.102.64.0/20 分贝
   ?10.102.80.0/20 dmz
   ?10.102.96.0/20 <保留>
   ? ...
   ?10.102.240.0/20 <保留>

我知道这个问题很广泛,比如“这取决于情况”有点问题。但是我在互联网上搜索并没有找到任何明智的指导方针。

所以我问这个问题是为了了解系统管理员如何为其子网选择策略。请分享您的观点,如果可以,请发表一个简短的声明,解释您选择这种方法的原因。

MLu*_*MLu 5

恐怕 ServerFault 不是进行调查或征求基于意见的答案的地方。

无论如何,您的设置似乎过于复杂

因为在 AWS 安全和防火墙中主要使用安全组完成,所以如果您有 6 个子网层(如您在问题中描述的那样)或每个 VPC只有 2个子网层( Public 和 Private )并不重要。

  • 如果 SG 规则允许,公共子网中的资源具有公共/弹性 IP,并且可以从 Internet 访问

    例如 - 公共 ELB/ALB、跳转主机等

  • 私有子网中的资源无法从外部访问并使用 NAT 进行通话

    例如 - RDS 集群、ECS 集群、Web 服务器(隐藏在 ELB 后面)等。

  • 或者,您可以拥有没有互联网访问权限的私有子网- 这有时用于数据库 (RDS),但几乎同样经常将它们简单地放入普通的私有子网中

当然,您的公共和私有子网层应该跨越几个可用区以实现高可用性,但不要过度最多使用 2 或 3 个可用区,这通常就足够了,即使在某些地区您可以拥有更多可用区。

当然,从技术上讲,您不能AZ跨越子网,但您可以在 AZ“a”中使用 priv-a 172.31.0.0/24,在 AZ“b”中使用 priv-b 172.31.1.0/24 并在两者之间部署 ELB 和 ASG并将其视为一个。

请注意,以上所有内容都适用于每个 VPC - 通常您会有多个 VPC,例如。每个阶段(开发、测试、..)一个,甚至每个项目有多个 AWS 账户(例如devprod),以便在生产和开发/测试工作负载之间实现更大的分离。

当然,这些都不是硬性规定。某些客户端需要每个 VPC 有更多子网层或更多可用区,但这些是例外。

对于大多数 VPC,跨 3 个可用区的公共 + 私有子网完全没问题。

请记住 -安全组是您的朋友 :)