问题标签 [mod-proxy-balancer]

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 投票
1 回答
1581 浏览

apache2 - 从一个平衡器成员处获取代理平衡器中的部分 url

我有 Apache 服务器的集群设置。在这之后,我有 2 个由 apache 负载平衡的 Jboss 实例。

配置看起来有点像下面

在 url 访问 url 的某些部分我希望它从第二个节点即 jboss 的 node2 路由。

例如,如果我正在访问http://www.example.com/aa/login/login.jsp,我需要这个请求仅由 node2 处理app02

请求的其余部分应作为正常访问进行负载平衡。我如何设置 apache 来做到这一点?

我已经尝试了很多rewrite,到目前为止都没有<Location>ProxyPassMatch

请帮忙。提前致谢。

0 投票
1 回答
8254 浏览

apache - Apache Webserver、Tomcat、AJP,“所有工作人员都处于路由错误状态”

作为序言,我一直在互联网上试图找到解决方案。以下只是提供了一些信息的最新链接,但似乎都没有工作。

https://serverfault.com/questions/19947/apachetomcat-having-problems-communicating-unclear-error-messages-bringing-do

Tomcat 停止响应 Apache

尽管我在下面概述了许多配置更改,但我无法阻止错误,这些错误因此出现在日志中:

出现故障的用户会看到“服务器不可用”屏幕,但连接会在几分钟后恢复。然而,有时同一个服务器连接会多次启动/关闭;这可能是由于用户行为相同(我使用粘性会话),但我无法确认这一点。

我的配置是我有一个在 Windows 环境中运行的 Apache Webserver 实例,通过 AJP 配置了 4 个 Tomcat 工作人员。目前,所有 Tomcat 工作人员都托管在 Windows 下的不同主机上。

我的场景中的所有主机都是健壮的生产环境中的虚拟机,每个主机都有多个内核。

阿帕奇版本:

Tomcat 是 7.0.29 版本

每个 BalancerMember 都有以下配置参数:

当前使用本机连接器 (org.apache.coyote.ajp.AjpAprProtocol) 的每个 Tomcat 实例。

连接器配置:

应用程序本身通过 Oracle ojdbc15_g JDBC 驱动程序 v11.2.0.3.0 连接到 Oracle。

我观察到的事情:

  1. Tomcat 服务器似乎没有被来自 Apache 的请求所淹没。这来自对日志活动的观察,以及通过 Apache Webserver 服务器状态数据进行验证,并通过 jconsole 的线程活动得到支持。(我从来没有看到执行线程的数量在我上面设置的限制附近增加)。这是一个内部应用程序,为约 400 个用户提供服务,其中大多数用户不在同一时间;所以负载不应该是问题。
  2. 我似乎没有任何线程死锁问题......当使用 jconsole 远程监控 Tomcat 实例时,我查看 ajp-apr-8009-exec-# 线程来确认这一点,大多数都处于等待状态,而有些我可以看到积极处理。
  3. 我们确实有一些长期运行的请求——有些请求有时会超过我上面概述的 600 秒超时。这是我目前正在探索的一个领域;请求长度的原因通常是在一个非常大的数据存储上进行联合搜索,这需要时间,但通常会在几秒钟内返回。当它需要更长的时间时,通常是由于用户构建的关键字搜索不佳导致 Oracle 在构建结果时阻塞了很长时间。目前我正在重构它,以便它在与 request/apr exec 线程不同的线程中运行,如果执行时间超过 280 秒(4 分 40 秒),它将终止线程并将错误返回给用户; 这样我可以排除 Tomcat 处理请求的时间太长。

至于我现在正在做些什么来尝试解决它,我觉得我已经用尽了我的配置能力(包括在网上搜索所有可能的解决方案,因为我是一个软件专家,而不是基础设施)..所以我我正在通过切换平台尝试不同的策略:我在 Linux 机器上运行了 Apache Webserver,并且使用 DNS 循环,部分用户通过 Linux 而不是 Windows 进行路由。这似乎没有帮助,但 Tomcat 工作人员仍在相同的 Windows 机器上运行。

我目前也在 Linux 机器上安装 Tomcat 应用程序本身,当我有稳定的时候(由于假设 Windows 是该应用程序托管的唯一平台,一些小的代码更改是必要的)我会补充一点作为工作人员,看看该特定实例是否遇到相同的问题。

如果不出意外,我想确认我对长期执行请求的怀疑是正确的路径。我尝试了各种配置更改无济于事。

0 投票
1 回答
350 浏览

apache - 同一个会话被用于多个请求

我们开发了一个应用程序,在成功请求后,会话必须被销毁。当我们有一个 tomcat 时,这工作正常。

但是,当我们在 Apache 简单负载均衡器下使用多个 tomcat 时,不会发生这种情况(我们正在使用负载均衡器,用于平衡托管同一应用程序的两个 tomcat 之间的请求)。

创建并成功处理的 SessionID 可用于另一笔交易,之后它会被杀死。

此外,SessionID 值附加了“n1”或“n2”(SessionID-n1)。我不确定为什么会这样。

请帮我解决这个问题。

我们有如下配置设置:

谢谢,桑迪普

0 投票
1 回答
21499 浏览

php - Apache 2.4 + php-fpm - AH01071:出现错误“主脚本未知\n”mod_proxy_balancer

我正在我的 Ubuntu 14.04 中使用 php-fpm 5.5.9 配置 Apache 2.4.9。我想要的是为 php-fpm 请求做一个平衡器,但它会引发以下错误:

AH01071: Got error 'Primary script unknown\n'

当我尝试访问我的 php 文件时。代理平衡器似乎没有抓取 ProxyPassMatch 传递给它的文档根。我正在使用 UDS 使 apache 访问 php-fpm 套接字,而不是使用网络 tcp。

如果我在没有平衡器的情况下配置它,一切正常。

作品

不工作

这是平衡器的配置日志:

0 投票
0 回答
1470 浏览

load-balancing - Apache mod_proxy:参数“acquire”不起作用

我们使用带有 mod_proxy、mod_proxy_balancer 和 mod_status 的 apache2-worker 包。Apache 被配置为 WFS 服务器的负载平衡器/调度器。

操作系统:SuSE SLES 11 SP2
Apache httpd:版本 2.2.12

我们所有的工作人员(WFS 服务器)一次只能处理一个请求。所以在/etc/apache2/server-tuning.conf第 部分中<IfModule worker.c>,我们将参数ServerLimit设置为1。在 BalancerMember 的配置中,我们使用了参数max=1。即/etc/apache2/conf.d/proxy.conf看起来像这样:

参数acquire

文档说:

如果设置,这将是在连接池中等待空闲连接的最长时间,以毫秒为单位。如果池中没有空闲连接,Apache 将返回 SERVER_BUSY 状态给客户端。

我对参数acquire的理解如下,也是我想要的行为:

负载均衡器从客户端获取一些请求。在某个时间点,所有工人都很忙。负载均衡器将保持下一个请求保持暂停状态,直到工作人员空闲为止。如果工作人员空闲,则将挂起的请求分配给空闲工作人员,然后该工作人员接受连接。如果在参数指定的时间内没有空闲的工作人员,acquire客户端会收到错误响应。

但是该参数acquire没有按预期工作。负载均衡器将下一个请求分配给忙碌的工作人员。即使在此期间另一个工作人员空闲,该请求仍会分配给忙碌的工作人员,客户端必须等到忙碌的工作人员完成当前请求并接受新的请求。

如果你这样做,/etc/init.d/apache2 reload你会在 apaches error_log 中收到一条错误消息:

BalancerMember 获取超时格式错误

在那条消息之后,httpd 死了。如果您只启动或重新启动 httpd,您不会收到该消息并且 httpd 是活动的。

我还尝试指定一个单位,如 in acquire=30000ms。但错误仍然存​​在。唯一有帮助的是删除acquire参数,但所描述的行为是相同的。

所以问题是:

  • 我必须如何使用参数acquire?有人有工作的例子吗?
  • 我是否必须使用其他参数才能获得所需的行为?
0 投票
0 回答
813 浏览

apache - Apache:mod_proxy_balancer 并设置 keepalive 超时

我们apache 2.4.10SLES 10系统上使用,不知道如何keep-alive-time在 modul mod_proxy_balancer 中设置 a。我们想配置一个 10 分钟的 keepalive 时间。我们用超时进行了几次测试,但全局 apache 参数KeepAliveTimeoutOS-parameterTCP Keepalive Timeout ( /proc/sys/net/ipv4/tcp_keepalive_time) 无效。

是否有此 Proxy-Balancer 超时的参数,或者您是否知道另一种配置 10 分钟保活时间的方法?

0 投票
1 回答
51 浏览

load-balancing - 为什么负载均衡器通常以高可用性对实现?

目前,我正在对负载均衡器进行一些研究。

在 Wikipedia 上,请参阅此链接http://en.wikipedia.org/wiki/Load_balancing_(computing)

它说:“通常负载均衡器是在高可用性对中实现的,如果特定应用程序需要,它们还可以复制会话持久性数据。”

另外,我也用搜索引擎找到了一些相关文章,介绍了系统中需要使用2个负载均衡器的原因和案例,但没有找到任何好的信息。

所以我想问为什么在大多数情况下我们需要 2 个负载均衡器?哪些情况下我们需要使用 2 个或更多负载均衡器而不是一个?

0 投票
1 回答
795 浏览

apache - Apache HTTPD Websocket 隧道插件错误

通过 Apache ws 隧道插件间歇性连接时,我的 websocket 连接无法连接。直接访问应用服务器时,连接始终有效。

我看到以下错误。WebSocket 握手期间出错:状态行无效

WebSocket 连接到“ws://host”失败:一个或多个保留位打开:reserved1 = 1、reserved2 = 0、reserved3 = 0,有时 WebSocket 连接到“ws://host”失败:无法识别的帧操作码:12

有时在 WebSocket 握手期间出错:状态行不以 CRLF ui-toolkit-vendor.js:21965 结尾

带有 mod_proxy_wstunnel 和 mod_proxy_balancer 模块的基础架构 Apache HTTPD 2.4.9

0 投票
2 回答
1333 浏览

apache - 在 Apache (httpd) 配置的一个 VirtualHost 中使用 mod_proxy_cluster 和 mod_proxy

我有几个 JBoss 和 Tomcat 服务器的环境。它们通过 modcluster 模块连接到 Apache(连接到 Apache IP 地址和端口 8090)。Apache 包含以下配置:

负载均衡器.conf

一切正常,但一个新应用程序不支持连接到 Apache。我需要使用 ProxyPass。当我将 ProxyPass 插入到 443 虚拟主机时,所有平衡的上下文都停止工作。当我插入: ProxyPass / balancer://My_Cluster /other_app 上下文停止工作。

你能告诉我如何配置 ProxyPass 处理的上下文 /other_app 和 modcluster 平衡器的所有其他上下文吗?

0 投票
0 回答
193 浏览

apache - 带有 mod-cluster 和 Apache HTTPD2.2 的 tomcat7 热备节点

我在 RHEL6.7 上使用带有 mod-cluster1.2.9 和 Apache HTTPD2.2 的 tomcat7.0.63

具有专用平衡器配置的多个 Tomcat 实例使用专用 Virtualhost:6666 共享 Apache HTTPD。只有一个 Tomcat 实例应该有一个主节点和一个热备节点。我尝试使用 mod-proxy-balancer,BalancerMember,在 server.xml 中有和没有 ModClusterListener。但它发现在共享的 Apache HTTPD 上与 mod-cluster 的共存不起作用……或者我犯了一个错误。

对于 JBoss EAP 和 Wildfly,有 lbfactor/loadfactor:

这使一个节点成为热备用节点。

有没有办法使用 tomcat7 来做到这一点,例如一个 mod-cluster Tomcat 系统属性,它发送一个load = 0(备用)到Virtualhost:6666

亲切的问候, hplar