Turbolinux Cluster LoadBalancer 11 は、複数の異なるコンポーネントから構成されています。これらのコンポーネントは互いに動作することによって、負荷分散、フェイルオーバー、高可用性などのクラスタリング機能を実装しています。これらのいくつかはカーネル領域で実行されますが、デーモンとして実行されたり、コマンドラインから実行されるものもあります。この章では、Turbolinux Cluster LoadBalancer 11 を構成する各部分とそれらがお互いにどのようにして適合されているのかについて説明します。
この章で説明する情報はクラスタを構築するには重要ではありませんが、Turbolinux Cluster LoadBalancer 11 の動作を理解するのに役立ちます。これによって、発生する問題をより効率的にトラブルシューティングすることができます。
この章では、以下のトピックについて説明します。
SpeedLink カーネルモジュール
clusterserverd デーモン
アプリケーションスタビリティエージェント(ASA)
同期化ツール
クラスタ管理コンソール(CMC)
各コンポーネントがお互いどのように適合しているのか
Turbolinux Cluster LoadBalancer 11 の心臓部は、SpeedLink カーネルモジュールです。これは、入力 IP トラフィックを受信し、すべての転送決定を行います。
SpeedLink 自身は、ip_cs という名前のモジュールです。このモジュールが、実際の作業を行います。このモジュールは、TCP/IP スタックのカーネルパッチによって指定された場所にプラグインします。次に各入力ネットワークパケットを監視し、それをクラスタに送信するかどうかを決定します。これは、パケットの宛先アドレスを調べることによって行います。宛先アドレスがクラスタの仮想 IP アドレスに一致していれば、パケットは ip_cs モジュールを介して送信され、さらに処理が行われます。宛先アドレスが一致しない場合、パケットは TCP/IP スタックに戻され、通常の処理が行われます。
ip_cs モジュールがパケットを受け取ると、パケットの転送先を判断するためにいくつかの処理を行います。これは、いくつかのテーブルを調べることによって行います。サービス、サーバー、および現在のコネクション用に、3 つの主要テーブルがあります。前に述べたように/proc/net/cluster/configファイルで、これらのテーブルサイズを修正できます。
発生する最初の作業は、パケットが既存のコネクションに属しているかどうかをチェックすることです。属していれば、パケットはそのコネクションにある残りすべてのパケットと同じサービスノードに送信されます。これによって、クライアントとサーバーはセッションを確立できます。セッションは、会話のようなものです。クライアントはセッションを開始し、次にクライアントとサーバーはそのうちの 1 つの会話が終わるまでパケットを交換します。セッションが閉じられた後は、同じクライアントが別の同じような会話を開始する場合に備えて、定義した期間だけ現在のコネクションテーブルに残ります。この期間は、秒単位で /proc/net/cluster/timeout に設定できます。また、構成ファイルの ConnectionTimeout および tlclbconfig の[アドバンスドトラフィックマネジャ(ATM)設定]メニューから設定することができます。
パケットが既存のセッションに属していない場合、それがクラスタが処理するサービスポートに送信されているものかどうかをチェックします。そうであれば、ip_cs モジュールはサーバーリストを調べて、どのサービスノードがこのサービス要求を処理できるかを判断します。サービスノードは通常ラウンドロビン形式で選択されますが、各サービスノードに重み付けが関連付けられているかどうかも考慮されます。
ip_cs モジュールは、/proc/net/cluster ディレクトリも処理します。このディレクトリは、モジュールが処理を行うのに必要とするテーブルへのアクセスを提供します。このディレクトリにあるファイルのほとんどは、書き込みまたは読み出しが可能です。ファイルを読み出すと、現在どのコネクションが存在しているかなどの情報を得ることができます。ファイルに書き込みを行うことによって、モジュールが処理を行うのに使用するサーバーやサービスを構成できます。/proc/net/cluster ファイルの詳細については、第7章 を参照してください。