今から約2年前。流通業のA社は、多くの顧客から要望の高かったインターネットショッピングへの参入を決断した。システム構築を担当したB社は実力No.1のMさんをリーダーに、特別プロジェクトを編成。高い可用性を満たすため、サーバにクラスタリングを導入し、万全を期したはずだった。
ところが運用を開始してしばらく経ったある日、家族と外出していたMさんの携帯にA社の運用担当者から一本の電話が……。「サーバがダウンした。クラスタのはずなのに、どうなっているんだ!」と連絡が入ったのだ。Mさんは予想もしない事態に仰天し、急いでエンジニアを現地に派遣して復旧させたが、約1時間の業務中断でお客様はカンカンだ。
しかし、あとで調べたところ、実は1年半前に片側のサーバで障害が発生してクラスタが切り替わり、その後もう片方のサーバのみで運用していたことが判明した。A社のサーバ管理者も「そういえば、以前何かログが上がっていたような」と振り返る。せっかくのクラスタリングで万全のはずが、どうしてこんなことに……
ITのシステムはもはや完全に社会のインフラになっています。スイッチを押せば電気が点いて、蛇口をひねれば水が出るというように、いつも使えることが期待されています。このように、使いたい時に使える状態にあることを「可用性」と呼び、ITのシステムではその可用性を高めるために、さまざまな対策がなされています。今回は可用性の確保について見ていきましょう。
可用性というと、個々の部品やソフトが安定していて壊れないということを真っ先に思い浮かべます。これは「信頼性」と呼ばれる要件で、可用性の重要な要素の1つになります。しかし、それだけでは可用性は確保できません。可用性を構成する要素としては、障害が発生しにくいこと(信頼性)以外にも、メンテナンスしやすいこと(保守性)や障害時でも動作を継続できること(対障害弾力性)、外部の攻撃から守られること(セキュリティ)などがあります。これらが相互に補完することで、可用性が確保されるのです。
事例の「クラスタリング」という手法は、稼働系と待機系の複数のサーバを用意し、稼働系で障害が発生しても待機系に切り替えて処理を行なえる代表的な高可用性技術です。重要な業務システムのサーバでは、よく用いられています。