我们当前的设置有2个负载均衡的Web服务器,可将其应用程序请求指向2个Web服务器的负载均衡器
LB1
/ \
Web1 Web2
\ /
LB2
/ \
App1 App2
我们现在使用的第三方应用程序建议我们从应用程序部分的硬件LB切换到软件。
(注意:来自Apache的任何信息都会被删除,以删除IP,目录等。它只是偏执狂)
我添加了一个负载平衡配置,非常简洁,看起来像这样
<Proxy balancer://mycluster>
BalancerMember ajp://FIRSTIP:8009 route=node1
BalancerMember ajp://SECONDIP:8009 route=node2
ProxySet stickysession=JSESSIONID
</Proxy>
正如您所看到的,我们正在平衡ajp请求。在此之后,网站的各个部分都有大量的ProxyPass规则。
我已经通过主httpd.conf
加载了它在httpd.conf中我按以下顺序加载了以下模块
mod_headers.so
mod_proxy.so
mod_proxy_http.so
mod_proxy_balancer.so
mod_proxy_connect.so
mod_proxy_scgi.so
mod_deflate.so
mod_proxy._ajp.so
问题在于,当我把它全部放到位并尝试重新启动httpd时,它会抛出这个:
httpd: Syntax error on line 62 of httpd.conf: Cannot load modules/mod_proxy_ajp.so into server: modules/mod_proxy_ajp.so: undefined symbol: ajp_send_header
当然,现在所有服务器请求都会抛出500并在error.log中出现错误消息:
No protocol handler was valid for the URL /. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule.
我不明白为什么会这样。根据研究,如果mod_proxy_ajp被调用BEFORE mod_proxy,则只应该抛出错误。因为它是事先应该加载的最后一件事。
答案 0 :(得分:0)
我刚刚通过运行以下
修复了它'OverflowError: range() result has too many items'.
希望这对其他人有用。