我们正在使用HAProxy来平衡我们的websocket和comet应用程序。 有一个HAProxy和3个应用程序在后面运行。 我们使用HTTP基本身份validation(我们将在未来使用其他types的身份validation,如OAuth)来识别连接的用户。
我们不能使用常规循环,因为给定用户的连接最终在同一台服务器上是非常重要的。 在哪里并不重要,但重要的是他们使用相同的服务器。
我知道HAProxy是一种基于cookie的智能方法,但不幸的是,在我们的情况下,有时候,同一个用户将被连接到不同的机器上,所以cookie不能工作)。
是否可以使用HTTP授权标头的哈希来执行负载平衡? 另外,这个更复杂,是否可以定义我们自己的哈希方法?
跟进问题[威利回应之后]:
既然可以做到balance hdr(Authorization) ,那么只能在login字段(parsing后)才能做到这一点吗?
另外,什么是确切的algorithm? 我相信它的forms是hash(Authorization) % number_of_backend_server ,但是,什么是散列函数,更重要的是,它是可调整的? (或者我可以添加一个偏移量)。
我问,因为这个应用程序实际上是一个XMPP组件连接打开,我需要负载平衡XMPP组件与相同的algorithm。 XMPP节中的jid由HTTP Header Authorization确定。
是的,你可以很好地散列你select的头。 只需使用“balance hdr(header_name)”。 我必须说我从来没有想过这样做。 在某些环境中,这确实是非常有用的。 如果可以帮忙的话,你也可以散列URL参数或POST参数。
但是你不能定义你的散列方法。 你可以select散列是基于地图还是一致的,但是这一切。