Sun Cluster 3.0 ご使用にあたって

アプリケーショントラフィックのためのクラスタインターコネクトの利用

クラスタでは、ノード間に複数のネットワーク接続が存在してクラスタインターコネクトを形成しなければなりません。クラスタリングソフトウェアは、複数のインターコネクトを高可用性とパフォーマンスの向上のために利用します。内部のトラフィックでは (たとえばファイルシステムのデータやスケーラブルサービスのデータ)、メッセージは利用可能なすべてのインターコネクトの間でラウンドロビンによりストライプ化されます。

クラスタインターコネクトは、アプリケーションからもノード間の可用性の高い通信のために利用できます。たとえば、分散アプリケーションでは、構成要素が異なるノードで実行されていて通信が必要なことがあります。パブリックインターコネクトの代わりにクラスタインターコネクトを使用することで、これらの接続は個別リンクのエラーを回避できます。

ノード間の通信にクラスタインターコネクトを使用するには、アプリケーションは、クラスタをインストールした際に構成されたプライベートホスト名を使用する必要があります。たとえば、ノード 1 のプライベートホスト名が clusternode1-priv である場合には、ノード 1 とクラスタインターコネクトで通信する際にこの名前を使用します。この名前で開いた TCP ソケットは、クラスタインターコネクトを経由して転送され、ネットワークエラーが発生した際には透過的に再転送できます。

プライベートホスト名はインストール時に構成できるため、その時にはクラスタインターコネクトに任意の名前を使用できます。実際の名前は、scha_cluster_get(3HA) に scha_privatelink_hostname_node 引数を指定することで取得できます。

アプリケーションレベルでクラスタインターコネクトを使用する場合は、各ノードのペアの間で単一のインターコネクトを使用しますが、異なるノードのペアに対しては、可能であれば独立したインターコネクトを使用します。たとえば、3 ノードで実行中のアプリケーションがあり、クラスタインターコネクトで通信しているとします。この場合、ノード 1 と 2 の間の通信には hme0 インタフェースが使用され、ノード 1 と 3 の通信には qfe1 インタフェースが使用されることになります。つまり、アプリケーションが任意の 2 ノード間で通信する場合は、単一のインターコネクトに限られますが、内部クラスタリングの通信は、すべてのインターコネクトでストライプ化されます。

アプリケーションは、インターコネクトを内部クラスタリングのトラフィックと共有しており、従って、アプリケーションが利用可能な帯域幅は、他のクラスタリングトラフィックが使用している帯域幅に依存していることに注意してください。エラーが発生した場合、内部トラフィックは残っているインターコネクトにラウンドロビンできますが、アプリケーションの接続でインターコネクトにエラーが出た場合は、稼動中のインターコネクトに切り替わります。

2 種類のアドレスがクラスタインターコネクトをサポートしており、プライベートホスト名に gethostbyname(3N) を実行すると、通常 2 つの IP アドレスを返します。最初のアドレスは論理 pairwise アドレスと呼ばれ、2 番目のアドレスは論理 pernode アドレスと呼ばれます。

各ノードのペアには、独立した論理 pairwise アドレスが割り当てられています。この小規模な論理ネットワークが、接続のフェイルオーバーをサポートしています。各ノードには固定 pernode アドレスも割り当てられています。つまり、clusternode1-priv の論理 pairwise アドレスはノードごとに異なっていますが、clusternode1-priv の論理 pernode アドレスは各ノードで同じです。しかし、ノードは pairwise アドレスを自分で持っているわけではないため、ノード 1 に gethostbyname(clusternode1-priv) を実行しても、戻るのは論理 pernode アドレスだけです。

アプリケーションが、クラスタインターコネクトによる接続を受け入れてから IP アドレスを確認する際には、セキュリティ上の理由から、gethostbyname で返される最初の IP アドレスだけではなく、すべての IP アドレスを検査する必要があることに注意してください。

アプリケーション全体にわたって一貫した IP アドレスが必要な場合は、クライアントとサーバーの両側で pernode アドレスをバインドするようにアプリケーションを構成し、すべての接続が pernode アドレスで行き来するようにしてください。