使用 HAProxy 和 Node.js 这样的应用服务器实现 DSR 的示例方法是什么?我读过一些有关该主题的文章,但是我不太明白当客户端首先连接到负载均衡器时,节点服务器如何直接响应请求。
...除非有一些较低级别的虚拟接口代理正在进行。
DSR 无法通过 HAProxy 完成,因为 HAProxy 是反向代理。 HAProxy 确认客户端 TCP 连接,然后创建一个到转发请求的服务器的新 TCP 连接。 服务器无法直接回复客户端,因为它不知道客户端 TCP 连接。
如果要实现DSR模式,必须使用LVS,LVS有专门用于此目的的模块。
巴蒂斯特
我有理由相信这是可能的,因为 HAProxy Technologies 的 ALOHA 设备(在内部运行 HAProxy)确实正式支持 DSR 模式。 不过,我还是不明白他们是怎么做到的。
他们甚至还有关于如何设置后端服务器以使用此模式的技术应用说明。 请参阅:http://www.haproxy.com/static/media/uploads/eng/resources/aloha_load_balancer_appnotes_0053_server_configuration_for_layer4_dsr_mode_en.pdf
不幸的是,本文档没有说明 HAProxy 本身是如何配置的。 还在挖!
请参阅此处:https://docs.haproxy.org/3.0/configuration.html#4.2-source
基本上你会:
backend transparent_ssl1
source 192.168.1.200 usesrc client
其中
192.168.1.200
是健康检查的IP。但请注意,您可能还需要配置连接跟踪以免感到不安。
正如上面 Baptiste 所解释的,haproxy 无法将 DSR 作为其反向代理,在 aloha 的情况下,您可以禁用反向代理模式,在这种情况下,使用 Linux 的 LVS 功能作为可用于 DSR 的 l4 负载均衡器。