HPCシステムズではエンジニアを募集しています。詳しくはこちらをご覧ください。
HPCシステムズのエンジニア達による技術ブログ

Tech Blog

システムの可用性を考えるための基礎

背景

システムは壊れることを前提に、ユーザーの優先順位に従い、被害を最小限にするよう設計されます。つまり、被害の定義や優先順位によってその設計は変わってくることになります。ここではそのための用語と方針について、簡単に触れてみたいと思います。

冗長化(Duplication)

システムの運用が連続的に続けられる性質を可用性(Availability)とよび、それを実現するために同じものを複数用意し、いつでもどちらかが利用可能とすることを冗長化と呼びます。冗長の具合により最低限必要な個数をNとしてN+1といった表現を用います。RAID6はN+2相当と考えられます。冗長化は可用性を高めるための最も一般的な手法ですが、唯一の方法とは限りません。

なんらかの方法で可用性を高めた設計のシステムを高可用性(High-Availability=HA)システムといい、多くの場合2重化されているものを指します。目的に合わせて、ハードウエアで実現するもの、ソフトウエアで実現するもの、その両方を駆使するものなど多彩です。

一方で、設計上この部分がやられるとシステムの運用が継続できない、という部分があったとします。それを単一障害点(Single Point of Failure=SPOF)と呼びます。どうしてもこの部分が発生する場合は、そこを強化して障害が起こりにくくするなどの対策をとるか、もしくは諦めてしまった上で障害の起きる条件を限定し、その場合の被害を最小化するようにします。

2重化したシステムで、常にどちらもが可動して同じように処理を行う構成をActive-Activeといい、通常は片側のみが稼働し、障害時のみもう一方が稼働を始めるように構成したものActive-Standbyと言います。前者では負荷を分散して通常の性能を2倍にすることも可能ですが、いずれにせよ最低限必要な性能を持つ機材を、2倍の規模で揃えることが必要となります。

耐障害性(Fault Tolerance)

この用語は見る視点によって定義が異なってくる可能性が高いので注意が必要です。上記の冗長性を用いて、外から見た時にシステムとして完全性を保っていることを指す場合(障害がおきた機材の上で動いていたものについては諦める)と、ユーザーの処理が止まらない(システムの障害を理由に処理が落ちない、影響を受けない)ことを指す場合があります。前者であれば、上記の冗長構成で実現可能です。しかし後者を実現するのは、どこまでを実現しなくてはならないのかを厳密に検討しておかねばなりません。

例えば長時間かかる計算を実行している時、コンピュータが障害で落ちてもその計算は引き続き他のコンピュータで継続できるようにするのは至難の業です。一方で障害を検出したら自動的に別のコンピュータ上で計算を再度回すことで、時間は取り戻せなくても計算が終了することは保証できるかもしれません。システムだけでなく、アプリケーション側がチェックポイント・リスタートなどの機能を備えていれば、それを駆使することも検討できます。いずれにせよ余剰な機材や、普段の使い方を含む運用設計が必要なことは変わりありません。

災害復旧(Disaster Recovery)

自然災害や人為的な攻撃などにより、システム全体もしくはその機能全体が失われた時、運用を再開できるようにすることを意味します。拠点間バックアップなどでデータが失われることを防止したり、それを用いて他の拠点で同様のシステムを構築し直したり、それをどれくらいの時間で実現できるかをシミュレーションします。システム単体ではなく、事業継続性の設計のための指針です。

まとめ

安心して使い続けられるシステムを構築するには、リスク、コスト、使い勝手、復旧手順など、多くの検討課題があります。ローコストで容易に実現できるものもあれば、現在の技術では実現困難なものもあります。要件が競合してしまったり、成功率の高低など、多くの場合でなんらかの妥協を求められるものです。シビアな要件を実現するにはコストもかさみますが、一般に成功率も下がります。また、障害時には想定していないことが往々にして起こるものです。

逆に、明確な優先順位を考慮すれば、当たり前だと思っていた対策が不要になるケースもあります。一方で構築する側と使っている側で、当たり前の中味が異なっていたことで被害が想定以上に拡大した、という不幸なケースもあります。用語の定義が一致していることは必要条件ですが、用語の解釈に流されず、要件ベースで検討した共通認識を持つようにしたいものです。目的は高可用性システムを構築することではなく、使いやすいシステムで得られる計算結果から知見を得ることのはずですから。