我想为5个Web服务器设置一个反向代理。 反向代理接收到的所有请求都将在http请求查询string中具有唯一标识(UID)。 我有一个包含UID – > Web服务器映射的数据库。
我不确定这是否合理。 我想要反向代理执行以下操作:1.请求进来2.检查UID的caching,如果没有find从数据库加载它3.转发请求到适当的Web服务器
仅供参考 – 我无法将服务器ID编码到UID中,因为映射可能会更改,但uid不会。
像perlbal或其他工具是这样的可能吗? 我不介意如果我需要做一些脚本来做到这一点。 我只是不确定我的select是什么或者其他人做了什么来解决这个问题。
任何input是非常感谢!
你正在寻找的是一个负载平衡器。 您可以从Citrix和Foundry(我们都有)等公司购买硬件负载均衡器,或者您可以configurationApache服务器来执行此操作。
如果你的后端服务器是tomcat,我会看看我已经做了代理typesconfiguration的mod_ajp。
有关常规HTTP代理负载平衡器的configuration详细信息,您可以在此处获取更多信息: http : //httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html
您可能会find适合您的特定操作系统和/或产品的一些很好的教程。 至于会话逻辑,您可能必须在应用程序中处理会话,将会话存储在中央数据库中,但听起来您已经在前往该路线。
根据您使用的平台,这可以完成,但有一个大的捕获。
对于IIS你有ISAPI_Rewrite,对于Apache你有mod_rewrite。 两者都会做你以后的事情,但据我所知,他们不能dynamic地检索他们的映射。 他们从文本文件中读取他们的设置。
你可以做什么(这是我所做的),就是创build一个与数据库接口的小程序,每当logging被改变时,重写器的文本文件就被重新编译。 当下一个请求通过时,重写引擎加载最新的版本,这一切都很好。
一般来说,更新logging时会有大约0.5秒的延迟。 不是即时的,但通常足够接近networking工作。
这只是一个理论,但它应该工作。 你可以用apaches mod_rewrite RewriteMap使用简单的应用程序来进行重写。 根据UID将每个请求重写为server1.example.com,然后将该url用于mod_proxy。
Apache感觉有点沉重,用作反向代理,也许你可以用varnish或nginx做同样的事情?