我正在尝试使用静态模块构建我的 Apache 服务器。但是使用 proxy_balancer 模块时遇到了一些问题。我收到一个错误:
[ssl:info] [pid 11863] AH01876: mod_ssl/2.4.10 compiled against Server: Apache/2.4.10, Library: OpenSSL/1.0.1i
[proxy:crit] [pid 11868] AH02432: Cannot find LB Method: byrequests
[proxy_balancer:emerg] [pid 11868] (22)Invalid argument: AH01183: Cannot share balancer
[:emerg] [pid 11868] AH00020: Configuration Failed, exiting
当我查看已加载的模块时,bin/apachectl -M
那里没有 mod_lbmethod 模块。
我尝试通过将这些行添加到配置脚本来加载模块--enable-lbmethod-byrequest
,--with-lbmethod=byrequest
但它没有出现在模块列表或包含的文件夹中。
有人曾经遇到过这个问题并且找到了解决方案吗?
答案1
可以通过启用模块来解决此问题mod_lbmethod_byrequests
,如下所示:
$ sudo a2enmod lbmethod_byrequests
Apache 2.2.22 不需要此功能,但 Apache 2.4 需要此功能
答案2
如果您使用的是 Apache 2.4 或更高版本,则还需要启用 mod_lbmethod_byrequests。但低于 2.4 的 mod_proxy_balancer 就足够了。我也遇到了这个问题。问题是 mod_lbmethod_byrequests 从 mod_proxy_balancer 中分离出来2.3。
答案3
所以我找到了问题所在。这是一个简单的拼写错误,缺少复数形式“s”。
使用加载模块--enable-lbmethod-byrequests
并且它工作正常
答案4
你确定这是你应该费心解决的问题吗?你为什么要走这条路?
Apache 是一款出色的 Web 服务器,在没有前端缓存和负载平衡层的简单单服务器环境中,mod_proxy 可用于代理一些 URL。但是,如果您想要负载平衡,那么将其放在 Apache 前面的一层中几乎肯定比使用 Apache 模块更好。例如,使用 Varnish 或 squid。
如果继续,您将需要提供更多有关您在构建和配置中所执行的操作以及错误出现的地点和时间的信息。
我认为您的 apache 配置中确实有适当的 LoadModule 指令?