我们正在使用haproxy负载平衡HTTP Web服务。 Web服务通过SSL访问。 这是一个RESTful HTTP服务,只是接受JSON,做了一些工作,并返回JSON。 没有会议的概念。
我们在一对冗余的Web服务器服务器前设置了冗余的负载均衡器。 每个服务器都位于Apache之后,Apache用作代理来处理SSL和日志logging。 如果它很重要,我们的web服务是一个Clojure(Java)应用程序使用compojure(jetty)来处理HTTP。
这是通过我们现有系统显示客户请求path的简图。
client request -> haproxy (load balancing) -> apache (ssl, logging) -> webservice
我们希望与负载平衡器的任何连接build立一个持久连接,然后由同一个服务器为通过该持久连接发送的所有后续请求提供服务。 换句话说,我们不希望持久连接haproxy向多个webservice服务器发送请求。
你会如何build议我们这个工作? 我们如何将一个给定的负载均衡器连接“绑定”到一个特定的Web服务器? 我们如何防止意外加载具有多个密集请求的特定Web服务服务器?
您正在寻找HAProxy的cookie指令,这将确保客户端坚持相同的后端。
至于避免重载给定的后端,您将完全依赖于初始负载平衡 – 将客户端移动到不同的服务器中间会话不符合负载平衡器强制的会话持久性。 如果负载问题是一个大问题,那么也许应该重新考虑让HAProxy做会话持久性,而不是在后端保持一个集中的会话状态?
在defaults块中使用balance source ,以及删除option httpclose条目诀窍。