在 AWS 中,我们有很多子网,比如公共子网和私有子网。
为了简化问题,我仅指私有子网。
我知道我们可以为所有 AZ 中的私有子网使用单个路由表,或者我们可以在所有 AZ 中为每个私有子网使用多个路由表(每个 AZ 一个)。
我的问题是,设计这个的最佳实践是什么?我应该为每个 AZ 中的子网创建不同的路由表,还是应该为所有 AZ 中的子网创建单个路由表?推荐的方法是什么,推荐的方法有什么优势?
请注意,我问这个的原因是,我已经看到这两种方法都在不同的环境中使用,并试图了解什么是好的方法。
在 AWS 中,我们有很多子网,比如公共子网和私有子网。
为了简化问题,我仅指私有子网。
我知道我们可以为所有 AZ 中的私有子网使用单个路由表,或者我们可以在所有 AZ 中为每个私有子网使用多个路由表(每个 AZ 一个)。
我的问题是,设计这个的最佳实践是什么?我应该为每个 AZ 中的子网创建不同的路由表,还是应该为所有 AZ 中的子网创建单个路由表?推荐的方法是什么,推荐的方法有什么优势?
请注意,我问这个的原因是,我已经看到这两种方法都在不同的环境中使用,并试图了解什么是好的方法。
最终这取决于您自己的要求,但是这里有几点需要考虑。
公共子网
您的任何公共子网是否有独特的不同?如果它们在许多人遵循的模式中都相同(每个 AZ 一个公有子网),那么您可能会发现为您的公有子网设置一个路由表会更简单。由于 Internet 网关具有高可用性,并且 VPC 只能连接一个,因此如果它们都相同,则为每个子网添加路由表只会增加复杂性。
私有子网
要考虑的第一个因素是,您的所有私有子网是否都能够访问互联网。如果您有特定的子网应该和不应该的子网,您会希望将它们的路由分开。请记住,互联网将需要与第三方 API 交互或修补系统。
对于那些需要互联网的私有子网,您需要使用 NAT 设备(NAT 网关或NAT 实例)。通常最佳做法是让每个 AZ(不是子网)拥有自己的 NAT 设备,这样可以防止其他 AZ 中的设备在 NAT AZ 遇到问题时无法连接到 Internet。
在这种情况下,您将考虑为每个可用区创建一个路由表,然后根据需要将子网绑定到正确的路由表。
VPC 到网络通信
最后要考虑的事情是您的 VPC 与外部网络(无论是在 AWS、其他云提供商甚至本地)通信。
如果您要连接到外部源,则需要了解该外部源是否应该能够与每个子网通信(反之亦然),或者是否只有一个特定范围可以通信)。
如果您只想让特定子网能够与外部源通话,那么您应该考虑这些子网的路由表,并考虑上述部分。
概括
总之,有几个因素决定了您创建的路由设置。
考虑到这些,首先安全性通常是最高的因素(不允许不需要的通信)但也要考虑这些的管理。如果您有 100 个子网,其中 90 个是私有的且具有相同的路由,则创建所需的最少路由表数。如果需求发生变化,您可以在需要时更改它们。