現在のセットアップには、アプリケーション要求を 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: httpd.conf の 62 行目の構文エラー: modules/mod_proxy_ajp.so をサーバーにロードできません: modules/mod_proxy_ajp.so: 未定義のシンボル: ajp_send_header
また、もちろん、すべてのサーバー リクエストが 500 をスローし、error.log にエラー メッセージが記録されます。
URL / に対して有効なプロトコル ハンドラがありませんでした。mod_proxy の DSO バージョンを使用している場合は、LoadModule を使用してプロキシ サブモジュールが構成に含まれていることを確認してください。
なぜこれが起こっているのかわかりません。調査によると、mod_proxy_ajp が mod_proxy の前に呼び出されている場合にのみ、エラーがスローされるはずです。これは最後のことなので、事前にすべてをロードしておく必要があります。