米Microsoftは日本時間9月18日、9月15日に発生したAzureのDNSに関連するサービスの大規模障害について(第一報、続報)、障害の根本原因と今後の改善策をまとめたレポートを発表した。障害発生当初、同社が「ネットワークトラフィックへのスパイクアクセスが発生した」と報告したことからDDoS攻撃などの可能性も憶測されていたが、レポートによれば、今回の障害原因は「ネットワークデバイスのソフトウェアのバグ」だという。
DNSの接続障害は1時間40分で復旧
今回の問題は、ネットワークデバイスのバグにより、ネットワーク管理ポリシーで適切に処理されなかったネットワークトラフィックのスパイクにより引き起こされた。この問題によって、AzureのDNSサービスが正常なDNS要求を不正な形式であると誤って特定することになり、15日20時18分からグローバルでDNSに関連するサービスに接続障害が発生した。
緩和策は、誤ったデバイスの振る舞いを打ち消す構成変更をすることであり、この緩和策を講じた結果、15日22時(日本時間)には、米国中部リージョンのAzure SQL Database、SQL Data Warehouse(DWH)、およびAzure SQL Databaseに依存する同リージョンのHDInsightとMedia Servicesを除き、DNSへの接続障害の影響を受けたすべてのAzureサービスがこの時点で回復している(この時点で障害発生から約1時間40分)。
米国中部のAzure SQL DatabaseとSQL DWHへの影響が継続したのは、DNSの接続障害が緩和されたあとに接続を再確立する要求を、想定よりも多数同時に受信したためだった。Microsoftの対策チームが要求量を制御した結果、16日2時15分(日本時間)までにはすべての要求が正常に処理され、米国中部のAzureサービスも全面復旧した(この時点で障害発生から約6時間)。
Azure SQL Databaseなどの可用性が約60%減少
Microsoftは、今回のDNSの障害の影響で、Azure SQL DatabaseとSQL DWH、およびそれらに依存するHDInsightとMedia Servicesの可用性が約60%減少したと推測している。そのほかのDNSに関連するサービスについても可用性劣化があった可能性があるとしている。さらに、米国中部リージョンの顧客の一部は、DNSの問題が緩和されたのちも継続して影響を受けていた可能性がある。
Azure SQL DatabaseとSQL DWHへの接続には、2回のDNS探索を必要とするため、今回のDNSの問題の影響を大きく受けた。
すべてのAzure SQL DatabaseとSQL DWHへの接続要求は、最初に「コントロールリング」と呼ばれるAzureにホスティングされたサービスによって処理される。コントロールリングは、Azureのどのサービスが接続要求されたデータベースやDWHをホスティングしているのかをトラッキングして、そのサービスのDNS名をクライアント側へ返す。それからクライアントはDNS探索を行い、その位置へ接続する。今回のDNSのサービス停止期間中、Azure SQL DatabaseとSQL DWHへの接続パスでのDNS探索は、約75%の割合で失敗した。
DNSの障害検知を改善、SQL DatabaseのDNS依存度の見直し
Microsoftでは、Azureプラットフォーム上で将来同じ事故を起こすことがないように、今回のケースでは次の改善策を実施済み、あるいは今後実施する。
- ネットワークデバイスのバグを修正し、テストと有効性確認が完了次第すべての地域にリリースする(ステータス「進行中」)
- DNSサービスの不能状態をより速く検知するよう警告を改善して、解決までの時間を最小化する(ステータス「進行中」)
- ネットワークデバイスのバグを迂回するため新しい構成を設定する(ステータス「完了」)
- Azure SQL DatabaseとSQL DWHのレコードに対してTTLを増加させることによりDNSへの依存度を下げる(ステータス「進行中」)
- ダウンタイムを最小化するため、DNSやそれに関連するAzureサービスにおいて顧客向けの回復機能の選択肢を増やす(ステータス「レビュー中」)