7月18日に発生したAzure DNSの障害に関しまして、MS社より以下の情報が公開されています。
(2020/7/25 10:30)
https://status.azure.com/ja-jp/status/history/
RCA-Azure DNS-接続の問題(トラッキングID TTPY-3P0)
[問題の概要]
2020 年 7 月 18 日 16:50 から 17:45 (以下、時刻はすべて日本時間) の間、Azure データセンターの提供する DNS リゾルバー サービスにおいて、名前解決の動作に一時的な問題が発生しました。
権威サーバーとしての動作、その他の DNS サービスの動作には影響はありませんでした。
[問題の原因]
今回の問題は、以前にプレビュー版として提供していた、DNS の古い機能の廃止作業を行ったことに関連して、想定外の要因により引き起こされました。
この廃止作業を行う中で、Azure データセンターの提供する DNS リゾルバー サービスについて、データの同期がとれていない状態と判断され、同期を司るコンポーネントによって、リゾルバー サービスのインスタンスの再起動がトリガーされました。
この再起動が、インスタンスごとに順番に行われればサービスへの影響は生じませんでしたが、今回の障害では、複数のインスタンスが同時に再起動する状況となりました。
この結果、Azure の仮想ネットワーク内に存在する DNS クライアントから、DNS リゾルバー サービスを利用した DNS のクエリーを行うことができない状態となりました。
DNS リゾルバー サービスを内部的に利用している各種 Azure サービスについても、名前解決の問題により可用性の低下が発生しました。
この問題による影響は複数のリージョンに対して、それぞれ異なる度合いで発生しました。
一部の DNS リゾルバー サービスのインスタンスは影響を受けず、また、影響を受けた DNS リゾルバー サービスの多くは概ね 10 分以内に復旧しました。
しかし、いくつかのインスタンスにおいては、最大 30 分ほど復旧までに時間を要しました。すべてのリージョンで名前解決の問題が復旧したのは、問題発生から 54 分後でした。
なお、問題発生中においても、Azure DNS が権威サーバーとして DNS レコードを持つサービスは影響を受けませんでした。
このため、Azure DNS 上に作成された DNS ゾーンに対して、インターネット経由で DNS クエリーを行うようなケースにおいては、問題は発生しませんでした。
今回の問題は、DNS クエリーの送信元が Azure 内にあり、Azure データセンターの DNS リゾルバー サービスを利用する場合に発生するものでした。
[問題の緩和]
インスタンスの再起動の完了に伴い、問題は自動的に解消しました。
すべてのインスタンスで名前解決の問題が解消したのは、17:45でした。
名前解決の問題解消に伴い、依存関係のある Azure の各種サービスについても順次復旧したため、サービスによっては、復旧が 17:45 よりも遅くなった可能性があります。
[今後の対応]
このたびの障害によりご迷惑をおかけしたお客様に、深くお詫びを申し上げます。弊社では、このような事象が今後発生しないように、以下のような対策を講じます(これらに限らず、品質向上のための対応を行います)。
・同期を司るコンポーネントがリゾルバーのインスタンスの再起動をトリガーする際、複数のインスタンスが同時に再起動されないようにロジックの改善を行います。
・リゾルバー サービスの起動シーケンス自体も改善し、再起動が発生してから 10 分以内に起動が完了するようにします。
===============
RCA - Azure DNS - Connectivity issues (Tracking ID TTPY-3P0)
SUMMARY OF IMPACT: Between 07:50 and 08:45 UTC (approx.) on 18 Jul 2020, Azure DNS experienced a transient resolution issue which in-turn impacted connectivity for some other Azure services. Authoritative and other DNS services were not impacted by this issue.
ROOT CAUSE: The decommissioning of a legacy (preview) DNS solution inadvertently caused some data streams for Azure DNS recursive resolver service to become out of sync with the resolver state. This was detected by a sync pipeline, which triggered a reset of the resolver instances to recover from the stale state. Unfortunately, this reset was not done in a staggered fashion and led to multiple resolver instances rebooting at the same time. This in turn led to degradation of the service and caused DNS resolution failures for the queries originating from virtual networks. Azure services dependent on the Azure DNS resolver service also saw degradation of service during this time.
The impact of the incident was observed across multiple Azure regions to varying degrees. While some instances of the service saw no impact, most impacted instances auto-recovered within 10 minutes, though some instances took up to 30 minutes to recover. The DNS resolution issues were fully auto-mitigated across all regions within 54 minutes. During this time, authoritative Azure DNS service was not impacted and DNS queries originating from the internet for zones hosted on Azure DNS were answered successfully.
MITIGATION: The issue was self-healed as the restarts completed, and all services with dependencies on the recursive DNS service would have seen a restoration of functionality also. The DNS service was fully mitigated at 08:45 UTC, but some services with multiple dependencies may have taken longer for all customers to see full service restoration.
NEXT STEPS: We sincerely apologize for the impact to affected customers. We are continuously taking steps to improve the Microsoft Azure platform and our processes to help ensure such incidents do not occur in the future. In this case, this includes (but is not limited to):
- Fixing the orchestration logic in the sync pipeline to help ensure that resolver instances are reset in a staggered, partitioned fashion
- Improving the resolver startup sequence to help ensure that a resolver instance can be up and running with 10 minutes after a reset