サービスを止めないためのHAクラスタ

| 5.2. クラスタシステムの基礎

5.1. サービスをとめないための施策

HAとは、High Availabilityの略で、日本語では「高可用性」と訳されます。可用性が高いシステムとは、障害が発生しにくい、または、障害が発生したとしても停止時間が短く、使用できる時間が長いシステムを指します。

企業がシステムを利用してサービスを提供する場合、どのようにしたら可用性を高めることができるのでしょうか。

まず、どのようなリソースが必要になるか考えてください。サービスを提供するためのアプリケーション。アプリケーションが扱うデータ。アプリケーションを動作させたり、データを格納するためのハードウェア。そしてハードウェア(システム全体)を設置する場所が必要になります。絵にすると、以下のようなレイヤー(層)に分けて考えることができます。

設置場所の上にハードウェアが存在し、ハードウェアの上にアプリケーションとデータが位置します。

図5-1 システムが必要とするリソース

可用性が高いシステムを構築するためには、それぞれのレイヤーにおける障害リスクを予測し、あらかじめそれらのリスクへの対策をとっておく、ということが重要なポイントとなります。それぞれのレイヤーで予想される障害の例を以下に示します。

レイヤー予測されうる障害リスク
設置場所
  • 停電
  • 火災、地震などの災害
ハードウェア
  • ハードウェア部品(電源/メモリ/ディスクなど)障害
  • ネットワーク機器障害
  • 電源ケーブル/ネットワークケーブル障害
データ
  • ディスク障害によるデータ消失
  • オペレーションミスやアプリケーション誤動作によるデータファイル破損/データ消失
アプリケーション
  • OS制御不能/異常終了
  • アプリケーション制御不能/異常終了

次に、これらの障害に対し、どのような対策がとれるかを考えてみたいと思います。


5.1.1. 設置場所に関する障害対策

「設置場所はどこにしますか?」

設置場所に関する障害対策を考える前に、まずはこの質問の答えを出さなければなりません。設置場所をどこにするかで、必要な対策が異なります。設置場所の候補としては、自社内、またはデータセンタ等の社外インフラがあげられます。

社外インフラを利用するメリットは、耐震や電源設備の冗長化、防火/消化設備が充実しているため障害リスクが低いことです。自社内に設置する場合は、停電やブレーカー落ちによる電力ダウン、火災や地震による建物の焼失、崩壊に対するリスクに備える必要があります。電力ダウン対策としては、UPS(Uninterruptible Power Supply:無停電電源装置)の利用が考えられます。UPSは、突発的な電力ダウンによるサーバ停止に伴うデータ破損などを防ぐことが主な役割で、障害時でも安全にサーバを停止させることで二次災害を防止します。ですので、一時的な電力ダウン時は有効ですが継続的な電力停止には対応できません。

地震などのリスク対策では、支社など、地理的に離れた拠点を持っている場合は、そこにバックアップを置くなどの対策が考えられます。

耐障害性でみると社外インフラが圧倒的に有利ですが、社内環境を利用する場合は、利用できるハードウェアやアプリケーションの選択の自由度が高いというメリットもあります。そのため、既存のハードウェアが利用できる場合には、非常に低コストでシステムを構築することができます。

それぞれメリット、デメリットがありますので、どちらを選択するかは、サービスの性質とコストバランスを考慮して判断することになるでしょう。


5.1.2. ハードウェアに関する障害対策

ハードウェア障害対策の最初のステップは、個々の部品を冗長化することから考えます。サーバの場合は、電源ユニット、冷却ファン、CPU、メモリ、ハードディスク、ネットワークアダプタなどです。このうち、経年と共に故障する確率が高くなるのが電源ユニットや冷却ファン、ハードディスクです。

電源ユニットや冷却ファンの冗長化は、対応できる機種が限られており、比較的上位機種のサーバを選択する必要があります。

ハードディスクの冗長化にはRAIDという技術が使われます。RAIDには0~6までの種類があり、耐障害性用途には、主にRAID1やRAID5が使われます。RAID1はミラーリングと呼ばれる方法で、二台以上のディスクにまったく同じものを書き込んで置き、一台のディスク障害に備えるものです。耐障害性が増す一方で、ディスク容量の利用効率は50%以下となってしまいます。RAID5では、ディスク障害時にデータを修復するために、「パリティ」と呼ばれるコードを、全ディスクに分散して保存しておきます。一台のディスクに障害が発生した際に、その他のディスクのデータとパリティ情報からデータを修復することができます。RAID5はRAID1に比べ利用効率の良い方式ですが、最低三台のディスクが必要になること、データ保存時に「パリティ」コードも計算して書き込むため書き込み性能が劣る、データ復旧に時間がかかる等の欠点もあります。最近のサーバは、下位機種でも安価にRAIDの設定が可能となっています。

近年、電源ユニットや冷却ファン、ハードディスクは、ホットスワップと言って、コンピュータの電源をつけたまま、再起動することなく、部品の脱着ができるようになりました。

メモリの冗長化には、メモリミラーリングやスペヤメモリなどの技術があり、上位機種ではサポートされていることがあります。メモリミラーリングとは、メモリモジュールを2分してミラー化した構成をとり、二つのメモリに同時にデータを書き込むことで、プライマリメモリーでの障害に備えます。スペヤメモリでは、障害発生の予兆のあるメモリのデータをスペアメモリに書き込み、サーバを停止することなく、障害が発生する可能性の高いメモリを切り離します。

CPUについては、インテルのXeonに代表されるデュアルプロセッサ、マルチプロセッサの登場により、耐障害性に優れたCPUを容易に手に入れることができるようになりました。

ネットワークアダプタについては、複数のネットワークアダプタを束ねた一つのアダプタとして機能させ、負荷分散や帯域向上、耐障害性の向上を図る技術にチーミングという技術があります。チーミングに対応したデュアルポートのネットワークアダプタを利用すれば、ネットワークアダプタの耐障害性を増すことが可能です。

このように個々の部品レベルで冗長化することも可能ですが、OSやアプリケーションなどのソフトウェア障害が原因でサーバ自体が止まってしまう、というリスクは残ります。物理的な部品故障以外のリスクを考慮する場合は、次のステップとして、サーバ自体を冗長化する方法を考えます。


5.1.3. データに関する障害対策

ディスク障害によるデータ消失については、上述したRAIDディスクを利用することで、ある程度防ぐことが可能です。

しかし、オペレーションミス等によるデータファイル破損やデータ消失は防ぐことができません。このようなデータ障害への対策には、定期的なデータのバックアップやDBMSのチェックポイント機構とトランザクションログを使ったデータ復旧が有効です。一般的にデータのバックアップはサーバのアイドル時間を利用して行われます。


5.1.4. アプリケーションに関する障害対策

容易な障害対策としては、アプリケーションのプロセスを監視し、プロセスダウンまたはフリーズした際に、アプリケーションを再起動する、という方法が考えられます。しかし、この方法では、複数のアプリケーションで構成されるサービスではプロセス制御が難しい場合があります(例えば、Webアプリケーションがデータベース接続中に、RDBMSがフリーズした場合の制御など)。また、OSが制御不能となった場合には対処できません。このような場合は次のステップとして、サーバを冗長化し、同一構成でアプリケーションを組み上げ、クラスタ化を考えます。

以降の節では、クラスタシステムについて説明します。

無料小冊子のお申込みはこちら

株式会社システム計画研究所のオフィシャルサイトはこちら

当サイトへのご質問及び安全・安心・信頼のシステム開発に関するご相談はこちら

通信・ネットワークシステムの開発マネージメント情報サイト「通信・ネットワークシステム開発.COM」はこちら

サーバ監視・ネットワーク監視ツール isNetSentry-S のサイトはこちら