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

标签 nginx proxy google-cloud-platform load-balancing haproxy

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

在通过 LB 时,我一般找不到任何资源。 HAProxy 和 Nginx 似乎都是代理 LB。我猜想通过 LB 会将客户端直接重定向到服务器。在什么场景下会有用?

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

最佳答案

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

我们在这里称其为直通。

让我试着解释一下:

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

    在 Compute Engine 网络负载平衡的特定情况下 https://cloud.google.com/compute/docs/load-balancing/ :对于 Linux,这是通过在“本地”路由表中添加到此 IP 的路由来完成的,Windows 通过在网络接口(interface)上添加辅助 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 ,或以“转发”模式绑定(bind)https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-caching-or-forwarding-dns-server-on-ubuntu-14-04
  • 数据库通信协议(protocol)。例如 MySQL 协议(protocol) https://github.com/mysql/mysql-proxy
  • SIP 协议(protocol)。此处的实现大列表https://www.voip-info.org/wiki/view/Open+Source+VOIP+Software#SIPProxies

  • 至于直通相对于其他方法的优势:
  • 如果 IP 数据包上的地址发生变化,某些应用程序将无法工作或需要进行调整,例如 SIP 协议(protocol)。有关与 NAT 不能很好配合的应用程序的更多信息,请参阅 Wikipedia https://en.wikipedia.org/wiki/Network_address_translation#NAT_and_TCP/UDP .

    此处传递的优势在于它不会更改源 IP 和目标 IP。

    请注意,在更高层工作的负载均衡器有一个技巧来保留 IP:负载均衡器在连接到后端时会欺骗客户端的 IP。在撰写本文时,没有任何负载平衡产品在 Compute Engine 中使用此方法。
  • 如果您需要对来自客户端的 TCP 连接进行更多控制,例如调整 TCP 参数。这是通过 TCP(或更高层)代理的直通或 NAT 的优势。
  • 关于nginx - 什么是直通负载均衡器?它与代理负载均衡器有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43205917/

    相关文章:

    nginx - 服务器域返回 502 Bad Gateway - Nginx

    proxy - 在录制期间无法让 JMeter 对站点进行身份验证

    C 客户端-代理-服务器文件传输仅发送文件的一部分

    java - 未授权连接(五)——MQTT google cloud IOT

    dns - DNS 更改后 Nginx 出现问题

    php - Nginx + PHP : stop process at canceled request

    google-cloud-platform - 将 GCP Cloud IAM 自定义角色的访问权限限制为仅存储桶

    postgresql - PostGIS 已安装在 Cloud SQL 中,但找不到 PostGIS_full_version()

    nginx url 重写与代理传递示例?

    ssl - 代理隧道失败 : Invalid request -- HOST header was not sent Unable to establish SSL connection