我目前每个集群都有每个 VPC(stg、prd、tst、misc),标准集群(stg、prd)具有以下子网:
- elb:用于接收直接公共交通的公共 elb
- elb-int:用于接收服务到服务通信的内部 elb
- svc:用于应用服务
- db:用于数据库
- dmz:用于 nat 网关、代理等
VPC(标准、珠三角) 10.100.0.0/16 az-1 | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... |編輯 ... | └10.1-0.240.0/20 <保留> 10.101.0.0/16 az-2 | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... | ═ ... |編輯 ... | └10.101.240.0/20 <保留> └10.102.0.0/16 az-3 ═ ... 10.102.16.0/20 elb-int ═ ... ═ ... 10.102.64.0/20 分贝 10.102.80.0/20 DMZ ═ ... 編輯 ... └10.102.240.0/20 <保留>
我知道这个问题很宽泛,就像“视情况而定”之类的问题。但我在网上搜索过,没有找到关于此问题的合理指导。
所以我问了这个问题,想知道系统管理员如何为他们的子网选择策略。请分享你的想法,如果可以的话,请写一小段话来解释你为什么选择这种方法。
答案1
恐怕 ServerFault 并不是一个进行调查或征求基于意见的答案的地方。
无论如何你的设置似乎是太过复杂。
因为在 AWS 中安全和防火墙主要使用安全组如果你有 6 个子网层(如你在问题中描述的那样),或者只有 2每个 VPC- 公立和私立。
资源公有子网如果 SG 规则允许,则具有公共/弹性 IP 并可从互联网访问
例如 - 公共 ELB/ALB、跳转主机等
资源私有子网无法从外部访问并使用 NAT 进行通信
例如 - RDS 集群、ECS 集群、Web 服务器(隐藏在 ELB 后面)等。
你也可以选择无互联网访问的私有子网- 有时用于数据库(RDS),但几乎同样常见的是,它们只是被放入正常的私有子网。
当然你的公共和私人子网层应该跨越几个可用区以实现高可用性,但不要过度。最多使用 2 或 3 个可用区,这通常就足够了,即使在某些地区可以拥有更多。
从技术上来说当然不能跨度跨可用区的子网,但您可以在可用区“a”中拥有 priv-a 172.31.0.0/24,在可用区“b”中拥有 priv-b 172.31.1.0/24,然后在两者之间部署 ELB 和 ASG,并将其视为一个。
请注意,以上所有内容均适用每个 VPC- 通常你会有多个 VPC例如,每个阶段(开发、测试等)一个,甚至多个 AWS 账户每个项目(例如开发和产品) 以更好地区分生产和开发/测试工作负载。
当然,这些都不是硬性规定。有些客户需要更多子网层数或每个 VPC 有更多可用区,但这些都是例外。
对于大多数 VPC 来说,跨 3 个 AZ 的公共子网 + 私有子网就完全没问题。
请记住 -安全组是你的朋友:)