2020年10月1日に東京証券取引所(以下、東証)のシステム障害が発生した。執筆時までに開示された情報は限定的なので、まだ推測の域を出ないところもある。だが、日本に非常に大きな影響を与える出来事だと思うので、今回のシステム障害に関して技術者の視点で考察しておきたい。
まず、執筆時までに正式に発表された情報を要約すると以下の通りだ*。
障害が発生したのは、高速取引システム「アローヘッド(arrowhead)」内にある、株価などの情報を配信する「相場報道システム」である。
- 最初に、ネットワークの共有ディスク装置1号機のメモリー故障が発生した。予定では2号機の運用に切り替わるはずだったが、うまく切り替わらなかった。
- その影響で、情報配信ゲートウェイというサーバーの配信処理、および取引所側の監視処理に異常が発生した。
問題発生箇所は、まさにシステムの「アキレス腱」
今回の問題は、丸1日取引が停止になるという大変残念な結果になった。慎重に設計されたシステムにおける最大の弱点である「アキレス腱(けん)」が切れてしまったようなもので、今後も同様の問題が起こる可能性は捨てきれない。
事の始まりはディスク装置のメモリー故障だが、問題はそこではない。ハードウエアの故障はどんなシステムでも想定していることだからだ。問題は1号機の故障に伴い、2号機と呼ばれる装置に運用が切り替わらなかったことにある。
「切り替わる」という表現から、恐らく今回は2台で構成されるActive-Standby(アクティブ/スタンバイ)構成のHA(High Availability)クラスターを組んでいたと思われる〔後述するActive-Active(アクティブ/アクティブ)構成の場合は、切り替わるではなく「切り離す」と表現する〕。
Active-Standby構成のHAクラスターは、今回のようなミッションクリティカルな(障害や停止が許されない)システムにおいて、最後まで残っている「アキレス腱」のようなものだ。弱点であると同時に、失敗するとシステム全体の停止につながる。
筆者はかねてこのActive-Standby構成のHAクラスターには否定的だ。その理由は、設計者の期待通りに動かない要素が多く、システム障害につながりやすいからである。
ここからは、Active-Standby構成の問題点と、この問題を防ぐために何ができるかについて考えてみたい。