nginx – 什么是直通负载均衡器?它与代理负载均衡器有什么不同?

Google Cloud Network负载均衡器是直通负载均衡器,而不是代理负载均衡器. (https://cloud.google.com/compute/docs/load-balancing/network/).

在通过LB时我找不到任何一般资源. HAProxy和Nginx似乎都是代理LB.我猜测通过LB将直接将客户端重定向到服务器.在什么情况下它会有益?

除了传递和代理之外还有其他类型的负载均衡器吗?

最佳答案
很难找到传递负载平衡的资源,因为每个人都想出了一种不同的调用方式:传递,直接服务器返回(DSR),直接路由,……

我们在这里称之为传递.

让我试着解释一下:

> IP数据包未经修改转发到VM,没有地址或端口转换.
> VM认为负载均衡器IP是其自己的IP之一.

在计算引擎网络负载平衡https://cloud.google.com/compute/docs/load-balancing/的特定情况下:对于Linux,这是通过在网络接口上添加辅助IP在“本地”路由表Windows中添加到此IP的路由来完成的.
>路由逻辑必须确保TCP连接或UDP“连接”的数据包始终发送到同一个VM.

对于GCE网络LB,请参见此处https://cloud.google.com/compute/docs/load-balancing/network/target-pools#sessionaffinity

关于其他负载均衡器类型,不能有明确的列表,这里有几个例子:

> NAT. iptables的一个例子是https://tipstricks.itmatrix.eu/use-iptables-to-load-balance-web-trafic/.
> TCP代理.在Google Cloud Platform中,您可以使用TCP代理负载平衡https://cloud.google.com/compute/docs/load-balancing/tcp-ssl/tcp-proxy
> HTTP代理.在Google Cloud Platform中,您可以使用HTTP(s)负载平衡https://cloud.google.com/compute/docs/load-balancing/http/
> DNS,称为“DNS转发器”.例如:dnsmasq http://www.thekelleys.org.uk/dnsmasq/doc.html,或以“转发”模式https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-caching-or-forwarding-dns-server-on-ubuntu-14-04绑定
>数据库通信协议.例如,带有https://github.com/mysql/mysql-proxy的MySQL协议
> SIP协议.这里的实施清单https://www.voip-info.org/wiki/view/Open+Source+VOIP+Software#SIPProxies

至于传递优于其他方法的优点:

>如果IP数据包上的地址发生变化,某些应用程序将无法运行或需要进行调整,例如SIP协议.有关与NAT https://en.wikipedia.org/wiki/Network_address_translation#NAT_and_TCP/UDP不兼容的应用程序的更多信息,请参阅Wikipedia.

这里的优势传递是它不会改变源IP和目标IP.

请注意,在较高层工作的负载均衡器有一个技巧可以保留IP:负载均衡器在连接到后端时会欺骗客户端的IP.在撰写本文时,没有负载平衡产品在计算引擎中使用此方法.
>如果您需要更多地控制来自客户端的TCP连接,例如调整TCP参数.这是通过TCP或(或更高层)代理的直通或NAT的优点.

转载注明原文:nginx – 什么是直通负载均衡器?它与代理负载均衡器有什么不同? - 代码日志