问题标签 [haproxy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
610 浏览

tomcat - 在 tomcat 上对纯动态 Web 应用程序进行负载平衡

我有一个纯动态的网络应用程序(想想公共 API)。所以我不需要任何静态文件服务或静态文件缓存优化。由于性能和可用性需求,我需要从一个 tomcat 转移到多个。我现在正在使用 apache mod_proxy_http,最近也在尝试 mod_proxy_ajp。但是,我觉得 apache 太重了,我想知道其他产品(haproxy、nginx、自豪等)在性能和特性(限制请求、排队等)方面是否能更好地满足我的需求。我现在在 mod_proxy 中使用的唯一功能是将传入的 url 映射到不同的上下文(例如 /abc 应该转到 /def)。你的建议是什么?(考虑 150 个请求/秒的负载,每个请求的 50-1000 毫秒处理时间,受 db io -separate mysql box- 和 network io -service call- 的约束)

谢谢。

米特

0 投票
5 回答
8908 浏览

tomcat - Tomcat:如何停止 Tomcat 为所有请求创建会话?

HAProxy 正在 ping Tomcat 并请求一个非常小的页面,导致 Tomcat 每 2 秒创建一个新会话。有没有办法以编程方式(或通过配置)告诉Tomcat不要为特定页面创建新会话?

0 投票
2 回答
4181 浏览

web-services - 如何向负载平衡的 HTTP Web 服务添加持久连接支持

我们正在开发一个使用 haproxy 负载均衡的 HTTP Web 服务。通过 SSL 访问 Web 服务。它是一个 RESTful HTTP 服务,只接受 JSON,做一些工作,然后返回 JSON。没有会话的概念。

我们在一对冗余 Web 服务服务器前设置了冗余负载平衡器。每台服务器都位于 Apache 后面,其中 Apache 用作代理以处理 SSL 和日志记录。如果重要的话,我们的 web 服务是一个 Clojure (java) 应用程序,它使用 compojure (jetty) 来处理 HTTP。

这是一个简短的图表,显示了通过我们现有系统的客户端请求的路径。

client request -> haproxy (load balancing) -> apache (ssl, logging) -> webservice

我们希望任何到负载均衡器的连接都建立一个持久连接,然后由同一台服务器为通过该持久连接发送的所有后续请求提供服务。换句话说,我们不希望 haproxy 的持久连接向多个 Web 服务服务器发出请求。

你会如何建议我们让这个工作?我们如何将给定的负载均衡器连接“固定”到特定的 Web 服务服务器?我们如何防止意外加载具有多个密集请求的特定 Web 服务服务器?

0 投票
5 回答
8759 浏览

node.js - 我可以通过身份验证与 HAProxy 和 socket.io 进行粘性会话吗?

我有几个在 HAProxy 下运行身份验证的 socket.io 实例,我需要强制身份验证请求和套接字连接转到同一个实例。我已经根据这个对 SO question 的回答设置了 HAProxy,并进行了一些修改,如下所示:

我已经尝试过 url_param (其中 sessionId 是在身份验证调用和 websocket 连接中传递的查询字符串参数)和 source 作为平衡选项,但似乎 HAProxy 只允许这些选项用于 HTTP 连接,因此忽略它们用于实际的 websocket联系。结果是有时auth请求和socket连接最终在不同的服务器上,这对我们的应用程序来说是不可接受的。

有什么方法可以实现这种期望的行为?

0 投票
2 回答
23246 浏览

regex - HAProxy 和 URL 重写配置

我想问一下 HAProxy 如何根据 URL 的各个部分来帮助路由请求。

为了让您大致了解我的设置,我有 HAProxy 机器和两个后端:

  • IIS 网站(主站点)
  • NGINX 上的 Wordpress 博客(一个子站点)

用例:

我期望根据 URL 路由请求:

  • www.website.com/lang/index.aspx -> 主站点
  • www.website.com/lang/blog/articlexx -> 博客子站点

博客访问 URL 是“ /server/blog/lang/articlexx ”,所以我必须将原始客户端请求重写为该格式——这基本上是切换“博客”和“语言”。

根据我对配置文档和网上一些帖子的理解,我可以使用 reqrep/reqirep 在将请求 HTTP 标头传递到后端之前更改它。如果这是正确的,那么这个配置应该可以工作:

问题: blog_website 后端收到的请求仍然是原始 URL “x/lang/blog”。

我可能错过了正则表达式部分的某些内容,但我主要关心的是我的理解是否正确,首先要使用 reqirep。我将不胜感激任何帮助。

非常感谢。

0 投票
2 回答
1941 浏览

apache - 是否可以从 Apache 迁移到 HAProxy/nginx 作为反向代理?

我们使用 Apache 作为反向代理 ( mod_proxy)。对我们来说最重要的特性是 url 映射(简单的 url 重写),包括 cookie 路径的重写。正如我惊讶地了解到的那样,nginx 不会重写 cookie 路径(使用工厂模块)。我不确定,但我相信 HAProxy 可以做到这一点。Apache 对于这项工作来说太重了。那么你能评论一下在这种情况下使用什么吗?(后端是一个 Java 应用服务器,例如 Tomcat)

  1. 继续使用 Apache
  2. 将 nginx 与一些 3rd 方模块(lua 等)一起使用
  3. 使用 HAProxy
0 投票
1 回答
418 浏览

node.js - comet 与 node.js 的 250k 连接

如何在 node.js 上处理与彗星服务器的 250k 打开连接(我们使用 socket.io 的客户端)?

使用 nginx 作为代理/负载均衡器是正确的解决方案吗?或者 HA-Proxy 会是更好的方法吗?有没有人拥有 100k+ 连接的真实世界经验并且可以分享他的设置?像这样:

0 投票
2 回答
1500 浏览

node.js - HAProxy + NodeJS 卡在 TCP 重传上

我有一个 HAProxy + NodeJS + Rails 设置,我使用 NodeJS 服务器进行文件上传。

我面临的问题是,如果我通过 haproxy 上传到 nodejs 并且由于丢失数据包而发生“TCP(快速)重传”,客户端上的 TX 速率会在大约 5-10 秒内降至零并被淹没与 TCP 重传。

如果我直接上传到 NodeJS,则不会发生这种情况(TCP 重传也会发生,但它不会因数十次重传尝试而陷入困境)。

我的测试设置是一个带有单个文件输入字段的简单 HTML4 FORM(方法 POST)。NodeJS 服务器只读取传入的数据,不做任何其他事情。

我已经在多台机器、网络、浏览器上对此进行了测试,总是同样的问题。

这是上传文件时来自客户端的 TCP 流量转储:

haproxy.conf(haproxy v1.4.18 stable)如下:

谢谢阅读!:)

西蒙

0 投票
1 回答
1984 浏览

proxy - 在 Haproxy 上使用 GeoIP

如何连接到数据库 geoip Haproxy?

一个例子。Haproxy 决定 ip country 和 city,并修改 http headers 以传输到后端:

0 投票
1 回答
1898 浏览

websocket - haproxy 和 socket.io 无法正常工作

我已经尝试了在博客和 stackoverflow 中发布的所有可能的 haproxy 配置,但我仍然无法让 haproxy 和 socket.io 100% 地工作。在大多数“支持”网络套接字的浏览器中,它会失败并在错过心跳后退回到长轮询。浏览器似乎建立了初始连接(nodejs 调试),但我无法让客户端接收连接响应。其他人有类似的问题吗?以下是我尝试过的软件版本号和一些配置。

  • haproxy 1.4.18
  • 节点 0.6.5
  • 套接字.io 0.8.7

Haproxy 配置(我已经尝试了很多很多选项):

网络套接字工作在:

  • Safari 5 (Windows)
  • 铬 11 (Linux)