AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 23178
Accepted
Anders Sandvig
Anders Sandvig
Asked: 2009-06-11 00:20:47 +0800 CST2009-06-11 00:20:47 +0800 CST 2009-06-11 00:20:47 +0800 CST

具有基于标头的路由的 HTTP 负载平衡器?

  • 772

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

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

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

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

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

该解决方案必须由免费和/或开源软件组成,并在 Windows 200x Server 下运行。

有什么建议么?

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

windows http load-balancing proxy http-headers
  • 6 6 个回答
  • 6655 Views

6 个回答

  • Voted
  1. Antoine Benkemoun
    2009-06-11T01:54:38+08:002009-06-11T01:54:38+08:00

    我知道这不适用于 Windows,但无论如何我都会回答,因为我认为在您的设置中查看这个替代方案会非常有趣。

    HAProxy是一个 HTTP 代理(并且可以代理任何其他内容,但将在第 4 层及以下)。它几乎可以完成您希望它做的所有事情。文档不是很漂亮,但是如果您真的花时间阅读它,您会发现它包含您需要的所有信息。

    它几乎可以在任何东西上运行,因此除非您使用大量 SSL,否则您不需要购买又大又贵的机器。

    • 2
  2. SaveTheRbtz
    2009-06-16T07:40:10+08:002009-06-16T07:40:10+08:00

    我使用 nginx 已经有几年了,对它非常满意。

    nginx(发音为“engine X”)是一个轻量级、高性能的 Web 服务器/反向代理和电子邮件 (IMAP/POP3) 代理,在类似 BSD 的许可证下获得许可。

    它擅长负载平衡和反向代理。在此处查看示例

    • 2
  3. Best Answer
    therek
    2009-06-11T01:12:25+08:002009-06-11T01:12:25+08:00

    我把它写在我的脑海/记忆中,因为我手头没有任何东西来验证它是否正常工作,但我希望这可能对你有一些提示。

    所以,我的回答是:

    当然,您可以使用 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 点,您可以设置启用 SSL 的 VirtualHost 侦听端口 443,将所有流量代理到平衡器成员端口 80。

    • 1
  4. Mahesh Neelakanta
    2012-02-09T19:02:28+08:002012-02-09T19:02:28+08:00

    查看基于 HTTP Header 的 LB 的 Pound Load Balancer:

    • http://www.apsis.ch/磅
    • 1
  5. user68062
    2011-01-25T10:22:29+08:002011-01-25T10:22:29+08:00

    我过去在 Unix 环境中使用 Apache 和 mod_cache。它在用户负载较低的情况下运行良好,但在负载较重的日子里,系统一整天都在停机。

    经过一些测试后,我们转移到了 Varnish Cache,现在一切都变得更好了。

    问题是只支持Unix环境,新的varnish windows cygwin-based版本存在,但我现在不适合生产环境:

    • http://varnish-cache.org/trac/wiki/VarnishOnCygwinWindows
    • 0
  6. Sam_Jongenelen
    2013-05-08T06:04:20+08:002013-05-08T06:04:20+08:00

    我想说这对于 IIS 7 也是可能的,结合使用 URL 重写和网络负载平衡。基础是

    • 使用 NLB 在多个主机上分配流量
    • 使用 IIS 的 URL Rewrite 根据标头编写重写规则。
    • 0

相关问题

  • 您最喜欢的云计算提供商是什么?[关闭]

  • Vanilla Powershell 是否足以成为 Windows 和 DB 服务器管理员的语言?

  • 为什么添加新驱动器后我的磁盘驱动器访问速度如此之慢?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 最佳混合环境(OS X + Windows)备份?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve