0

現在のセットアップには、アプリケーション要求を 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 の前に呼び出されている場合にのみ、エラーがスローされるはずです。これは最後のことなので、事前にすべてをロードしておく必要があります。

4

1 に答える 1