我正在尝试了解 HAProxy 中的负载平衡如何工作,以便进行一些容量规划。那么哪种方式才是 HAProxy 负载平衡的正确工作方式?
场景 A:客户端的请求被发送到 HAProxy,Haproxy 将请求转发到可用的 Web 服务器,在本场景中为 Webserver1。Webserver1 响应请求并将请求的页面直接返回到客户端的浏览器。
场景 B:客户端的请求被发送到 HAProxy,Haproxy 将请求转发到可用的 Web 服务器,在本场景中为 Webserver2。Webserver2 通过将页面发送回 HAProxy 来响应请求,HAProxy 将请求传递回客户端的浏览器。
另外,这个设置能起作用吗?HAPRoxy 中面向 Internet 的 NIC 使用公共 IP,而 HAProxy 的内部 NIC 使用私有 IP,webserver1 和 webserver2 也是如此。它们都使用私有 IP。
最后一个问题。除了 Round Robin 之外,HAProxy 还支持哪种负载平衡方案?我想要实现的是,当客户端第一次连接到 webserver1 时,我希望为该客户端保留该连接,直到会话过期或终止。关于如何实现这一点,有什么建议吗?
请指教?
非常感谢您的所有建议。
答案1
场景 B。HAProxy 创建与后端的 TCP 连接以发送客户端的请求,后端响应 HAProxy,然后 HAProxy 将请求发送到客户端。客户端从未与后端建立 TCP 连接,因此它们之间不可能直接通信。
另外,这个设置能起作用吗?HAPRoxy 中面向 Internet 的 NIC 使用公共 IP,而 HAProxy 的内部 NIC 使用私有 IP,webserver1 和 webserver2 也是如此。它们都使用私有 IP。
是的,这可行。
除了 Round Robin 之外,HAProxy 还支持哪种负载平衡方案?我想要实现的是,当客户端首次连接到 webserver1 时,我希望为该客户端保留该连接,直到会话过期或终止。关于如何实现这一点,有什么建议吗?
你正在寻找的是粘性会话,请参阅这个问题举个例子。