【設計】高可用性システム構築について

■ 関連用語

可用性 (Availability)

 * システムの壊れにくさのこと
 * システムの可用性を向上させるには、そのシステムを構成する部品を冗長化し、
   Single Point of Failureをなくすことが重要である

高可用性(High Availability; HA)

 * システムなどの可用性が高い状態のこと
  => つまり、システムなどにおいて、サービス提供が出来なくなる事態が少ないこと
   => システム全体の停止時間を如何に短くすることに着目
 * そのようなシステムを、「HA構成」と呼ぶ

冗長化 (じょうちょうか、Redundant)

 * 最低限必要な量より多めに設備を用意しておき、
   一部の設備が故障してもサービスを継続して提供できるようにシステムを構築すること

SPOF(Single Point of Failure; 単一障害点)

そもそも、SPOFとは?

 * 停止するとシステムの全体が停止するような箇所。
 * SPOFの防止として、複数の装置・系統を用意して同時に使ったり、
   すぐ切り替えられるよう待機させたりする多重化がよく行われる

クラスタリング(Clustering)

 * 複数コンピュータを連結し、クライアントに対して
   1台のコンピュータであるかのように振舞わう技術

HAクラスタ(High Availability Clustering)

 * サーバを複数台使用して冗長化することにより、
   システムの停止時間を最小限に抑え、可用性を向上させるクラスタシステム

フェイルオーバー

 * アプリケーションを動かしているサーバで障害が発生した場合、
   クラスタシステムが障害を検出し、待機系サーバでアプリケーションを自動起動させ、
   業務を引き継がせること

ロードアベレージ(Load Average)

 * 「1CPUにおける単位時間あたりの実行待ちとディスクI/O待ちのプロセス数」を表す
  => システム全体の負荷状況を表す指標であり、ロードアベレージは低いほどいい

コールドスタンバイ / ホットスタンバイ

コールドスタンバイ(Cold Standby)
 * 同じ構成のシステムを2系統以上用意しておき、主システムを作動させ、
   もう片方は、予備システムとして作動させずに待機状態にしておく
 => 主システムに障害が生じた場合、予備システムが処理を受け継ぐ

【メリット】
 * 安価

【デメリット】
 * ホットスタンバイに比べ、若干復旧に時間がかかる
ホットスタンバイ(Hot Standby)
 * 同じ構成のシステムを2系統以上用意しておき、主システムを作動させ、
   もう片方は、予備システムとしてm同じ動作を行いながら待機状態にしておく

【メリット】
 * 信頼性が高い
 => 主システムに障害が生じた場合、データコピーの時間もなく、且つ、障害前のデータを利用できるため、
    業務停止時間を短縮し、かつ、データの復旧性を高める

【デメリット】
 * コールドスタンバイに比べ、主系と待機系の同期に余計なコストがかかる

クラスタ方式(Clustering)

 * HA(High Availability)クラスタ
   1) フェイルオーバークラスタ
     1-1) 共有ディスクタイプ
     1-2) データミラータイプ
     1-3) 遠隔クラスタ
   2) 負荷分散クラスタ
     2-1) ロードバランスクラスタ
     2-2) 並列データベースクラスタ

■ フェイルオーバークラスタ

 * クラスタシステムでは、サーバ間でデータを引き継がなければならない

共有ディスクタイプ

 * このデータを共有ディスク上に置き、ディスクを複数のサーバで利用する形態

データミラータイプ

 * すべてのデータをほかのサーバのディスクにミラーリングするため、
   SPOFが存在しない理想的なシステム構成を実現できる
デメリット
1) ネットワークを介してデータをミラーリングすることによるディスクI/O性能(特に更新系)
 => 大量のデータを必要とする大規模システムには不向き
2) サーバ障害後の復旧における、ミラー再同期中のシステム性能(ミラーコピーはバックグラウンドで実行される)
3) ミラー再同期時間(ミラー再同期が完了するまでクラスタに組み込めない)

遠隔クラスタ

 * 遠隔地にフェイルオーバーする
メリット
 * 万一地震などの災害が発生して、一方のサイトが破壊されても、ほかのサイトで運用を継続できる

■ ロードバランス クラスタ

実現方法

 * 実現方法としては、以下がある
 [1] マルチポイント方
 [2] コーディネータ方式
[1] マルチポイント方式(Multipoint system)
【実現順序】
1) 分散ノードであるサーバが同じ仮想IPアドレスを持ち、要求はすべてのノードが受け付ける
2) 各ノード間ではネゴシエーションを行っており、次にどのノードが処理するかを決める
3) 処理を行うノード以外はその要求を破棄する

【メリット】
 [1] 専用装置を必要とせず、既存のサーバに組み込むことで負荷分散環境を構築できる
 [2] 分散ノードが並列なためSPOFにならない
[2] コーディネータ方式
 * 負荷分散装置(専用ハードウェアorソフトウェア)で実現している方法で、
   クライアントからのすべての要求をいったん装置で受け、配下のノードに対して分散させる

ロードバランス

 * 以下の関連記事を参照のこと。
http://blogs.yahoo.co.jp/dk521123/34676395.html

参考文献

(1) 多様化するクラスタ方式

http://www.atmarkit.co.jp/ait/articles/0103/13/news002.html

(2) フェイルオーバーの仕組みと問題点

http://www.atmarkit.co.jp/ait/articles/0104/14/news003.html

(3) 高可用性システム構築のポイント

http://www.atmarkit.co.jp/ait/articles/0105/15/news002.html

(4) ロードバランスクラスタの実装

http://www.atmarkit.co.jp/ait/articles/0106/09/news002.html