windows – 具有基于标头的路由的HTTP负载均衡器?

我正在寻找一个HTTP负载平衡解决方案,它将提供以下内容

1)接受端口X上的HTTP连接,并将它们随机或以循环方式转发到多个其他主机(和/或端口)中的一个.

2)如果服务器回复包含具有特定值的某个HTTP标头(即’Magic-Number:12345′),请记住它并将包含相同标头的所有后续请求转发到此服务器.

3)在一定的时间间隔内,通过向所有目标服务器发送指定的HTTP请求来执行保持活动测试.如果任一服务器没有回复,请停止转发,直到它再次联机.

4)(并不重要,但很高兴)接受来自客户端的HTTPS连接并将它们转换为与服务器的HTTP连接.

解决方案必须包含免费和/或开源软件,并在Windows 200x Server下运行.

有什么建议?

更新:Cygwin或Portable Ubuntu(或其他Colinux发行版)也是可行的选择,如果他们能够运行适当的* nix解决方案.

因为我手边没有任何东西可以验证它是否正常工作,所以我正在写这篇文章,但我希望这可能会给你一些暗示.

所以,我的答案是:

当然你可以用Apache的mod_proxy_balancer来做到这一点.你应该可以用这样的东西来完成这个:

ProxyPassReverse / http://host1:80/
ProxyPassReverse / http://host2:80/

<Proxy balancer://cluster>
  BalancerMember http://host1:80 route=LB1
  BalancerMember http://host2:80 route=LB2
  ProxySet stickysession=MYSESSIONID
</Proxy>

因此,关于第1点,请阅读mod_proxy_balancer的“请求计数算法”部分.

关于第2点:我真的不知道HTTP头解析.上面的示例使用额外的URL参数MYSESSIONID来代理作为同一主机的同一连接的一部分的流量.我想你也可以使用cookies.无论如何,这应该由标识为LB1或LB2的应用程序处理(这些是作为会话ID或cookie的一部分添加的).

Re 3:负载均衡器监视其所有成员,并在它们没有响应时禁用它们.您还可以通过Web界面启用/禁用节点(mod_status,请参阅“启用Balancer Manager支持”).

对于第4点,您可以在端口443上设置启用SSL的VirtualHost监听,该端口代理所有流量到达平衡器成员端口80的流量.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...