CommuniGate Pro
Version 5.1
クラスタ
 
 
 
ダイナミック

ダイナミッククラスタ

スタティッククラスタは、非常に大きいサイトを扱うことができます。ただし、アップタイム(無 停止稼働) が不可欠の条件であるキャリアグレードのシステムとしては必ずしも適当ではありません。

また、スタティッククラスタは緩やかに連結された複数のサーバーのセットであるため、サーバー の数を増やしたい場合、問題が生じます( ドメインの再割り当てが必要で、この作業は複雑です)。

一方、CommuniGate Pro のダイナミッククラスタでは上記のような問題は起こりません。例えば、 アップタイムはファイブナイン(99.999%) を超え、またインフラストラクチャは「シングルサービ スイメージ」です。つまり、システム/ ドメイン管理者は、大規模なクラスシステムを単一の CommuniGate Pro で構成されている小さいシステムと同じように扱うことができます。

スタティッククラスタとダイナミッククラスタの一番の相違は、アカウントのホスティング(操作・ 管理) 方法です。スタティッククラスタの場合、アカウントはホストサーバーによってホストされ、 そのアカウントのデータに直接アクセスできるのは、ホストサーバーに限定されます。一方、ダイ ナミッククラスタでは、すべてのサーバー(バックエンドサーバー) から任意のアカウントのデー タに対して直接アクセスが可能です。

ダイナミッククラスタでは共有アカウントストレージ(アカウント情報格納スペース) を使用しま すが、このアカウントストレージは通常、ファイルサーバーまたはクラスタファイルシステムを使っ て実装します。共有アカウントストレージについては、詳しくは「ストレージ」のセクションを参 照してください。

従来のファイルロック手法

レガシーメールサーバーでは、多くの場合、ファイルサーバーにアカウントが格納されます。ファイ ルサーバーのシステムは通常、マルチプロセスシステムです(Unix)。そのため、シングルサーバー環 境でもマルチサーバー環境でも同期手法は同じです。つまり、オペレーティングシステム/ ファイル システムレベルのファイルロックを使って同期が行われます。

ファイルロック手法には、次のような問題があります。

上記のようにファイルロックには問題があるため、レガシーメールサーバーの中には、MailDir メール ボックスフォーマット(単一のメッセージについて単一のファイルが作成される方式) を使用し、ファ イルディレクトリ処理が「個別」に実行されるようにした製品(ファイルレベルのロックは不使用) もあります。この方式を採用することで、理論的には上記のような問題を解決できます(それでも、 実際には根本的解決にはなりません)。ただし、この方式の場合、ファイルサーバーのストレージの大 半が無駄になります。
つまり、多くのハイエンドサーバーでは、64 キロバイトブロックを使ってファイルが格納されますが、 メールメッセージの平均のサイズは約4 キロバイトです。そのため、メッセージをそれぞれ別個のファ イルに格納すると、結局、ファイルサーバーのディスクスペースの90%以上が無駄になってしまいま す。また、ファイルサーバーの内部ファイルテーブルもオーバーロード状態になります。さらに、ア プリケーションで小さいファイルが多数使われることになるため、ファイルサーバー自体の性能も大 幅に低下します。

Web サーバーの場合、オペレーティングシステム/ ファイルシステムのマルチアクセス機能をベース としたシンプルクラスタリング環境を構築することで、システムは効率よく動作します(ただし、デー タの変更が頻繁な場合には処理速度は低下します)。一方、メールサーバーでは、データ変更トラフィッ クとデータ取り出しトラフィックはほとんど同じであるため、処理速度は低下します。

シンプルクラスタリング環境では複雑な処理には向いておらず(シングルサービスイメージとは異な ります)、また、クラスタのサーバーの数が多いと管理が難しくなります。例えば、シンプルクラスタ リング環境のサーバー数が10 の場合、その管理は、独立したサーバーが10 の構成に比べて難しくな ります。

CommuniGate Pro ソフトウェアでは外部INBOX 機能がサポートされており、この機能を使ってファ イルベースのクラスタリングを行うことも可能です。ただし、ファイルベースのクラスタリングには 上記のような問題があるため、この種のクラスタリングは避けるようにします。代わりに、 CommuniGate Pro のダイナミッククラスタを使用します。


クラスタコントローラ

CommuniGate Pro サーバーのダイナミッククラスタでは、オペレーティングシステム/ ファイルシス テムレベルのロックを使ってアカウント処理の同期が行われることはありません。ダイナミッククラ スタの場合、任意の時点では、いずれか1 つのサーバーからいずれか1 つのアカウントに対して直接、 アクセスが行われます。この処理は、静的クラスタと同じです。

ただし、ダイナミッククラスタの場合、そのアカウントがオープンしており、そのアカウントに対し て別のサーバーからアクセスが試行された場合、そのサーバーを介して別のサーバーによるアクセス が実行されます。一方、そのアカウントがオープンしていないときには、別のサーバーによって直接、 そのアカウントのオープンが実行されます。

このアーキテクチャにより、最大限のアップタイムが保証されます。いずれかのバックエンドサーバー が停止しても、別のバックエンドサーバーからすべてのアカウントに対してアクセスできます。この 処理は自動で行われ、したがってオペレーターによる手動の操作は不要で、結果的にダウンタイムは 発生しません。つまり、サイトの稼働は続き、実際、いずれか1 つのバックエンドサーバーが動作し ていれば、全アカウントにアクセスが可能です。ダイナミッククラスタでは、いずれか1 つのバックエンドサーバーがクラスタコントローラ(Cluster Controller) として動作します。クラスタコントローラは、そのクラスタの他のサーバーの同期をとる という処理を行います。また、共有ドメインの作成、共有ドメインのアカウントの作成と削除といっ た処理を行う機能もあります。さらに、クラスタコントローラにはシングルサービスイメージ機能があり、この機能により、サイトのユーザーや管理者は、ダイナミッククラスタの任意のサーバーに接 続し、任意のアカウント処理(別のサーバー上でオープンされているアカウントについても処理が可 能)、また、任意のドメインレベルの処理(例えば、ドメイン設定の変更) を行うことができます。こ の場合、変更はクラスタの全サーバーに自動的に伝播されます。

注意: ドメインレベルの更新処理( ドメイン設定、デフォルトアカウント設定、WebUser インター フェイス設定、ドメインレベルのアラートなどの更新処理) を行った場合、通常、その変更は30 秒以 内にクラスタの全サーバーに伝播されます。一方、アカウントレベルの設定の変更は、すぐに全サー バーで有効になります。

クラスタコントローラにより、各バックエンドサーバーの負荷に関する情報が収集されます。いずれ かのフロントエンドサーバーからクラスタコントローラにアカウントセッション要求が送信され、そ のアカウントがいずれかのバックエンドサーバーでオープンされていなかったときには、クラスタコ ントローラによって、そのフロントエンドサーバーが負荷の一番少ないバックエンドサーバーに接続 されます。この処理は、セカンドレベルロードバランシング(バックエンドサーバーを対象としたバ ランシング) と呼ばれています。セカンドレベルロードバランシングは、各バックエンドサーバーの 実際の負荷( クラスタコントローラによって収集) をベースにしており、また、ファーストレベルロー ドバランシング(フロントエンドサーバーを対象としたバランシングで、DNS ラウンドロビンまたは トラフィックがベース) を補完する機能です。

ダイナミッククラスタにバックエンドサーバーが2 つ以上ある場合、クラスタコントローラによって、 いずれか1 つのバックエンドサーバーがクラスタコントローラのバックアップ処理を行うサーバーと して割り当てられます。このサーバーは、バックアップコントローラと呼ばれ、他のバックエンドサー バーはいずれも、このバックアップコントローラと常時、接続を保持します。その後、バックアップ コントローラが何らかの理由で動作を停止した場合、別のいずれかのバックエンドサーバーがバック アップコントローラとして選択されます。

クラスタコントローラが停止した場合、バックアップコントローラがクラスタコントローラとして動 作を開始します。同時に、各サーバーから、このバックアップコントローラ(新規のクラスタコント ローラ) に対して再同期情報が送信され、その結果、クラスタは継続して動作し、処理の中断も発生 しません。

ダイナミッククラスタでは、 アカウントレコードを格納したディレクトリを使用することもできま すが、ダイナミッククラスタの機能自体は、ディレクトリとは直接関係ありません。また、ディレク トリを使用する場合、共有ディレクトリとして実装しなければなりません。

典型的なフロントエンド/ バックエンドダイナミッククラスタの場合、通常、ロードバランサを使用 し、また、独立したネットワークが複数必要です。下記は、典型的なフロントエンド/ バックエンドダイナミッククラスタを図示したものです。

Dynamic Cluster

ダイナミッククラスタでは、どのバックエンドサーバーからもアカウントに直接、アクセスが実行さ れます。そのため、クラスタの各オペレーティングシステムではすべて、同じEOL (エンドオブラ イン) 方式が使われていなければなりません。つまり、バックエンドサーバーではすべて、同一もし くは同系のUnix オペレーティングシステム、または、同一もしくは同系のMS Windows オペレー ティングシステムを動作させることが必要です。一方、フロントエンドサーバーからは、アカウント には直接、アクセスは行われないため、フロントエンドサーバーでは任意のOS を使用できます(例 えば、バックエンドサーバーではSolaris OS、フロントエンドサーバーではMicrosoft Windows 2000 というクラスタ構成が可能です)。


クラスタファイルシステムとクラスタOS

最近のオペレーティングシステムでは、システム自体にクラスタ機能が搭載されています。こうした システムでは、「通常」の非クラスタアプリケーションをクラスタ対応アプリケーションとして使用 できます。また、クラスタ機能を搭載したオペレーティングシステムは、CommuniGate Pro でダイナ ミッククラスタを実装する上でも重要です。

とくに次の機能は、非常に有用です。

クラスタファイルシステムとは、オペレーティングシステムのクラスタに属する全サーバー上で、同 一のファイルシステム(通常、共有デバイスに格納) をマウントし、使用できるようなファイルシス テムをいいます。クラスタファイルシステムの場合、ネットワークファイルシステム(NFS) とは異 なり、ネットワーク上に専用サーバーを置く必要はありません。また、ハイエンドSCSI ストレージ デバイスによるSCSI 複数接続が可能で、この接続を介して、ファイバーSAN (ストレージエリア ネットワーク) 上で複数のストレージデバイス間で直接、データを交換できます。さらに、高速サー バー間接続によって、ファイルシステムの整合性が保証されます。

クラスタファイルシステムでは、SAN プロトコルによるファイル転送が可能です。この転送方式は、 ネットワークファイルシステムに比べて高速です。また、クラスタファイルシステムでは、一般的な シングルサーバーNFS ソリューション(通常、NFS サーバーがシングルポイント障害) より高い信 頼性が得られます。
クラスタファイルシステムについては、詳しくは「
ストレージ」のセクションを参照してください。

IP エイリアシング機能とは、ロードバランサがなくても、クラスタサーバー間でネットワーク負荷 を分散できる機能をいいます。

上記のクラスタOS の2 つの機能( クラスタファイルシステムとIP エイリアシング) は、 CommuniGate Pro のダイナミッククラスタ(バックエンドのみの構成) で使用できます。具体的に は、IP エイリアシングを使って、CommuniGate Pro のサーバー間の負荷を分散できます。また、クラ スタファイルシステムに共有ドメインの全アカウントを格納することができます(下図を参照)。

Dynamic - Symmetric

また、クラスタOS のクラスタをCommuniGate Pro のクラスタ構成で使用することもできます。その 場合、クラスタOS の最初のクラスタをCommuniGate Pro の各フロントエンドサーバー(上位レベ ル) に設定し、このクラスタでIP エリアシングによるロードバランシングを行います。また、クラ スタOS の2 番目のクラスタをCommuniGate Pro の各バックエンドサーバー(下位レベル) に使用 し、このクラスタをクラスタファイルシステムとして使います(下図を参照)。

Dynamic - 2 OS Clusters

なお、 CommuniGate Pro のダイナミッククラスタの構成は、ロードバランシングの種類(IP エリア シングまたはロードバランサ)、また、共有ファイルシステムの種類(ネットワークファイルシステ ムまたはクラスタファイルシステム) にかかわらず同じです。


ダイナミッククラスタのバックエンドサーバーの設定

ダイナミッククラスタは、次の手順で構築します。 最初のバックエンドサーバー( クラスタコントローラ) のWebAdmin インターフェイスを使って、ク ラスタコントローラが正常に機能しているかどうかチェックします。チェックする場合、[Domains] ページを開きます。ここで、次の事項が確認されれば、クラスタコントローラは正常に動作している ことを示しています。 

[Create Shared Domain] ボタンを使って、共有ドメインを作成できます。作成した共有ドメインは、 ダイナミッククラスタで使用できます。

クラスタコントローラが正常に動作していれば、サイトでクライアントを動作させることができます (フロントエンドサーバーがない場合)。フロントエンドサーバーがあるときには、いずれか1 つを起 動することで、クライアントの動作が可能になります(下記を参照)。


ダイナミッククラスタへのバックエンドサーバーの追加

既存のダイナミッククラスタには、必要に応じてバックエンドサーバーを追加できます。

ダイナミッククラスタにバックエンドサーバーを追加する場合、そのサーバーをコマンドラインオプ ション--ClusterMember を使って起動します(スタートアップスクリプトに定義することもできま す)。これで、そのサーバーからすべてのバックエンドサーバーのIP アドレスに対してポーリングが 実行され、クラスタコントローラが検索されます。

サーバーが起動できれば、WebAdmin インターフェイスを使って、そのサーバー(バックエンドサー バー) が正常に動作しているかどうかチェックします。チェックするには、[Domains] ページを開きます。ここで、共有ドメインがすべて表示されており、また、共有ドメインのアカウントにアクセス できれば、そのバックエンドサーバーは正常に機能していることを表しています。

クラスタコントローラのほか、少なくてもバックエンドサーバーが1 つ動作していれば、共有ドメイ ンの全アカウントに対する処理が可能です。なお、フロントエンドサーバーがない場合、通常のロー ドバランサスイッチやDNS ラウンドロビン、その他の同等のメカニズムを使って、ロードバランシ ングを実装する必要があります。このメカニズムにより、要求が各バックエンドサーバー間で分散さ れます。


ダイナミッククラスタへのフロントエンドサーバーの追加

既存のダイナミッククラスタには、バックエンドサーバーと同様、必要に応じてフロントエンドサー バーを追加できます。

フロントエンドサーバーを追加する場合、そのフロントエンドサーバーを動作させるコンピュータに CommuniGate Pro サーバーをインストールします。なお、フロントエンドサーバーからは、アカウン トデータに直接、アクセスが実行されることはないため、SharedDomains ファイルディレクトリにア クセスが可能になるように設定(マウントまたはマップ) する必要はありません。

フロントエンドサーバーのWebAdmin インターフェイスで[Cluster] ページを開き( [Settings] -> [General])、すべてのバックエンドサーバーのIP アドレスを入力します。

そのフロントエンドサーバーをいったん停止し、その後、コマンドラインオプション-- ClusterFrontend を使って再起動します(スタートアップスクリプトに定義することもできます)。 これで、そのフロントエンドサーバーからすべてのバックエンドサーバーのIP アドレスに対してポー リングが実行され、クラスタコントローラが検索されます。

WebAdmin インターフェイスを使って、追加したフロントエンドサーバーが正常に動作しているかど うかチェックします。チェックするには、[Domains] ページを開きます。ここで、共有ドメインがす べて表示されていれば、そのフロントエンドサーバーは正常に機能していることを表しています。

フロントエンドサーバー上で、共有ドメインのいずれかのアカウントのオープンが試みられた場合、 クラスタコントローラによって、いずれかのバックエンドサーバーが選択されます。この処理によ り、負荷が各バックエンドサーバー間で分散されます。


共有ドメインに関する設定

ダイナミッククラスタには、共有ドメインに関するデフォルト設定(複数の設定のセット) がありま す。

デフォルト設定は、次の設定で構成されています。

デフォルト設定は、サーバー管理者がWebAdmin インターフェイスを使って変更できます。WebAdmin インターフェイスのページにはリンクが表示されますので、このリンクを使って、サーバーワイドの 設定(非共有ドメインすべてについて有効) とクラスタワイドの設定を切り替えることができます。 クラスタワイドの設定を変更すると、その変更は、全クラスタメンバーについて自動的に有効になり ます。また、クラスタワイドの設定は、全共有ドメインについて有効です。

クラスタワイドの設定は、次の設定または要素で構成されています。

共有処理

ダイナミッククラスタのシングルサービスイメージ機能は、シングルサービスイメージコンポーネ ントによって実装されます。この機能により、共有処理(アカウント設定とドメイン設定を超えた高 レベルのサーバー同期) が実行されます。

共有処理としては、次のものもあります。

ダイナミッククラスタのサーバーの停止

ダイナミッククラスタからいずれかのサーバーを切り離し(停止させ) たい場合、WebAdmin インター フェイスの[Monitors] セクションの[Cluster] ページを開きます。このページで、停止させたいサー バーの[Make Non-Ready] ボタンをクリックします。これで、そのサーバーの状態が[Non-Ready] (非レディ状態) に切り替わります。

[Non-Ready] 状態になったサーバーがフロントエンドサーバーの場合、そのUDP ポートとTCP ポー トがすべて閉鎖されます(ただし、HTTP ポートは除きます)。
ポートがすべて閉鎖されると、ロードバランサ( クラスタのフロントエンドサーバーに受信接続を送 信) が、その状態を検出し、そのフロントエンドサーバーに対する新規の接続とパケットの送信が停 止します。

一方、[Non-Ready] 状態になったサーバーがバックエンドサーバーだった場合、以後、そのサーバー にはコントローラから新規のセッションは一切送られなくなります。その後、既存のセッションがす べて終了するまでしばらく待ちます。セッションがすべて完了すれば、そのバックエンドサーバーを シャットダウンします。

なお、そのバックエンドサーバーがカレントのコントローラだったときには、そのバックエンドサー バー( コントローラ) から新規のセッションがすべて残りの各バックエンドサーバーに送信され、各 バックエンドサーバーで処理されます。ただし、そのクラスタで他にバックエンドサーバーが一つも なかった場合、新規のセッションはすべてコントローラによって処理されます。

[Non-Ready] 状態に切り替えたサーバーは、 同じページにある[Make Ready] ボタンをクリックす ることで再度、有効にできます。有効にしたサーバーがバックエンドのときには、そのバックエンド に対して、コントローラから再度、新規のセッションが送信されるようになります。

何らかの理由でダイナミッククラスタのいずれかのバックエンドサーバーが停止した場合、そのバッ クエンドサーバーでオープンされていた共有ドメインのアカウントは使用できなくなります。ただし、 その後、10 ~ 20 秒でクラスタコントローラが自動的に障害を検出し、アカウントが利用できるよう になります。したがって、いずれかのバックエンドサーバーに障害が発生してもデータが消失するこ とはありません。


ダイナミッククラスタのサーバーのアップグレード

ダイナミッククラスタでは、ローリング(システム非停止) アップグレードがサポートされています。 そのため、サーバーのCommuniGate Pro ソフトウェアを新バージョンにアップグレードする場合、ダ イナミッククラスタのサーバーを1 つずつアップグレードできます。つまり、いずれかのサーバーを 停止し、新バージョンをインストールした後、クラスタに戻すという方法で、順にサーバーのアップ グレードが可能です。アップグレード中、サイトは通常どおり動作します。

なお、新バージョンのCommuniGate Pro ソフトウェアに加えられた変更が原因で、ローリングアッ プグレードができない場合もあります。その関係から、クラスタのサーバーをアップグレードすると きには必ず、あらかじめ変更履歴(History) のセクションの説明をお読みください。クラスタの アップグレードに制限がある場合、その説明が掲載されています。


CommuniGate® Pro Guide. Copyright © 1998-2007, Stalker Software, Inc.