2016年3月22日に発生した、全日本空輸株式会社(ANA)の国内線システム障害についての考察
表記の件について、エンジニア目線で考察してみる。
なお、原文は以下。 www.ana.co.jp
ちなみにANAさんの発表は株主や顧客に対してできる限りの説明責任を果たすためのものであって、 世のエンジニアに何が起きたのかを教えるためのものではないので、 今のANAさんの発表内容を批判する意図の記事ではないです。
目次
システムの構成
ANAさんが公表している構成図 www.ana.co.jp を参照。ポイントは以下。
- DBサーバが4台あり、同期が必要
- DBサーバにはAPサーバとの通信用通信路以外に「同期通信用の通信路」がある
- 同期通信用の通信路を「ネットワーク中継機」が実現している
- ネットワーク中継機には予備機が存在し、ネットワーク中継機が故障した際は予備機がその機能を引き継ぎ、DBサーバ間の同期通信が正常に行える状態になる
何が起きたのか
- ネットワーク中継機(他の報道によると、シスコシステムズ合同会社のCatalyst 4948E)が故障したにも関わらず、予備機が正常にその機能を引き継がず、DBサーバ間の同期が正常に行えなくなった
- 結果的にアプリケーションが正常に動作しなくなった
考察したいポイント
- 今回の事象(ネットワーク中継機の故障)が発生した際、具体的にどのように予備機に切り替わる想定だったのか
- 今回なぜそのように動かなかったのか
どのように予備機に切り替わる想定だったのか
ANAさんの発表から部分引用
本来であれば、ネットワーク中継機が故障すると「故障シグナル」を発信し、予備機に自動的に切り替わる設計になっておりますが、
- (故障したネットワーク中継機が?それ以外が?主体不明)「故障シグナル」を発信する
- (ネットワーク中継機の予備機が?それ以外が?主体不明)「故障シグナル」を受信し、予備機に自動的に切り替わる
ここがキモですが、主体不明なので切り替えのメカニズムがいまひとつ見えてきません。
今回なぜ、想定どおりに動かなかったのか
今回は故障しているにも関わらず「故障シグナル」を発信せず、予備機に自動的に切り替わりませんでした。
ここは前段のメカニズムが明らかになれば、ある程度納得できそう。
もっと知りたい点
故障シグナルを発信する主体は誰(どの機器)で、何をもって故障と判断するのか
- 誤検知(false positive)や見逃し(false negative)は起こりうるのか?
- 仮に故障シグナルの発信主体が故障機自体だとすると、見逃しは簡単に起こりそう。(例えば電源断とか)
故障シグナルを受信するのは誰(どの機器)で、受信後どのように振舞うことで、全体として動作継続するのか
- (発信主体による見逃しも含め)故障シグナルの受信に失敗したらどうなるのか
- 発信主体の誤検知による故障シグナルを受信したらどうなるのか
「2.再発防止策」の「(1)同一事象の検知」について
同一事象が再発し、ネットワーク中継機が「故障シグナル」を出さない場合でも、データベースサーバーからネットワーク中継機の故障を検知できる改善を実施しました。(2016年3月24日に実施しました)
- 故障シグナルの受信者はデータベースサーバーなのか?
- 故障を検知(他の3台のデータベースサーバーと同期が正常に行えないことを把握)したデータベースサーバーはどう振舞うのか?その際、システム全体として処理が継続できるのか?
「2.再発防止策」の「(2)メーカーによる改善策」について
不具合のあった機器は、製造メーカーにおいて解析を実施し、故障個所が判明しております。 現在、製造メーカーにて改善策を検討中です。
- 故障箇所は具体的にどのレベルまで判明しているのか?
- ハードウェア?
- ソフトウェア?
- OS?
- その他何らかの機能?(例えばVRRPとか)
- 問題のあった振る舞い?(例えば「Masterが居なくなった際に自身(Backup)がMasterに昇格する振る舞い」とか)
不具合の発生条件
※このセクションは3/31 15:20頃追記しました
中継機の故障内容は以下の2点とされています。
- 中継機能の故障
- トラフィックの転送そのものができなくなった、ということと推測
- 「故障シグナル」の発信機能の故障
- 聞いたことのない機能なので、詳細不明
これらの故障の原因(トリガー)が気になる。
上記には
「本番環境と同等の作りにしてあるテスト環境にスイッチを持ち込んでテストしたところ、不具合が再現した」(ANA広報)
とあるので、トリガーは判明していると思われる。
まとめ
正直エンジニアとしてはこの内容ではさっぱりわからない。 続報があれば記事の修正なり別記事を書くなりしたいと思います。
この記事の改定履歴
- 2016/03/31 15:20頃
- もっと知りたい点に「不具合の発生条件」を追記
- ANAさんの報告ページのURLが変わっていたので差し替え