請教關於「高并发的哲学原理(五)」中 TCP 連線建立的問題
https://github.com/johnlui/PPHC/blob/main/05.%20%E6%8B%86%E5%88%86%E7%BD%91%E7%BB%9C%E5%8D%95%E7%82%B9(%E4%B8%8A)%EF%BC%9A%E5%BA%94%E7%94%A8%E7%BD%91%E5%85%B3%E3%80%81%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%92%8C%E8%B7%AF%E7%94%B1%E5%99%A8(%E7%BD%91%E5%85%B3)/README.md#kong-%E7%BD%91%E5%85%B3%E9%9C%80%E8%A6%81%E5%BB%BA%E7%AB%8Btcp-%E8%BF%9E%E6%8E%A5
在前面是負載均衡的情況下,負載均衡向上游的 kong 網關發送了數據,那麼 IP 已經變成「源地址 10.0.0.100,目的地址 10.0.0.1」這個我理解。
那在這個情況下:
Kong 网关需要建立“TCP 连接” Kong 网关需要真的和客户端“建立 TCP 连接”:
kong 網關是怎麼在不知道 client 端 IP 的情況下與 client 進行 TCP 連線的呢?它不是只能與負載均衡器進行連結嗎?就像在 k8s 中,如果不對 service 進行一些設定,pod 中只能知道 request 的源地址其實是 service 的地址嗎?
感謝🙏
负载均衡器在 DR 和 TUN 模式下,是不会改变 client 的地址的,在 kong 看来就是真实的客户端在和它进行网络通信。
而 NAT 模式下的负载均衡,本质上已经是一个网关了。
如果套到 k8s 下面,典型的 k8s 架构其实拥有三层网关:k8s 集群前面的负载均衡网关,ingress 网关,sidecar 流量代理,这三层的典型运行方式都是网关模式。
网关的定义:如果两边不是同一个子网,则这个东西就是个网关。