フェイルオーバー失敗回避へ、故障検知と処理引き継ぎの確実性を高める方法

フェイルオーバー失敗回避へ、故障検知と処理引き継ぎの確実性を高める方法
渡辺 享靖 日経BP総合研究所
https://xtech.nikkei.com/atcl/nxt/column/18/01435/100600004/

『サーバーやネットワークの冗長化は情報システムの信頼性を高めるための常套手段だ。しかしシステム障害を防ぐはずの二重化が正常に機能しないという事態は多くの大規模システムで発生しうる。なぜフェイルオーバーに失敗するのか。有効な自衛手段はあるのか。日経コンピュータの過去の障害事例記事を基に、失敗の要因や対策を明らかにしていく。最終回の今回は、フェイルオーバー処理の失敗の防止策を取り上げる。

 フェイルオーバー処理で失敗しないためには、「故障検知」と「処理の引き継ぎ」のそれぞれで確実性を高める必要がある(図1)。

図1●ユーザー企業における四つの自衛策

故障検知と処理引き継ぎの確実性を高めることで、自動フェイルオーバー失敗の可能性を減らすことができる
[画像のクリックで拡大表示]

 故障検知においては、検知対象を広げることがポイントになる。ERP(統合基幹業務システム)ならトランザクション、Webサーバーならレスポンスタイムなどサービスの品質を監視することで、ハードの異常も見抜きやすくなる。

 将来発生しうる故障を事前に発見するソフトの活用も方策の一つだ。サービスの稼働状況やパフォーマンスなどを学習し、それを基に異常値を検知して障害発生の予兆を事前に予測してくれる。

 ネットワーク機器は故障検知のレベルが装置により異なる。例えばポートのリンクの状態だけでなく、指定アドレスに定期的にpingを発行し応答を確認する製品もある。

 処理引き継ぎの信頼性を上げるには、システム導入時の障害テストを手厚くしたい。電源断やケーブル引き抜きによるフェイルオーバーの確認でテストを済ますケースもあるが、タイムアウト設定などの非機能要件についてもテストで確認しておくことが大切だ。

 構成情報管理も徹底したい。冗長構成を組むサーバーは同じ設定でなければならない。ところがネットワーク構成の変化などで設定変更を繰り返すうちにサーバー間で差分が生じ、フェイルオーバーに失敗するケースも多いという。

 故障検知の失敗には、製品のバグに絡むものもある。定期的な改修版の適用が理想だが、適用にはシステムの一時停止が必要だ。提供するサービスや業務とバランスをとって判断したい。

ストレージの対策には限界も

 一方でユーザー側の対策に限界があるのも事実だ。特にストレージの自動フェイルオーバー機能は製品仕様であり、ユーザーが手を加える余地はない。冗長化の設計やテストでユーザーが果たす役割はサーバーなどに比べ限定的だ。製品ベンダーは、より高い可用性を担保する仕組みの提供に取り組んでおり、ユーザーとしては製品選択で信頼性を上げることが現実的だ。

 ハイエンドのストレージ製品では、全プロセッサが同じアドレステーブルを保有し、いずれかが故障してもテーブルの書き換えなしで別のプロセッサがI/O処理を引き継ぐ機能や、複数経路からそれぞれの死活監視をすることで故障検知の精度を上げる機能などを実装するものもある。コストは高くつくが、重要な業務に対してはこうした製品を採用するのも手だ。

 業務データを扱うストレージでユーザーが取れる対策としては、基本的なことだが万が一に備えたバックアップが挙げられる。バックアップを取得したうえで、システムがダウンしても早期に業務復旧できるようリストア手順を整備しておくのだ。

 富士フイルムでは2012年1月の障害を受け、データロスなどの重大障害発生時の業務フローを整備した(図2)。障害発生時は解析・復旧チームとデータリストアのチームに分かれて作業する。ポイントは障害解析・復旧を一旦諦め、データのリストアに取り掛かるタイミングの設定だ。同社では平日の日中帯の場合、3~4時間以内に復旧のメドが立たなければ、バックアップデータをリストアする判断を下す。リストアするデータの順番も業務の優先度に応じあらかじめ決めてある。

図2●富士フイルムが新たに整備した業務フロー
システムの優先度に応じたデータリストアなど、緊急策に移行するためのフローと判定ポイントを新たに作成した
[画像のクリックで拡大表示] 』