【发布时间】:2011-12-15 06:28:45
【问题描述】:
我们正在开发一个使用 haproxy 负载平衡的 HTTP Web 服务。通过 SSL 访问 Web 服务。它是一个 RESTful HTTP 服务,只接受 JSON,做一些工作,然后返回 JSON。没有会话的概念。
我们在一对冗余 Web 服务服务器前设置了冗余负载平衡器。每台服务器都位于 Apache 后面,其中 Apache 用作代理以处理 SSL 和日志记录。如果重要的话,我们的 web 服务是一个 Clojure (java) 应用程序,它使用 compojure (jetty) 来处理 HTTP。
这是一个简短的图表,显示了客户请求通过我们现有系统的路径。
client request -> haproxy (load balancing) -> apache (ssl, logging) -> webservice
我们希望与负载平衡器的任何连接都建立一个持久连接,然后由同一台服务器为通过该持久连接发送的所有后续请求提供服务。换句话说,我们不希望 haproxy 的持久连接向多个 Web 服务服务器发出请求。
您会建议我们如何进行这项工作?我们如何将给定的负载均衡器连接“固定”到特定的 Web 服务服务器?我们如何防止意外加载多个密集请求的特定 Web 服务服务器?
【问题讨论】:
标签: web-services keep-alive haproxy persistent-connection