答え
mod_cluster には、メッセージング (JMS、HornetQ) サブシステムとの共通点はありません。mod_cluster 設定には、クラスタリング サブシステム、つまり Infinispan とその主力製品である JGroups との共通点もありません。
AS7 mod_cluster サブシステムが行うことは、Apache HTTP サーバーの mod_cluster モジュールによって発行された UDP マルチキャスト アドバタイジング メッセージをリッスンすることです。このようなメッセージを受信すると、Apache HTTP Server ロード バランサーに自身を登録します。その瞬間から、登録された AS7 の「ワーカー」ノードは、特殊な HTTP メッセージを (TCP 経由で) 送信し続け、Apache HTTP Server に次のことを通知します。
- その名前 (jvmRoute または生成)
- 現在の負荷
- その展開、つまりアプリケーション コンテキスト
- 別名など
Apache HTTP Server バランサーにワーカー ノードが登録されていない場合、コンテキストがないため、リクエストを転送する場所がありません。
投稿した構成によると、224.0.1.105:23364 との間で送受信される UDP マルチキャスト メッセージに依存しています。
Open Nebula、ファイアウォール、UDP マルチキャスト
Open Nebula がホスト間の UDP マルチキャストを許可していないか、iptables がブロックしている可能性があります。これを試して:
- ワーカーホストで curl を使用して、バランサーホストにアクセスします。これは、ディレクティブが
EnableMCPMReceive
定義されている正確な VirtualHost です。
- うまくいかない場合は、iptables、selinux、httpd の allow/deny などを修正する必要があります。
- 機能する場合は、ワーカーがバランサーと通信できるという良い兆候です
- AS7 xml の modcluster サブシステムに移動し、config に属性を追加します:
<mod-cluster-config advertise-socket="modcluster" proxy-list="your-httpd-address:port">
-- curl で試したもの
- UDP マルチキャストがなくても動作するようになりました
- Open Nebula で UDP マルチキャスト設定をデバッグしたい場合は、Advertize.java を試してみてください。
1.2.0 は古すぎるため、脆弱なコードを使用しないでください
Apache HTTP サーバーで mod_cluster 1.2.0 を使用しないでください。このバージョンは完全に廃止されており、コード インジェクション CVE や深刻なパフォーマンスの問題など、重大なバグが含まれています。httpd 2.2.x のサポートが必要な場合は、 mod_cluster 1.3.1.Final for httpd 2.4.x をダウンロードするか、ソースから独自にビルドしてください。それについて何か助けが必要な場合は、尋ねてください。