负载平衡体系结构:粘性会话和dynamic后端

我正在努力寻找特定负载平衡要求的解决scheme。 看来,HAProxy,Nginx,Varnish和Apache的mod_proxy_balancer的各种组合可以做一些,但不是我们所需要的一切。 我的问题是,是否有人可以build议一个合适的configuration(可能包括我们可能没有考虑过的软件,但它将需要自由和开放源码软件)。

关键的要求是,不幸的是,粘滞的会议。 我们有一个大的,复杂的Tomcat应用程序,有点滥用HTTP会话,并利用相同的框架。 转换到无状态devise或复制会话都被调查和打折。 此外,粘性必须基于cookie而不是IP哈希值,因为我们有来自企业客户端的大量高峰,其中成千上万的用户可能同时从相同的IP地址同时访问该站点。

第二个最重要的要求是dynamic后端。 这个应用程序运行在一个(而不是AWS)和应用程序服务器来回时间基于自动或手动缩放。

第三,我们需要能够将服务器标记为“静止”,以便继续履行现有会话,但不会交付新的服务器。 当所有当前会话结束时,服务器可以closures或升级/重新启动。

还有一些额外的复杂性/要求,但它符合上述三个似乎是最难的。

从目前的研究来看,我认为以下的说法是正确的:

  • Nginx / Varnish不能满足粘滞会话要求(基于cookie),但HAProxy和Apache可以
  • HAProxy不能在没有重新启动的情况下进行dynamic后端修改(如果速度很快,可能会好起来)。 Varnish可以用一些VCL的变化和一个HUP,Nginx也可以用一些创造性的configuration文件pipe理,我想。 Apache可能通过一个pipe理界面来处理这个mod_proxy_balancer ..?
  • 我不确定他们中的任何一个能够如何处理第三个要求

真的很感激任何指针或见解。

使用HAProxy,您可以添加所有可能的后端服务器,然后使用pipe理页面/套接字调用将它们打开和closures(硬或软)。

这不符合你的要求?