Jul*_*oux 8 load-balancing http-headers haproxy socket
我们正在使用 HAProxy 来平衡我们的 websocket 和 Comet 应用程序。后面有一个 HAProxy 和 3 个应用程序在运行。我们使用 HTTP 基本身份验证(将来我们将使用其他类型的身份验证,如 OAuth)来识别连接的用户。
我们不能使用常规循环,因为给定用户的连接最终在同一台服务器上很重要。在哪里并不重要,但重要的是他们使用相同的服务器。
我知道 HAProxy 是一种基于智能 cookie 的方法,但不幸的是,在我们的例子中,有时,同一用户会从不同的机器连接,所以 cookie 不起作用)。
是否可以使用 HTTP Authorization 标头的散列来进行负载平衡?另外,这更复杂,是否可以定义我们自己的散列方法?
后续问题[在威利的回应之后]:
既然可以做balance hdr(Authorization)
,是否可以只在登录字段上做(解析后)?
另外,确切的算法是什么?我相信它的形式是hash(Authorization) % number_of_backend_server
,但是,散列函数是什么,更重要的是,它是否可以调整?(或者我可以添加一个偏移量)。
我问是因为这个应用程序实际上是保持 XMPP 组件连接打开,我需要使用相同的算法对 XMPP 组件进行负载平衡。to
XMPP 节中的jid 由 HTTP 标头授权确定。
Wil*_*eau 10
是的,您可以很好地散列您选择的任何标头。只需使用“平衡 hdr(header_name)”。我必须说我从来没有想过这样做。在某些环境中,它确实非常有用。如果有帮助,您还可以对 URL 参数或 POST 参数进行哈希处理。
但是,您无法定义散列方法。您可以选择散列是基于地图还是一致的,仅此而已。