我在 2 个连接到同一个 MySQL 后端数据库的 tomcat 前面有一个 Apache Web 服务器。
我需要根据名为“projectid”的 URL 参数对两个 tomcat 之间的传入请求进行负载平衡。例如,所有偶数项目 ID 可能由 tomcat 1 提供,奇数请求由 tomcat 2 提供。
这是必需的,因为用户可能会在 tomcat 2 不知道的 tomcat 1 项目中启 Action 业,并且这些作业当前未存储在数据库中。
有没有办法使用 mod-proxy-load-balancing 来实现这一点?
最佳答案
我不知道这样的加载算法已经存在。但是,请记住,最常见的负载平衡结果(尤其是当您显然拥有服务器端状态时)是一个粘性 session :您只是在平衡初始请求。之后,所有请求通常都定向到同一台服务器。
我通常建议不要分发 session 数据,因为它会给每个请求增加一些通常不必要的性能影响,抵消了您可以通过集群获得的改进性能。不过,这可能会在实际安装中发生变化,这只是第一条经验法则。
您也许可以使用 mod-proxy-load-balancing 创建您自己的负载均衡算法(您需要在配置文件中配置该算法),但我相信您的时间最好花在修复您的实现上,或者实现用于检查所有集群机器是否正在运行作业的业务特定逻辑。
关于基于 URL 模式的 Apache HTTP 负载均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18766567/