问题标签 [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 投票
2 回答
1061 浏览

php - 负载均衡服务器环境中的 PHP 请求文件缓存

我希望在 PHP 应用程序中编写一个基本的 PHP 文件缓存驱动程序,将所有流量路由到前端控制器。例如,假设使用 apache mod_proxy_balancer 进行以下简化设置:

在此处输入图像描述

在单服务器环境中,我会将请求响应缓存在磁盘上与请求 URI 匹配的目录结构中。然后,像下面这样简单的 apache 重写规则可以允许 apache 返回静态缓存文件(如果它们存在)并完全避免 PHP 进程:

显然,这在负载平衡的环境中是有问题的,因为缓存文件只会被写入提供请求并缓存结果的特定 PHP 服务器上的磁盘。

解决问题...

所以,为了解决这个问题,我想我可以敲出一些代码,让各个后端 PHP 服务器向负载均衡器写入/删除缓存数据。但是,由于对 mod_proxy_balancer 的功能(以及任何其他负载平衡选项,真的)一无所知,我需要对以下问题进行一些外部验证:

还有问题...

  1. 是否可以像上面的 RewriteRules 那样进行某种形式的检查,让前端负载均衡器在向其中一个后端服务器发送请求之前提供静态文件?
  2. 这甚至是可取的吗?负载均衡器是否应该被允许专门路由流量而不为提供静态内容而烦恼?
  3. 在 PHP 服务器级别的缓存文件上使用可接受的 TTL 并处理可接受的陈旧缓存重叠级别会更好吗?

最后,如果这太宽泛或已经得到回答,请道歉;由于上述对负载平衡主题的无知,我不确定要搜索什么。

0 投票
2 回答
3698 浏览

apache - Apache 负载均衡器管理器不显示任何内容

我为 RoR 应用程序设置了代理平衡器,并且需要一些故障排除,因此请尝试使用 /balancer-manager 页面。我也使用 /server-status 页面,它运行良好,但是当我打开http://myhost.com/balancer-manager时,我得到以下信息:

myhost.com 的负载均衡器管理器

服务器版本:Apache/2.2.15 (Unix) 服务器构建:2011 年 10 月 6 日 11:46:57

Apache/2.2.15 (Red Hat) 服务器在 myhost.com 端口 81

没有别的了。我究竟做错了什么?

配置是:

谷歌除了这个https://issues.apache.org/bugzilla/show_bug.cgi?id=41979什么也没给我 所以我的配置中可能有一个错误,但我无法弄清楚。谢谢你。

0 投票
3 回答
25027 浏览

java - Apache + Tomcat - 粘性会话和负载平衡问题

我在使用 Apache mod_proxy_balancer 时遇到了一些关于粘性会话的问题。

我们用 Java 开发了一个 RESTful Web 服务,在 Tomcat 上运行。实际的后端使用 Acegi 安全性和 Auth Basic 身份验证。

架构是(对不起,我是新用户,我不能发布图片):

我们有这个“Java 反向代理”来执行各种业务。它还在 Tomcat(Tomcat1、Tomcat2)上执行 Basic Auth 身份验证。

最终用户调用 url,如:http:///a/b?username=foo&password=bar&session=xxx

然后,反向代理将请求代理到 Apache,将凭据作为基本身份验证令牌发送。

最终用户有三个不同的网址:

只有 service1 和 service2 受 Acegi 保护。service3 可以匿名访问(这是一项要求)。

我们在 Apache 中有以下配置来执行负载平衡:

在第一次调用 service1 时,将 JSESSIONID 返回给用户,然后他将此会话信息作为请求的一部分发送(在查询字符串中,会话参数中)

为了在后端 tomcat(tomcat1、tomcat2)中维护会话状态,java 反向代理从查询字符串中获取会话并将其作为 JSESSIONID cookie 发送到代理 tomcat。

对于受基本身份验证保护的 URL,一切正常。但是当用户调用第三个 url(这是公开的)时,Apache 没有正确执行负载平衡。

例如,当我调用服务 1 或 2 时,我得到以下 Apache 日志:

这很好,因为该请求旨在针对 tomcat2。

但是当我调用 service3 时,我得到:

如您所见,即使 JSESSIONID cookie 相同,Apache 也会将请求发送到错误的 tomcat(此处为 tomcat1)。

可能是因为 service3 的 url 不需要 Auth Basic 身份验证,而 service1 和 service2 需要吗?

我很确定我做错了什么,但我已经环顾了很长时间,但我无法让它工作。

非常感激你的帮助。

谢谢

0 投票
1 回答
13120 浏览

apache - 带有客户端身份验证的 Apache HTTPD/mod_proxy/Tomcat 和 SSL

我确定这是一个常见问题解答,但我找不到任何我认为是同一个问题的东西。

我有几个在 Tomcat 中运行的 Web 应用程序,其中一些页面例如受 SSL 保护的登录页面,由其 web.xmls 中的机密性元素定义。其中一个应用程序还通过证书接受客户端身份验证。我还有一个相当广泛的基于 JAAS 的授权和身份验证方案,并且在各种 webapps 之间有各种共享代码和不同的 JAAS 配置等。

在完成以下任务时,我真的不想打扰任何这些。

在添加更多 Tomcat 实例之前,我现在正在将带有 mod-proxy 和 mod-proxy-balancer 的 Apache HTTPD 作为负载均衡器插入到 Tomcat 前面。

我想要为 HTTPS 请求完成的是,它们被“盲目”重定向到 Tomcat,而 HTTPD 不是 SSL 端点,即 HTTPD 只是将密文直接传递给 Tomcat,以便 TC 可以继续做它已经在做的登录、SSL、Web .xml 机密性保证,最重要的是客户端身份验证。

这可能与我描述的配置有关吗?

我对 webapps 和 SSL 以及 HTTPS 和 Tomcat 非常熟悉,但是我对 Apache HTTPD 的外围知识是有限的。

如有必要,很高兴移动它,但它是一种使用配置文件进行编程;)

0 投票
2 回答
13688 浏览

apache - httpd mod_proxy_balancer 故障转移 failonstatus - 透明切换

我正在使用 mod_proxy_balancer 来管理后端服务器的故障转移。当其他一些后端服务(例如 NFS)失败时,后端服务器可能会返回错误代码而不是超时,并且我们希望这些服务器也被标记为故障节点。因此,我们使用 failonstatus 指令。

目前,故障转移完美地运行了一个小故障。当活动节点发生故障时,用户会收到 503 错误,并且从下一个请求中备用服务器接管。

我不希望一个请求失败。无法在不向客户端返回错误的情况下进行 mod_proxy 故障转移?如果活动节点失败,我希望 mod_proxy 为相同的请求尝试备用,而不仅仅是后续请求!

0 投票
1 回答
4192 浏览

apache - 使用 apache mod_proxy_balancer 循环负载均衡

是否可以使用 mod_proxy_balancer 执行以下操作:

  • 主应用服务器:IP:192.168.1.1
  • 辅助服务器:IP:192.168.1.2

主应用服务器使用 apache 处理来自公共 DNS 的所有请求。

然后用 mod_proxy_balancer 基本上说

所以实际上它是说,主应用服务器可以处理这个请求,或者它可以将它传递给集群中的另一台服务器?

另外,如果我使用 https,那么我是否只需在每台服务器上设置每个 apache 以指向我的签名证书并在端口 443 上侦听,那么当 mod_proxy_balancer 传递请求时,它们自然会处理 https 吗?

我知道我可以自己设置一个测试,但是如果有人可以在这里给我快速回答,我不想搞砸设置两个 Ubuntu 虚拟机!:)

谢谢

0 投票
1 回答
2043 浏览

apache2 - 如何在不重新启动的情况下添加/删除 Apache2 平衡器成员

我想知道,是否有办法在不完全重启 apache 的情况下添加/删除 Apache2 mod_proxy_balancer balancer-members,这样现有的连接就不会被中断?

如果我只是更新相同的 vhost 文件中的成员并通过

apache 不会应用所做的更改。提供的balancer-manager指令和 Web 后端允许在不重新启动的情况下修改特定 blanacer 成员(例如 loadfactor)的参数,但不能以这种方式添加新成员或删除现有成员。

0 投票
1 回答
3336 浏览

apache - Apache 模块 mod_proxy_balancer

我们在我们的环境中使用 apache 版本 2.2.23。我们已配置 apache,使其应在同一主页的两个应用程序服务器之间进行负载平衡。

BalancerMember abc:8101 BalancerMember abc:8102 状态=+H

我们需要知道 apache web 服务器如何检测到服务器 8101 已关闭???它是 ping 还是 Telnet 或其他的东西。

0 投票
0 回答
824 浏览

ruby-on-rails-3.2 - Redmine 2.3 相对 url 根不适用于 Apache mod_proxy

我目前正在尝试从 Redmine 1.4(基于 Rails 2.3)升级到 Redmine 2.3(Rails 3.2)。我被迫将 Apache 与 mod_proxy 和代理平衡器一起使用,因此任何关于乘客的讨论都已结束。我正在尝试在 sub-uri ( https://mysite.com/redmine ) 上部署 Redmine。当前的 Apache 配置如下:

我曾经能够使用 Redmine::Utils.relative_url_root="/redmine" 来处理 url_for 和 link_to,但这不再有效。

我尝试了以下方法:

  1. 编辑 config.ru

    映射 ActionController::Base.config.relative_url_root || "/" 运行 RedmineApp::Application end

  2. 运行rails:RAILS_RELATIVE_URL_ROOT='/redmine' script/rails s -p 9000

  3. 添加 config.action_controller.relative_url_root = "/forge" 到 application.rb

我无法弄清楚需要做什么。任何帮助都会很棒。谢谢你。

0 投票
1 回答
219 浏览

apache - Apache中的随机负载均衡

我正在尝试为我的服务器设置一些负载平衡。使用 mod_proxy_balancer 一切看起来都非常简单。我的问题是我需要一个随机平衡算法(至于我为什么想要它,它是客户的请求)。

据我所见,lbmethod 的可用选项是byrequests bytraffic byrequests 是否有任何方法可以在不编写我自己的模块的情况下获得随机平衡(不会那么困难,但我仍然想避免它)