Microsoft Azureが10時間を超える障害。原因はストレージの性能改善のバグと運用のミスとの報告
マイクロソフトのクラウドサービス「Microsoft Azure」は、11月19日水曜日の午前10時前(日本時間)から午後8時45分の10時間を超える長時間、ストレージや仮想マシンなど多くのサービスでサービスの中断や性能低下などの障害を引き起こしていました。
その原因について、Microsoft Azureのブログのエントリ「Update on Azure Storage Service Interruption」(日本語訳「Azure Storage サービスのサービス中断について - Microsoft Azure Japan Team Blog (ブログ)」で報告されています。
この障害で影響があったのは、Azure Storage、StorSimple、Azure Backup、SQL Import/Exportなどストレージ関連のサービス、仮想マシン、管理ポータル、Webサイト、仮想ネットワークなどの主要サービス、Azure Search、Azure Cache、Service Bus、Event Hubs、Machine Learning、HDInsight、Automation、Stream Analytics、Azure Active Directoryなど、非常に広範囲に渡るものでした。
さらに、Visual Studio Online、Xbox Live、MSN.comなどMicrosoft Azure上で提供されるサービスにも影響があったとの報道もあります。
影響があったリージョンは米国6カ所、欧州2カ所、アジア2カ所、そして東日本、西日本の各リージョン。
さらに、Microsoft Azureの管理ポータル、サービスダッシュボードにも影響があったため、迅速な情報提供に支障があったことも報告されています。日本語訳から一部引用します。
Azureのインフラストラクチャの問題により、サービス ダッシュボードを通したタイムリーな情報提供にも影響がありました。対応策として、ツイッターやソーシャルメディアのフォーラムを活用しました。また、管理ポータル経由でも影響を受けたお客様に対して可能な限り情報提供を行いました。しかし、サービス ダッシュボードへの影響の結果、障害発生から約3時間にわたりタイムリーな情報更新ができませんでした。
原因はストレージの性能改善ソフトのバグとミスによる一斉デプロイ
今回の障害の根本的な原因は、Microsoft Azureのストレージ性能を改善するソフトウェアにバグがあったためです。数週間にわたるテストでは大幅な性能向上を見たものの、バグを発見することはできなかったとのこと。
テスト期間後にストレージサービス全体にデプロイをしたところ、Azure Tableフロントエンドでは問題なかったものの、Azure Blobフロントエンドでバグが発覚。BLOBフロントエンドと呼ばれる部分が無限ループに陥ります。その結果、最終的にストレージBLOBフロントエンドが停止。関連サービスがその停止に巻き込まれました。
またこのときにオペレーションの間違いも重なります。一部のリージョンから少しずつ更新作業を行うという標準的な手続きではなく、短時間でほとんどのリージョンにわたって更新が実施されました。広範囲のリージョンで障害が発生した原因はこのオペレーションミスに起因します。
バグが発覚し障害の発生が検知されたあとで、すぐにソフトウェアのロールバックが行われ変更自体は元に戻りましたが、無限ループの実行を止めるには再起動が必要でした。障害からの復旧に長時間かかったのはこれが原因だとされています。
今後の対策
マイクロソフトは今回の障害を踏まえ、以下の対策をとるとしています。以下、引用します。
弊社は、同様なインシデントの再発防止のため、Microsoft Azure プラットフォームと我々の運用プロセスの改善を行います。今回講じる対策の一部を記載します。
- 運用環境への変更の際、少しずつ分けて展開するという標準の手続きを常に実施することをデプロイツールで強制します。
- 復旧時間を最小化するために、復旧方法を改善します。
- CPU 使用量を削減する改善に含まれていた BLOB フロントエンドにある無限ループの不具合を修正します。
- サービスダッシュボードのインフラストラクチャと手続きを改善します。
あわせて読みたい
WindowsネイティブなWebアプリケーションを開発するVisual WAO。無料の開発キットを提供[PR]
≪前の記事
新しいアプリケーションアーキテクチャは従来のネットワークトラフィックのパターンを変えつつある。ガートナー