Coherenceにはマルチキャスト・テスト・ユーティリティが付属しており、2台以上のコンピュータ間でマルチキャストが有効化されているかどうかの判定に利用できます。これは接続テストであり、負荷テストではありません。デフォルトでは、それぞれのインスタンスで2秒ごとに単一のマルチキャスト・パケットが一度送信されるのみです。ネットワークの負荷テストについては、第17章「ネットワーク・パフォーマンスのデータグラム・テストの実行」を参照してください。
マルチキャスト・テスト・ユーティリティでは数多くの構成オプションがサポートされていますが、基本的な操作に必要なものはごくわずかです。マルチキャスト・テスト・ユーティリティを実行するには、コマンドラインから次の構文を使用します。
java com.tangosol.net.MulticastTest <command value> <command value> ...
表16-1は、マルチキャスト・テスト・ユーティリティで利用できるコマンドライン・オプションについて説明しています。
表16-1 マルチキャスト・テスト・ユーティリティのコマンドライン・オプション
コマンド | 必須/オプション | 説明 | デフォルト |
---|---|---|---|
-local |
オプション |
送信を行うNICのアドレス、IPアドレスとして指定 |
localhost |
-group |
オプション |
使用するマルチキャスト・アドレス、IP:ポートの形式で指定 |
237.0.0.1:9000 |
-ttl |
オプション |
マルチキャスト・パケットの有効時間 |
4 |
-delay |
オプション |
パケット送信間の遅延、秒単位で指定 |
2 |
-display |
オプション |
予期しないパケットから表示されるバイト数 |
0 |
java com.tangosol.net.MulticastTest -group 237.0.0.1:9000
使いやすくするため、Coherenceのbin
ディレクトリにmulticast-test.sh
およびmulticast-test.cmd
のスクリプトが用意されており、このテストの実行に使用できます。
注意: Coherence 3.1より前は次の構文が使用され、スクリプトはありませんでした。
java com.tangosol.net.MulticastTest <ip-addr> <multicast-addr> <port> <ttl> <delay-secs>
マルチキャスト・アドレス237.0.0.1、ポート9000(テストのデフォルト)を使用して、IPアドレス195.0.0.1のServer A
とIPアドレス195.0.0.2のServer B
の2台のサーバー間でメッセージを送信できるかどうかをテストするとします。
まずServer A
で、次のようにこのマシンまたはインタフェースを単独でチェックして、195.0.0.1で使用可能なマルチキャスト・アドレス237.0.0.1、ポート9000があるかどうかを判定します。
コマンド・プロンプトで、次のコマンドを入力します。
[Enter]を押すと、マルチキャスト・テスト・ユーティリティによって、順次マルチキャスト・パケットの送受信状況が表示されることがわかります。例16-2にサンプル出力を示します。
例16-2 マルチキャスト・テスト・ユーティリティによって送信される順次マルチキャスト・パケット
Starting test on ip=servera/195.0.0.1, group=/237.0.0.1:9000,ttl=0 Configuring multicast socket... Starting listener... Tue Mar 17 15:59:51 EST 2008: Sent packet 1. Tue Mar 17 15:59:51 EST 2008: Received test packet 1 from self. Tue Mar 17 15:59:53 EST 2008: Sent packet 2. Tue Mar 17 15:59:53 EST 2008: Received test packet 2 from self. ...
これらの複数のパケットの送受信が正常に実行されていることを確認したら、[Ctrl]を押しながら[C]を押して、テストを停止できます。
前述のように表示されない場合は、マルチキャストが機能していません。また、ttlに0を指定していることに注目してください。これによってマルチキャスト・パケットがServer A
から送信されないようにしています。
同じテストをServer B
でも実行して、このポートの組合せでもマルチキャストが有効になっていることを確認できます。
次に、Server A
とServer B
の間のマルチキャスト通信をテストします。このテストでは、ttlにゼロ以外の値を使用して、それぞれのサーバーからパケットが送信できるようにします。デフォルトのテストではttlに4が使用されますが、Server A
とServer B
の間のパケットのルーティングにさらに多くのネットワーク・ホップが必要であることが判明している場合は、4より大きな値をttlに指定してもかまいません。
コマンド・ウィンドウに次のコマンドを入力して[Enter]を押し、Server A
とServer B
に対するテストを開始します。
multicast-test.sh
Server A
に対しては次のように表示されます。
例16-3 Server Aに対するマルチキャスト・テストの結果のサンプル
Starting test on ip=servera/195.0.0.1, group=/237.0.0.1:9000, ttl=4 Configuring multicast socket... Starting listener... Tue Mar 17 16:11:03 EST 2008: Sent packet 1. Tue Mar 17 16:11:03 EST 2008: Received test packet 1 from self. Tue Mar 17 16:11:05 EST 2008: Sent packet 2. Tue Mar 17 16:11:05 EST 2008: Received test packet 2 from self. Tue Mar 17 16:11:07 EST 2008: Sent packet 3. Tue Mar 17 16:11:07 EST 2008: Received test packet 3 from self. Tue Mar 17 16:11:09 EST 2008: Sent packet 4. Tue Mar 17 16:11:09 EST 2008: Received test packet 4 from self. Tue Mar 17 16:11:10 EST 2008: Received test packet 1 from ip=serverb/195.0.0.2, group=/237.0.0.1:9000, ttl=4. Tue Mar 17 16:11:11 EST 2008: Sent packet 5. Tue Mar 17 16:11:11 EST 2008: Received test packet 5 from self. Tue Mar 17 16:11:12 EST 2008: Received test packet 2 from ip=serverb/195.0.0.2, group=/237.0.0.1:9000, ttl=4. Tue Mar 17 16:11:13 EST 2008: Sent packet 6. Tue Mar 17 16:11:13 EST 2008: Received test packet 6 from self. Tue Mar 17 16:11:14 EST 2008: Received test packet 3 from ip=serverb/195.0.0.2, group=/237.0.0.1:9000, ttl=4. Tue Mar 17 16:11:15 EST 2008: Sent packet 7. Tue Mar 17 16:11:15 EST 2008: Received test packet 7 from self. ...
また、Server B
に対しては次のように表示されます。
例16-4 Server Bに対するマルチキャスト・テストの結果のサンプル
Starting test on ip=serverb/195.0.0.2, group=/237.0.0.1:9000, ttl=4 Configuring multicast socket... Starting listener... Tue Mar 17 16:11:10 EST 2008: Sent packet 1. Tue Mar 17 16:11:10 EST 2008: Received test packet 1 from self. Tue Mar 17 16:11:11 EST 2008: Received test packet 5 from ip=servera/195.0.0.1, group=/237.0.0.1:9000, ttl=4. Tue Mar 17 16:11:12 EST 2008: Sent packet 2. Tue Mar 17 16:11:12 EST 2008: Received test packet 2 from self. Tue Mar 17 16:11:13 EST 2008: Received test packet 6 from ip=servera/195.0.0.1, group=/237.0.0.1:9000, ttl=4. Tue Mar 17 16:11:14 EST 2008: Sent packet 3. Tue Mar 17 16:11:14 EST 2008: Received test packet 3 from self. Tue Mar 17 16:11:15 EST 2008: Received test packet 7 from ip=falco/192.168.0.204, group=/237.0.0.1:9000, ttl=4. ...
Server A
とServer B
の両方がマルチキャスト・パケットを送信し、自己および相手側のパケットを確認していることがわかります。
これは、マルチキャストのデフォルトのアドレスおよびポートを使用して、これらのサーバー間でマルチキャストが正しく機能していることを示します。
注意: Server A
側では、Server B
が開始され、Server B
からのパケット1を受信するまで、自己のパケット1〜4のみが表示されます。
双方向マルチキャスト通信を確立できない場合は、次のように実行してください。
ファイアウォール: マルチキャスト・テストを実行するマシンのいずれかでファイアウォールが採用されている場合は、ファイアウォールがトラフィックをブロックしている可能性があります。マルチキャスト・トラフィックの許可に関する詳細は、OSまたはファイアウォールのドキュメントを参照してください。
スイッチ: マルチキャスト・トラフィックを転送するようにスイッチが構成されていることを確認します。
IPv6: IPv6をサポートするOSでは、JavaがIPv4でなくIPv6を介してマルチキャスト・トラフィックをルーティングしようとしている可能性があります。Javaシステム・プロパティjava.net.preferIPv4Stack=true
を指定して、IPv4ネットワーキングを実施してみてください。
???の受信: テストで???の受信がレポートされた場合は、マルチキャスト・テスト以外のインスタンスから発信されたマルチキャスト・パケットを受信したことを示します。この状況は、テストを実行するときに、実行中のCoherenceクラスタなどのマルチキャスト・アプリケーションと同じマルチキャスト・アドレスを使用した場合に発生します。
複数のNIC: マシンに複数のネットワーク・インタフェースが存在する場合は、-local
test
パラメータを使用して、インタフェースを明示的に指定できます。たとえば、Server
A
にIPアドレス195.0.0.1および195.0.100.1の2つのインタフェースがある場合、テストのコマンドラインに-local 195.0.0.1
を含めると、マルチキャスト・パケットが最初のインタフェースを使用したことが保証されます。また、マシンのルーティング表で、目的のネットワーク・インタフェースを介してマルチキャスト・トラフィックが転送されるように、明示的に設定することもできます。これは、例16-5に示すコマンドを発行することで実行できます。
eth1
は、マルチキャスト・トラフィックの送信が指定されるデバイスです。
AIX: AIXシステムでは、マルチキャストに関して次の問題が発生する場合があります。
IPv6: java.net.preferIPv4Stack=true
を指定するだけでなく、/etc/netsvc.conf
ファイルにhosts=local,bind4
を追加してIPv4の名前解決が実行されるようにOSを構成することが必要になる場合もあります。
仮想IP(VIPA): AIXでは、VIPAを使用したマルチキャストがサポートされていません。VIPAを使用する場合は、VIPAでないデバイスにマルチキャストをバインドするか、またはマルチキャストを無効にしてCoherenceを実行します。詳細は、「well-known-addresses」を参照してください。
MTU: マルチキャスト・デバイスのMTUを1500バイトに構成します。
Cisco社製スイッチ: 既知の問題のリストについては、「Cisco社製スイッチへのデプロイ」を参照してください。
Foundry社製スイッチ: 既知の問題のリストについては、「Foundry社製スイッチへのデプロイ」を参照してください。
マルチキャストが正しく機能しない場合は、ネットワーク管理者またはシステム管理者に連絡して、原因の判定および状況の修正を依頼してください。