私有和公有子网有什么区别?

为了学习的目的,我试图在AWS中设置一个公共/专用的VPC, 而不使用向导,我试图确定AWS如何决定子网是私有的还是公共的。

为了说明起见,假设我在vpc 1 ig,2个路由表,2个elbs,4个实例,4个子网和2个可用区域中都有。

[ ig, routepub, routepriv (default), elbpub, elbpriv, { az1: [ subnet1pub: { range: "10.0.0.0/25", instances: [ instance1pub ] }, subnet1priv: { range: "10.0.1.0/25", instances: [ instance1priv ] } ] }, { az2: [ subnet2pub: { range: "10.0.0.128/25", instances: [ instance2pub ] }, subnet2priv: { range: "10.0.1.128/25", instances: [ instance2priv ] } ] } ] 

我有stream量从更大的互联网到elbpub ,然后在我的可用性区域平衡到instance1pubinstance2pub 。 我在instance1privinstance2priv上有一些内部的应用程序(比如说一个数据库或者其他的东西),只有instance1pubinstance2pub可以访问,通过elbpriv来平衡elbpriv

当我尝试设置这个时,我被告知必须将面向互联网的ELB附加到公共子网。 那么,AWS如何决定子网是公有还是私有?

更具体地说,我知道私人意味着它必须经过一个NAT,而公共的意味着它通过IG,但是如何build立和/或连接我的路由表/安全组来反映这个,以便让我得到公共交通进入我的公共elb?

私有子网和公有子网之间的唯一区别是,后者与由子网的路由表条目build立的Internet网关连接[例如:10.0.10.0/24 ig-abcdef12]。

因此,在您的示例中,您可以将ELB放置在Public Subnet中的Instances之前。 为了logging,您还可以创build一个内部负载平衡器[用于公共子网中的Web服务器等场景与ELB所面向的App Server完全内部的VPC – 私有子网对话]