リダイレクトサーバーとは、Instant Messaging サーバーへの接続エンドポイントの割り当てなどの、リダイレクトタスクのみを実行するように特に設定された Instant Messaging サーバーインスタンスのことです。配備にリダイレクトサーバーを追加すると、互いに通信する可能性の高いユーザーが同一ホスト上にまとめられるため、サーバー間の通信量が減ります。これにより、配備内のサーバー間で送受信される Presence 通知の量が減ります。ユーザーのグループは連絡先一覧の内容によって決まります。連絡先一覧内のエントリが共有されていれば、通信が行われる可能性も高くなります。
Instant Messaging は、配備内のユーザーの最適な分割方法を決定し、ユーザーのグループ、つまりパーティションを作成します。Instant Messaging が使用するアルゴリズムは、次のとおりです。
配備内で 1 つ以上のユーザーセット、つまりユーザーネットワークと、それらの接続関係を決定します。次に、リダイレクトサーバーは各ユーザーをユーザーネットワークにマップするためのユーザー - ネットワーク間のマップと呼ばれるテーブルを作成します。
最大パーティションサイズよりも大きいユーザーネットワークが存在する場合、それらをもっとも弱い結合のところでパーティション分割します。このとき、分割後の各コンポーネントの最大サイズが設定されたパーティションサイズよりも大きくならないように留意します。分割する箇所として弱い結合を特定する際には、ユーザーネットワーク間で接続の数が少ない箇所を特定することが決め手の一つになるかもしれません。ただし、地理的な制約、ユーザーネットワークごとの接続数、管理者によって設定されたその他の制約といったほかのパラメータも、ユーザーネットワークのパーティション分割時に考慮されることがあります。
これらのセットを、指定された数のほぼ同じサイズのパーティションに分配します。リダイレクトサーバーは、まずネットワーク - パーティション間テーブルをこのプロセスの一部として作成し、最後にユーザー - パーティション間テーブルを作成します。これらのテーブルをまとめたものが、リダイレクトデータベースです。リダイレクトデータベースは、各ユーザーを 1 つのパーティション ID にマップします。このデータベースを作成および管理するには、rdadmin コマンド行ユーティリティーを使用します。
この例では、正常なクライアントリダイレクトが行われる場合のイベントシーケンスについて説明します。
管理者が、rdadmin を実行することで、リダイレクトデータベースの生成または更新、あるいはその両方を行います。
ユーザーがリダイレクトサーバーに接続し、認証を試みます。
リダイレクトサーバーが、そのユーザーのアイデンティティーを決定し、対応するユーザー ID をリダイレクトデータベース内で検索します。
リダイレクトデータベース内でそのユーザー ID が見つからない場合、リダイレクトサーバーは (ラウンドロビン機構で決定される) 次のリダイレクトサーバーにアクセスし、そのユーザー ID を含むリダイレクトデータベースを探します。そのユーザー ID がリダイレクトデータベース内で見つかった場合、リダイレクトサーバーはそのユーザーが割り当てられているパーティション ID を取得します。
リダイレクトサーバーが、ユーザーのリダイレクト先となるノードを、割り当てられたパーティション ID に基づいて決定します。
リダイレクトサーバーは、リダイレクト先のノードを含むエラーをクライアントに返し、クライアントへの接続を閉じます。
リダイレクトサーバーは、see-other-host ストリームエラーを使ってこの情報をクライアントに返します。詳細は、RFC 3920 を参照してください。
クライアントがそのエラーを解釈し、そのエラーが返されたノードへの接続を確立します。
リダイレクトサーバーはノードを継続的に監視し、そのパーティションからホストへのテーブルを必要に応じて更新します。
このデータベースにはローカルユーザーしか含まれません。ゲートウェイ、コンポーネント、およびリモートユーザーはリダイレクトデータベースに含まれません。
リダイレクトサーバーとは、クライアント接続のリダイレクトを唯一の機能として持つ、Instant Messaging サーバーのインスタンスのことです。リダイレクトサーバーは、エンドユーザーに対してその他のサービスは何も実行しません。リダイレクトサーバーは起動時に、サーバー設定とパーティションファイルを読み込み、次のデータ構造を作成します。
このサーバーがクライアント接続のリダイレクト先として使用できるインスタンスのリスト。これが、リダイレクトサーバーのインスタンスリストです。インスタンスリストは、redirect.hosts ファイルのエントリに基づいて構築されます。
パーティションを物理ホストにマップするテーブル。このテーブルは「パーティションマップ」と呼ばれます。リダイレクトサーバーは、指定された最大パーティション数に達するまでインスタンスリスト内で検索を行うことで、パーティションマップを構築します。
リダイレクトサーバーは、この両方のデータ構造を使ってクライアント接続のリダイレクトを行います。リダイレクトサーバーがこの情報をどのように使用するかについては、例 7–1 を参照してください。
接続しようとしているクライアントのアイデンティティーを確立するのに必要とされるだけの StartTLS ネゴシエーションが、クライアントとリダイレクトサーバー間で行われる可能性があります。クライアントが資格を確認する必要はありません。必要とされるのはユーザー ID だけです。