Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

請教關於「高并发的哲学原理(五)」中 TCP 連線建立的問題 #22

Open
Arcovv opened this issue May 27, 2023 · 2 comments

Comments

@Arcovv
Copy link

Arcovv commented May 27, 2023

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 的地址嗎?

感謝🙏

@johnlui
Copy link
Owner

johnlui commented May 28, 2023

负载均衡器在 DR 和 TUN 模式下,是不会改变 client 的地址的,在 kong 看来就是真实的客户端在和它进行网络通信。

而 NAT 模式下的负载均衡,本质上已经是一个网关了。

如果套到 k8s 下面,典型的 k8s 架构其实拥有三层网关:k8s 集群前面的负载均衡网关,ingress 网关,sidecar 流量代理,这三层的典型运行方式都是网关模式。

@johnlui
Copy link
Owner

johnlui commented May 28, 2023

网关的定义:如果两边不是同一个子网,则这个东西就是个网关。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants