我想知道是否有人可以为我回答问题?
我现在的理解是:
这是正确的吗?还有任何资源可以了解数据包流吗?
答案 0 :(得分:0)
您的描述存在一些明显的问题。
经典ELB不会路由数据包。
它们在第4层(TCP模式)或第7层(HTTP模式)工作,并且在两种情况下,它们都将有效负载从一个TCP连接(浏览器到ELB)复制到另一个TCP连接(从ELB到实例),然后再复制回来。这就是为什么实例看到平衡器的IP地址而不是浏览器的IP地址的原因。 IP数据包位于第4层以下。
NAT网关根本不用于处理ELB流量。
NAT网关用于出站连接,这意味着从VPC内部发起到外部目标的连接。这不包括来自ELB的回复流量。如果没有NAT网关,则通过ELB的流量将像往常一样工作,但是专用子网上的实例无法建立出站连接-与第三方API进行通信,将其时钟设置为外部时间服务器,进行下载软件更新,或与未配置VPC端点的任何AWS服务进行通信,例如S3,DynamoDB等。
路由表几乎是无关紧要的,因为实际使用的唯一路由是ELB本身所在的公共子网上的默认路由。此路由允许答复流量通过Internet网关从ELB返回到外部客户端。其他所有内容都使用内置在VPC中且不可配置的隐式本地路由-来自客户端的入站流量被隐式路由到ELB,并且ELB和实例之间的流量也被隐式路由到两个方向,因为源和目的地IP地址是ELB和实例的内部专用地址。 ELB和实例直接通信,而不使用任何网关设备(例如NAT网关)。
对于所需的每个连接,ELB专门选择一个正常的实例并为其创建连接。平衡器处于TCP模式时,客户端连接和实例连接之间存在1:1的关系。当平衡器处于HTTP模式时,实例连接通常少于客户端连接,因为ELB将仅根据流量建立与实例所需数量的连接,并且客户端连接倾向于花费大量时间不做任何事情,在页面加载之间。