この章では、Coherenceマルチキャスト・テスト・ユーティリティを使用して、ネットワーク環境がマルチキャスト通信をサポートしているかどうかを確認する手順について説明します。本番デプロイメントの前に、マルチキャスト・テストの実行が成功する必要があります。
この章には次の項が含まれます:
Coherenceマルチキャスト・テスト・ユーティリティは、2台以上のコンピュータ間でマルチキャストが有効にされているかどうかを判断するために使用します。このユーティリティは、負荷についてはテストしません。デフォルトでは、各インスタンスは2秒ごとに1つのマルチキャスト・パケットを送信します。ネットワークの負荷テストについては、第3章「ネットワーク・パフォーマンス・テストの実行」を参照してください。
マルチキャスト・テスト・ユーティリティを実行するには、コマンド行からcom.tangosol.net.MulticastTest
クラスを使用するか、COHERENCE_HOME
/bin
ディレクトリにあるmulticast-test
スクリプトを実行します。スクリプトは、WindowsベースのプラットフォームとUNIXベースのプラットフォームの両方に用意されています。
次の例では、MulticastTest
クラスを使用してユーティリティを実行します。
java com.tangosol.net.MulticastTest <command value> <command value> ...
次の例では、スクリプトを使用してユーティリティを実行します。
multicast-test <command value> <command value> ...
表4-1では、マルチキャスト・テスト・ユーティリティで利用できるコマンド行オプションについて説明しています。
表4-1 マルチキャスト・テスト・ユーティリティのコマンド行オプション
コマンド | 必須/ オプション |
説明 | デフォルト |
---|---|---|---|
-local |
オプション |
送信を行うNICのアドレス、IPアドレスとして指定 |
localhost |
-group |
オプション |
使用するマルチキャスト・アドレス、IP:ポートの形式で指定 |
237.0.0.1:9000 |
ttl |
オプション |
マルチキャスト・パケットの有効時間 |
4 |
-delay |
オプション |
パケット送信間の遅延、秒単位で指定 |
2 |
-packetSize |
オプション |
送信するパケットのサイズ(デフォルトは、ローカルMTUに基づきます) |
|
-display |
オプション |
予期しないパケットから表示されるバイト数 |
0 |
-translate |
オプション |
マルチキャスト・トラフィックのリッスンとパケットの変換 |
なし |
この項で示す例では、マルチキャスト・アドレス237.0.0.1、ポート9000(テストのデフォルト)で、サーバーA (IPアドレス195.0.0.1)とサーバーB (IPアドレス195.0.0.2)の2台のサーバー間でメッセージが送信できるかどうかをテストする方法について説明します。
注意: テストで使用されるデフォルトのマルチキャスト・アドレスおよびポートは、Coherenceのデフォルトのアドレスおよびポートとは異なります。テストは、実際のCoherenceプロセスで使用されている同じアドレスおよびポートを使用して実行する必要があります。マルチキャスト用のデフォルトのアドレスおよびポートが成功するが、Coherenceのデフォルトが失敗する可能性があります。この原因としてよくあるのが、ローカル・ネットワーク・ポリシーの構成です。 |
最初にサーバーAで、このコンピュータまたはインタフェースを次のように単独でチェックして、195.0.0.1で使用可能なマルチキャスト・アドレス237.0.0.1、ポート9000があるかどうかを判定します。
コマンド・プロンプトで、次のコマンドを入力します。
multicast-test.sh -ttl 0
[Enter]を押すと、ユーティリティによって、順次マルチキャスト・パケットの送受信状況が表示されます。例4-1にサンプル出力を示します。
例4-1 マルチキャスト・テスト・ユーティリティによって送信される順次マルチキャスト・パケット
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を指定することで、マルチキャスト・パケットがサーバーAから送信されないようにしていることに注目してください。
同じテストをサーバーBでも実行して、このポートの組合せでもマルチキャストが有効になっていることを確認できます。
次に、サーバーAとサーバーBの間のマルチキャスト通信をテストします。このテストでは、TTLにゼロ以外の値を使用して、それぞれのサーバーからパケットを送信できるようにします。デフォルトのテストではTTLに4が使用されますが、サーバーAとサーバーBの間のパケットのルーティングにさらに多くのネットワーク・ホップが必要な場合は、4より大きな値をTTLに指定します。
次のコマンドをそれぞれのサーバーのコマンド・ウィンドウに入力して[Enter]を押し、サーバーAとサーバーBのテストを開始します。
multicast-test.sh
次の例は、サーバー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. ...
次の例は、サーバー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=servera/195.0.0.1, group=/237.0.0.1:9000, ttl=4. ...
サーバーAとサーバーBの例では、マルチキャスト・パケットを発行して、自身のパケットと相手方のパケット確認しています。これは、マルチキャストのデフォルトのアドレスおよびポートを使用して、これらのサーバー間でマルチキャストが正しく機能していることを示します。
注意: サーバーAは、サーバーBからのパケット1を受信するまでは自身のパケット(1-4)を観測します。 |
双方向マルチキャスト通信が確立できない場合は、次のトラブルシューティングのヒントを使用してください。マルチキャストが正しく機能しない場合は、ネットワーク管理者またはシステム管理者に連絡して、原因の調査と状況への対処を依頼してください。
ファイアウォール: マルチキャスト・テストを実行するコンピュータのいずれかでファイアウォールが採用されている場合は、ファイアウォールがトラフィックをブロックしている可能性があります。マルチキャスト・トラフィックを許可する方法の詳細は、オペレーティング・システムまたはファイアウォールのドキュメントを参照してください。
スイッチ: マルチキャスト・トラフィックを転送するようにスイッチが構成されていることを確認します。
IPv6: IPv6をサポートするオペレーティング・システムでは、JavaがIPv4ではなくIPv6を介したマルチキャスト・トラフィックのルーティングを試行することがあります。Javaシステム・プロパティjava.net.preferIPv4Stack=true
を指定して、IPv4ネットワーキングを実施してみてください。
???の受信: テストで???の受信がレポートされた場合は、マルチキャスト・テスト以外のインスタンスから発信されたマルチキャスト・パケットを受信したことを示します。この状況は、テストを実行するときに、既存のCoherenceクラスタまたはその他のマルチキャスト・アプリケーションと同じマルチキャスト・アドレスを使用した場合に発生します。
複数のNIC: コンピュータに複数のネットワーク・インタフェースが存在する場合は、-local
test
パラメータを使用して、明示的にインタフェースを指定してください。たとえば、サーバーAにIPアドレスが195.0.0.1と195.0.100.1の2つのインタフェースがある場合、テストのコマンド行に-local 195.0.0.1
を含めると、マルチキャスト・パケットが最初のインタフェースを使用するようになります。さらに、マルチキャスト・トラフィックが目的のネットワーク・インタフェースを通じて転送されるように、コンピュータのルーティング表を明示的に構成することも必要になる場合があります。これは、次のコマンドを発行することで実行できます。
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth1
eth1
は、マルチキャスト・トラフィックの送信先になるデバイスです。
AIX: AIXシステムでは、マルチキャストに関して次の問題が発生する場合があります。
IPv6: java.net.preferIPv4Stack=true
を指定することに加え、IPv4の名前解決を実行するためにオペレーティング・システムに追加の構成が必要になることがあります。/etc/netsvc.conf
ファイルに、hosts=local,bind4
を追加してください。
仮想IP (VIPA): AIXでは、VIPAを使用したマルチキャストがサポートされていません。VIPAを使用する場合は、VIPAでないデバイスにマルチキャストをバインドするか、またはマルチキャストを無効にしてCoherenceを実行します。詳細は、『Oracle Coherenceでのアプリケーションの開発』を参照してください。
MTU: マルチキャスト・デバイスのMTUを1500バイトに構成します。
Cisco社製スイッチ: 既知の問題のリストについては、「Cisco社製スイッチへのデプロイ」を参照してください。
Foundry社製スイッチ: 既知の問題のリストについては、「Foundry社製スイッチへのデプロイ」を参照してください。