SlideShare a Scribd company logo
Azure 2017年3月障害
Deep Dive
シグマコンサルティング株式会社
冨田 順 (とみたすなお)
@harutama
http://azure.moe
2
それは突然起こるのです
3
障害
4http://www.publickey1.jp/blog/14/microsoft_azure10.html
Root Cause Analysis
5
https://azure.microsoft.com/ja-jp/status/history/
Summary of impact ざっくり訳
6
2017年3月8日の12:40から14:38(UTC)の間に日本東部でストレージを使用し
ている顧客の一部が、このリージョンでホストされている以下のリソースへの接
続に問題が発生していた可能性があります。
App Service ~サービスいっぱいなので中略~ およびクラウドサービス
この問題は、ストレージサービスの継続的な健全性をチェックする監視警告シス
テムによって検出されました。
アラートによって当社のエンジニアリングレスポンスがトリガされ、ストレージ
サービスのStream Manager プロセスがリクエストの処理を開始し、サービ
スの状態を回復できるようにするリカバリアクションがとられました。
ストレージサービスが回復されると、ストレージサービスを利用して構築された
すべてのAzureサービスも回復しました。
7
ところで
Stream Manager
って何ですか?
今日の目的
8
本日の目的
9
Azureのストレージシステムで
ストリームマネージャーが
何をしているものなのか
理解する
参考文献
10
参考文献
• ストレージに関する論文
– SOSP Paper - Windows Azure Storage: A Highly Available Cloud Storage
Service with Strong Consistency
https://azure.microsoft.com/ja-jp/blog/sosp-paper-windows-azure-
storage-a-highly-available-cloud-storage-service-with-strong-
consistency/
– 論文の日本語訳
https://download.microsoft.com/download/C/0/2/C02C4D26-0472-
4688-AC13-
199EA321135E/23rdACM_SOSP_WindowsAzureStorage_201110_jpn.pdf
• Build 2013でのセッション
– Windows Azure Storage: What’s Coming, Best Practices, and Internals
https://channel9.msdn.com/Events/Build/2013/3-541
11
12
ネタ元が論文なので
13
言い換えれば
今日は
一人輪講です
14
https://ja.wikipedia.org/wiki/%E8%BC%AA%E8%AC%9B
だからこういうのはやめて…
15
そろそろ本題
16
Azure ストレージの設計要件
• グローバルで拡張可能な
名前空間/ストレージ
• 強い一貫性
• 障害復旧
• マルチテナントによるストレージコスト
の節約
17
パーティション分割された
グローバルな名前空間
18
URL の構造
• アカウント名
– ユーザーが指定した任意の名前
• サービス名
– 今のところ blob・queue・table・file
• パーティション名
– blobのコンテナ名 と言った方が分かるかも
• オブジェクト名
– 各オブジェクトに対してつけられた任意の名前
19
https://<アカウント名>.<サービス名>.core.windows.net/
<パーティション名>/<オブジェクト 名>
つまり
• ストレージ内にあるオブジェクトに対しての
URL (Uniform Resource Locator)
は、そのまま
URI(Uniform Resource Identifier)
として役割を果すように設計されている
20
ストレージの REST API
21
https://docs.microsoft.com/ja-jp/rest/api/storageservices/fileservices/azure-
storage-services-rest-api-reference
アーキテクチャコンポーネント
22
ストレージの構成
23
ロケーションサービス
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
https://<アカウント名>.<サービス名>.core.windows.net/
アカウント管理
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
コンポーネントの役割
• ストレージスタンプ
– ラック10~20本くらいのサーバーの塊
– サーバーごとに3つの役割を分担する
• フロントエンドレイヤー
• パーティションレイヤー
• ストリームレイヤー
• ロケーションサービス
– ストレージスタンプを管理
– アカウントと名前空間の対応を管理
24
ロケーションサービス
ストレージスタンプ
VIP
スタンプの中身
25
ロケーションサービス
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
https://<アカウント名>.<サービス名>.core.windows.net/
アカウント管理
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
フロントエンドレイヤー
• ユーザーからの要求を受け付ける役目
– パーティションに対するユーザーの認証と認可
– パーティションの名前と、パーティションが
存在しているサーバーとのマッピング
(パーティションマップ)を
保持して管理する。
26
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
パーティションレイヤー
• サービスに対応したデータの管理
– blob・table・queue・file の提供
• トランザクションの順序付けと
強い一貫性の確保
• パーティション分割による
スケーラビリティの実現
27
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
ストリームレイヤー
• 最終的にデータを永続化する役割
– 分散ファイルシステム(DFS)としての役割
• データセンター内で3つのレプリカを作成
して維持する。
28
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
2つのレプリケーションエンジン
29
提供されるレプリケーション
レプリケーションオプション レプリケーションの動作
Locally Redundant Storage
(LRS)
1つのデータセンター内でデータコピーを
3つ作成。
Zone Redundant Storage
(ZRS)
同一 or 複数のリージョンに位置する複数
のデータセンターに3つのデータコピーを
作成。
Geographically Redundant Storage
(GRS)
プライマリーリージョンと数百Km離れた
位置にあるセカンダリーリージョンに
3+3のコピーを作成。
Read-Access
Geographically Redundant Storage
(RA-GRS)
GRSの機能で作成されたセカンダリー
リージョンのデータに、読み取り専用で
アクセスが可能。
30
2つのレプリケーション
31
ロケーションサービス
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
スタンプ間
レプリケーション
スタンプ内
レプリケーション
実行されるレイヤーの違い
• スタンプ内レプリケーション
– LRS のサービスを提供
– ストリームレイヤー内で実行される
• スタンプ間レプリケーション
– ZRS、GRS、RA-GRA のサービスを提供
– パーティションレイヤー間で実行される
32
なぜ違うレイヤーで実行する?
• スタンプ内レプリケーション
– 一定頻度で発生するハードウェア障害に対処する
ためのデータ耐久性を提供するのが目的
– レプリカは同期的に作成される
• スタンプ間レプリケーション
– 比較的頻度の低い地域的な災害に対処するための
地理的な冗長性を提供するのが目的
– レプリカは非同期的に作成される
33
次の話題に行く前に…
34
この人、知ってる?
35
レスリー・ランポート
• 2013年 ACM チューリング賞受賞
– 分散コンピューティングに関連する研究に対して
• LaTeX の生みの親
• 現在は Microsoft Reserch で勤務
36
チューリング賞のごほうび
37
Paxos プロトコル
• 「合意」を形成するためのプロトコル
– 合意 = 複数の参加者の間で、ある1つの結果に
ついて承認を得ること。
• 何がムズカシイの?
– こんなことが起こったときどうする?
• サーバーが壊れて返事をしないかも
• ネットワークのせいで通信できないかも
• 壊れていたサーバーが復活したら???
38
今日は説明しないので参考文献
• 普通の人でもわかる Paxos
– https://www.slideshare.net/tyonekura/pa
xos-63835103
• Paxos
– https://www.slideshare.net/pfi/paxos-
13615514
39
ストリームレイヤーの
細かい話
40
ストレージスタンプ
フロントエンドレイヤー
パーティションレイヤー
ストリームレイヤー
VIP
ストリームレイヤーの大前提
• ストリームレイヤーはパーティションレイ
ヤー”だけ”にインターフェースを提供する。
• ストリームレイヤーは既存のデータを変更
するインターフェースを持たない。
– ストリームレイヤー内のデータは
「ストリーム」と呼ばれる単位で扱われる。
41
ストリームの構造
• ストリームはエクステントへ
のポインタの順序付きリスト
みたいなもの。
• エクステントはブロックの塊。
• ブロックはデータを読み書き
する最小単位
42
ストリーム
エクステント
へのポインタ
…
エクステント
へのポインタ
エクステント
ブロック ブロック … ブロック
ストリームレイヤー
誰が何を管理するのか?
43
ストリーム
エクステント
へのポインタ
…
エクステント
へのポインタ
エクステント
ブロック ブロック … ブロック
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
データを書き込む際の挙動
レプリカを作る話もあわせて
44
ストリームレイヤー
新規作成の要求
45
エクステント
ノード
ストリーム
マネージャー
エクステント
ノード
エクステント
ノード
パーティション
レイヤー
エクステント作って♥
ストリームレイヤー
Paxosクラスターの構成
46
ストリーム
マネージャー
パーティション
レイヤー
プライマリ1個と
セカンダリー2個を決めて
Paxosクラスターを構成
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
ストリームレイヤー
エクステント情報を返す
47
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
エクステントの情報
エクステントノード情報
を返しつつ
ストリームマネージャーも
この情報を保持する
ストリームレイヤー
データの書き込み
48
ストリーム
マネージャー
パーティション
レイヤー
パーティションレイヤーが
プライマリーの
エクステントノードに
書き込む
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
ストリームレイヤー
レプリカ作成 その1
49
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
ストリームレイヤー
レプリカ作成 その2
50
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
OK!
ストリームレイヤー
レプリカ作成 その3
51
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
OK! OK!
ストリームレイヤー
レプリカできたか? その1
52
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
OK! OK! OK!
ストリームレイヤー
レプリカできたか? その2
53
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
OK! OK!
OK!
書き込みの
完了を通知
ストリームレイヤー
レプリカできたか? その3
54
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
OK!
OK!
書き込みの
完了を通知
ストリームレイヤー
最終的に完了
55
ストリーム
マネージャー
パーティション
レイヤー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
3つの書き込みが成功したら
最終的に完了を通知
OK!
どうやってレプリカを維持するか?
56
ストリームマネージャーの役割
• ストリームの名前空間と、すべてのアクティブな
ストリーム/エクステントの状態の保持。
• エクステントノードの稼働状況の監視。
• エクステントの作成とエクステントノードへの割り当て。
• ハードウェアの障害または使用不可状態により失われた
レプリカの遅延再レプリケーション。
• どのストリームからも参照されていないエクステントの
ガベージコレクション。
• ストリームのポリシーに基づくエクステントデータの
消失訂正のスケジューリング。
57
いろいろ役割がありますが
58
ストリームマネージャーは
データ(エクステント)が
ぶっ壊れたことを検出して
がんばって修復しようとする
ストリームレイヤー
ストリームマネージャーのポーリング
59
ストリーム
マネージャー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
ストリームマネージャーが
保持しているエクステント情報と
エクステントノードが保持する
エクステントを比較
ストリームレイヤー
エクステントノードが腐った
60
ストリーム
マネージャー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
💀
ストリームレイヤー
新しいのを連れてくる
61
ストリーム
マネージャー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー セカンダリー
💀
エクステント
ノード
ストリームレイヤー
レプリケーション実行して復旧
62
ストリーム
マネージャー
エクステント
ノード
エクステント
ノード
エクステント
ノード
プライマリー セカンダリー
💀
エクステント
ノード
セカンダリー
既存のエクステントノード
に対してレプリケーションの
実行を指示
まとめ
63
Root Cause Analysis
64
https://azure.microsoft.com/ja-jp/status/history/
Root cause and mitigation
65
日本東部のストレージスケールユニットでは、ストレージサービス内のデータの
配置を管理するバックエンドコンポーネントのストリーム・マネージャーが、通
常発生しないような状態になり、要求の処理に失敗しました。
その結果、上記の期間のストレージサービスへの要求が失敗しました。
ストリームマネージャは、そのような状態 (自動フェイルオーバーを含む) から
自己回復するための保護機構を備えていますが、バグがあったために自動自己修
復が失敗する原因となりました。
まだ足りなかったらまた明日
66https://eventdots.jp/event/616599
Let’s dream and then let’s build.
- Ray Ozzie
冨田 順 (@harutama)
http://twitter.com/harutama
67

More Related Content

PPTX
セキュリティ強靭性向上対策モデルの実現
PPTX
自治体セキュリティ強靭化対策のためのシンクライアント入門
PDF
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
PPTX
「教養としてのサイバーセキュリティ」講座
PDF
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
PPTX
セキュリティスキルをゲットする、たった3つの方法
PPTX
シフトレフト ~経営判断をサポートするセキュリティ・ビジョン~
PDF
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA
セキュリティ強靭性向上対策モデルの実現
自治体セキュリティ強靭化対策のためのシンクライアント入門
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender for Endpoint クロスプラットフ...
「教養としてのサイバーセキュリティ」講座
IT エンジニアのための 流し読み Windows 10 - Microsoft Defender ウイルス対策
セキュリティスキルをゲットする、たった3つの方法
シフトレフト ~経営判断をサポートするセキュリティ・ビジョン~
ビルトイン・セキュリティのススメ Dev Days 2015 Tokyo - Riotaro OKADA

What's hot (11)

PDF
アプリケーションデリバリーのバリューチェイン
PPTX
HTML5 Web アプリケーションのセキュリティ
PPTX
4 Enemies of DevSecOps 2016
PDF
クラウドセキュリティ基礎 #seccamp
PDF
RubyでDSL
PDF
Webプラットフォームのセキュリティ
PDF
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
PDF
Elastic Cloudを利用したセキュリティ監視の事例
PDF
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender ATP
PPTX
新登場! Windows Defender Application Guard 解説 ~ Microsoft Edge がセキュア ブラウザーに!?~
PDF
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
アプリケーションデリバリーのバリューチェイン
HTML5 Web アプリケーションのセキュリティ
4 Enemies of DevSecOps 2016
クラウドセキュリティ基礎 #seccamp
RubyでDSL
Webプラットフォームのセキュリティ
クラウドファースト時代における重要インフラを守るセキュリティ・ゲートウェイ
Elastic Cloudを利用したセキュリティ監視の事例
IT エンジニアのための 流し読み Microsoft 365 - 入門!Microsoft Defender ATP
新登場! Windows Defender Application Guard 解説 ~ Microsoft Edge がセキュア ブラウザーに!?~
IT エンジニアのための 流し読み Windows 10 - 超概要!Windows Defender シリーズ
Ad

Similar to Azure2017年3月障害DeepDive (20)

PPTX
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
PPTX
ストレージサービスからの情報漏えいにサヨナラ
PDF
TOUA M2M Solutions powered by Cloudian (Cloudian Summit 2012)
PDF
Azure App Service Overview
PDF
Azure reliability v0.2.21.0630
PPTX
エンジニアのための Cloud 活用
PPTX
福井イベント
PDF
WordFes Nagoya 2013: 進化する WordPress 3.7 & 3.8 の開発動向
PDF
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
PDF
それでもボクはMicrosoft Azure を使う
PDF
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
PDF
新 Microsoft Edge を Intune で配信・管理する
PDF
CDP 勉強会 - Multiple Datacenter Deployment ガイダンス
PDF
あなたの環境は大丈夫?来月に迫る Exchange Online 接続への変更点
PDF
AZ-305 Microsoft Azure Infrastructure Solutions 取得学習会 第8回.pdf
PDF
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
PDF
Azure IaaS update (2019年1月~2月 発表版)
PDF
Data & AI Update 情報 - 2020年8月版
PDF
スタートアップのCEOもおさえておきたい、ITインフラのセキュリティ対策 先生:
PPTX
クラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくり
Azure PolicyとAutomanage 2021年01月 / Azure Policy and Automanage Jan 2021
ストレージサービスからの情報漏えいにサヨナラ
TOUA M2M Solutions powered by Cloudian (Cloudian Summit 2012)
Azure App Service Overview
Azure reliability v0.2.21.0630
エンジニアのための Cloud 活用
福井イベント
WordFes Nagoya 2013: 進化する WordPress 3.7 & 3.8 の開発動向
イノベーションスプリント2011 nttデータにおける制約理論を活用した分散アジャイル開発~アジャイルとtocの融合
それでもボクはMicrosoft Azure を使う
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
新 Microsoft Edge を Intune で配信・管理する
CDP 勉強会 - Multiple Datacenter Deployment ガイダンス
あなたの環境は大丈夫?来月に迫る Exchange Online 接続への変更点
AZ-305 Microsoft Azure Infrastructure Solutions 取得学習会 第8回.pdf
大規模・長期保守を見据えたエンタープライズ システム開発へのSpring Frameworkの適用
Azure IaaS update (2019年1月~2月 発表版)
Data & AI Update 情報 - 2020年8月版
スタートアップのCEOもおさえておきたい、ITインフラのセキュリティ対策 先生:
クラウドの積極的利活用による生産性向上と経営に寄与する仕組みづくり
Ad

More from Sunao Tomita (20)

PDF
AD19_冨田・近江_TechSummit2018
PDF
俺の俺による俺のための App Service Environment
PPTX
ハンズオン環境をAzure仮想マシンを作成する.pptx
PPTX
OMSのあれこれ
PPTX
CPU 版 TensorFlow を Azure 仮想マシンに構築する
PPTX
Azure Notebook で TensorFlow をハンズオンする環境を作る話
PPTX
Azure App Service を使った無料のハンズオン
PDF
Logic Apps と Api Apps の話
PDF
Caching ガイダンスの話
PDF
20141004 青森ハンズオン Azure概要
PDF
Mashup Ideathon 東北 in 青森
PDF
デザインパターンから見た AWS と Azure
PDF
Build 2014 Azure 的まとめ
PDF
Windows Azure の歴史2014年2月26日版
PDF
Windows Azure の中でも動いている InfiniBand って何?
PDF
最近の Windows Azure ってどう?
PDF
2013年版の inside windows azure
PDF
Windows Azureの歴史 2013年2月版
PPTX
ネクスト・ジェネレーションクラウドネットワーク~雲の中のリストラクチャリング~
PDF
TypeScriptへの入口
AD19_冨田・近江_TechSummit2018
俺の俺による俺のための App Service Environment
ハンズオン環境をAzure仮想マシンを作成する.pptx
OMSのあれこれ
CPU 版 TensorFlow を Azure 仮想マシンに構築する
Azure Notebook で TensorFlow をハンズオンする環境を作る話
Azure App Service を使った無料のハンズオン
Logic Apps と Api Apps の話
Caching ガイダンスの話
20141004 青森ハンズオン Azure概要
Mashup Ideathon 東北 in 青森
デザインパターンから見た AWS と Azure
Build 2014 Azure 的まとめ
Windows Azure の歴史2014年2月26日版
Windows Azure の中でも動いている InfiniBand って何?
最近の Windows Azure ってどう?
2013年版の inside windows azure
Windows Azureの歴史 2013年2月版
ネクスト・ジェネレーションクラウドネットワーク~雲の中のリストラクチャリング~
TypeScriptへの入口

Azure2017年3月障害DeepDive