windows azure で 2/29 に起こった問題のまとめ

52
Windows Azure で 2/29 に 起こった問題のまとめ Japan Windows Azure User Group Microsoft MVP for Windows Azure はるたま http://twitter.com/harutama

Upload: sunao-tomita

Post on 16-Jan-2015

2.566 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Windows Azure で 2/29 に起こった問題のまとめ

Windows Azure で 2/29 に起こった問題のまとめ

Japan Windows Azure User Group

Microsoft MVP for Windows Azure

はるたま

http://twitter.com/harutama

Page 2: Windows Azure で 2/29 に起こった問題のまとめ

自己紹介

2 @harutama

Page 3: Windows Azure で 2/29 に起こった問題のまとめ

本セッションのゴール

• 2012年2月29日に発生した障害に関して正しく理解するため、Windows Azureの内部構造に関して理解すること。

• 障害自体に関する説明は軽めになります。 詳細は以下のURLを参照してください。 http://www.microsoft.com/japan/windowsazure/disruption229/

3

Page 4: Windows Azure で 2/29 に起こった問題のまとめ

参考リソース

• Inside Windows Azure: the cloud operating system http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-853T

• 蒼の王座 Windows Azure Roleアーキテクチャ http://sqlazure.jp/b/windows-azure/568/

• Inside Windows Azure http://www.microsoft.com/switzerland/msdn/fr/techdays/techdays11.aspx

• A Deep Look Inside Windows Azure AND ITS Virtual Machine http://www.slideshare.net/ylew15/a-deep-look-inside-windows-azure-and-its-vm

4

Page 5: Windows Azure で 2/29 に起こった問題のまとめ

5

ところで

Page 6: Windows Azure で 2/29 に起こった問題のまとめ

6

Windows Azure として管理されてる コンピューティング

リソースって どのくらい?

Page 8: Windows Azure で 2/29 に起こった問題のまとめ

PC Watch 1999年10大ニュース

順位 項目

1 AMD Athlon登場

2 プレイステーション2発表

3 10万円PC登場、大手メーカーまで波及

4 台湾大地震により、国内PC市場に大きな影響

5 Microsoftと司法省の裁判で、Microsoftに不利な事実認定下る

6 アップル、iMacのデザイン盗用で各社を提訴

7 SDRAM価格高騰、128MBで2万円を越える

8 Pentium III登場、年末には0.18μmプロセスの新世代へ

9 Intel 820チップセット発表直前で延期

10 iモード携帯電話、急速に普及

8

http://pc.watch.impress.co.jp/docs/article/991224/best10.htm

Page 9: Windows Azure で 2/29 に起こった問題のまとめ

Windows Azure の アーキテクチャ

9

Page 10: Windows Azure で 2/29 に起こった問題のまとめ

物理アーキテクチャ

10

ラック内部

スイッチ

物理マシン

データセンター ルーター

ルーターと ロードバランサ

データセンター

PDU

Page 11: Windows Azure で 2/29 に起こった問題のまとめ

外側から見たラックの様子

11

Page 12: Windows Azure で 2/29 に起こった問題のまとめ

ラックの中身

12

Page 13: Windows Azure で 2/29 に起こった問題のまとめ

論理アーキテクチャ • データセンター内の物理マシンは「クラスター」という

単位で分割されている。

– 1つのクラスタは約1000台の物理マシンで構成される

– 不具合の影響がクラスター内で閉じ込められるような設計

• 各クラスターは「ファブリックコントローラー(FC)」によって管理されている。

13

データセンター ルーター

クラスター

ファブリック コントローラー

ファブリック コントローラー

Page 14: Windows Azure で 2/29 に起こった問題のまとめ

クラスターの内部構造と ファブリックコントローラー

14

ラック内部

ラック内にある1台の物理マシンは ファブリックコントローラー用に予約される

ラック内部

ラック内部

クラスター内にある 1つのファブリック コントローラーは

マスターとして動作する

他のファブリック コントローラーとは

マスター経由で 状態を同期している

ルーターと ロードバランサ

Page 15: Windows Azure で 2/29 に起こった問題のまとめ

ファブリックコントローラー

15

Page 16: Windows Azure で 2/29 に起こった問題のまとめ

ファブリックコントローラーの役目

• データセンターにおけるカーネルの役割

– データセンターの資源の管理

– Azureで動作するアプリケーションの管理

16

物理マシン

Office SQL

Server

データセンター

Exchange Online

SQL Azure

Page 17: Windows Azure で 2/29 に起こった問題のまとめ

ファブリックコントローラーの仕事

• リソースの割り当て

– 新しい仮想マシンの作成(もちろん効率的に)

– 仮想マシンのスケールアップ・スケールアウトの対応

• リソースのプロビジョニング

– 物理マシンが故障した際は健全なマシンに移動させる

• サービスのライフサイクル管理

– アプリケーションのアップデート

– ゲストOSの自動アップデート

• サービスのヘルスチェック

– アプリケーションの死活監視

– ゲストOSの状態管理

17

Page 18: Windows Azure で 2/29 に起こった問題のまとめ

起動の仕組み

• ユーティリティファブリックコントローラー により起動される。

– ファブリックコントローラーの複製元

– アップデートの際にも使用される

• ユーティリティファブリックコントローラーは各ファブリックコントローラーのFeed (Datacenter.xml)を購読している。

– 各サーバーのIPアドレス

– サービスに割り当てるためにプールされたIP

– ネットワーク機器やPDU(Power Distribution Unit)のIPアドレス

18

Page 19: Windows Azure で 2/29 に起こった問題のまとめ

ファブリックコントローラーの中身

• 仮想マシンを作成するための仕組みを持っている

– 各種のイメージファイル

• 物理マシンのメンテナンス用OS

• ホスト用OS

• ロールインスタンス用OS

– 配布するための仕組み

• PXEサーバー

• Windows 展開サービス (Windows Deployment Services)

19

ファブリックコントローラー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー

Page 20: Windows Azure で 2/29 に起こった問題のまとめ

ノード

20

Page 21: Windows Azure で 2/29 に起こった問題のまとめ

クラスター

3種類の物理マシン

21

ラック内部

ラック内部

ラック内部

ルーターと ロードバランサ

レプリカ ファブリック

コントローラー

プライマリー ファブリック

コントローラー

ノード

Page 22: Windows Azure で 2/29 に起こった問題のまとめ

ノードの中身 • ノード上では、ホストVM(1個)とアプリVM(n個)が

動作している。

• アプリVMとホストVMは、エージェント同士が通信する。

• ファブリックコントローラーには、ホストエージェントからアプリケーションVMの情報が伝えられる。

22

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

ゲスト エージェント

Page 23: Windows Azure で 2/29 に起こった問題のまとめ

ノードの準備が完了するまで

23

Page 24: Windows Azure で 2/29 に起こった問題のまとめ

(1)ノードのブート

• ノードに電源が投入されると、ファブリック コントローラーが持っているメンテナンスOSで PXEブートされる。

24

ノード ファブリックコントローラー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー

エージェント

メンテナンスOS

Page 25: Windows Azure で 2/29 に起こった問題のまとめ

(2)ホストOSのインストール

• エージェントはホストOSをインストールする

– ノードが持つ物理ディスクをフォーマット

– ファブリックコントローラーのWindows 展開サービス からインストールされる

25

ノード ファブリックコントローラー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー

エージェント

メンテナンスOS

Page 26: Windows Azure で 2/29 に起こった問題のまとめ

(3)sysprepの実行

• ノードが再起動してホストOSがブートされる。

• sysprepコマンドを実行して新しいSIDを作成。 その後、再び再起動。

26

ノード ファブリックコントローラー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー ハイパーバイザー

ホスト OS

sysprep/specialize

Page 27: Windows Azure で 2/29 に起こった問題のまとめ

(4)準備完了!

• ホストOS内で動作しているホストエージェントがファブリックコントローラーとの通信を開始。

27

ノード ファブリックコントローラー

ハイパーバイザー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー

ホスト OS

ホスト エージェント

Page 28: Windows Azure で 2/29 に起こった問題のまとめ

(5)その後

• 各ノードが持っているイメージリポジトリに、ファブリックコントローラーが持っている OSイメージを配布する。

– 各種ロールのOSイメージやzipファイルなど

28

ノード ファブリックコントローラー

ハイパーバイザー

メンテ OS

ホスト OS

ロール OS

Windows 展開サービス

PXE サーバー

ホスト OS

ホスト エージェント

Page 29: Windows Azure で 2/29 に起こった問題のまとめ

外から見たWindows Azure

29

Page 30: Windows Azure で 2/29 に起こった問題のまとめ

RDFE

データセンター

外から見たWindows Azure

30

ファブリック コントローラー

管理ポータル Windows Azure

PowerShell Cmdlets

ファブリック コントローラー

Page 31: Windows Azure で 2/29 に起こった問題のまとめ

RDFEって何?

• RedDog Front End の略称

– Windows Azureに対するAPIをインターネットに公開しているフロントエンド

– ユーザからのすべてのリクエストはRDFEを通る

• Red Dog って何?

– Windows Azureがまだ開発中だった頃のコードネーム

– ちょっと間違えていたらPink Poodleになっていた http://japan.zdnet.com/cio/sp_07microsoft/20384470/

31

Page 32: Windows Azure で 2/29 に起こった問題のまとめ

Pink Poodle? なにそれ?

32

Page 33: Windows Azure で 2/29 に起こった問題のまとめ

RDFEの役割 • Windows Azureのフロントエンドとしての役目

– サブスクリプションの管理

– 課金のカウント

– 各種サービスの管理

• ストレージとコンピュートのインスタンスを効率良く運用する

– データセンターリージョンの決定

– アフィニティグループの考慮

– データセンターのVirtual IPや ノードの状況も考えつつ

33

Page 34: Windows Azure で 2/29 に起こった問題のまとめ

アプリケーションのデプロイ

34

Page 35: Windows Azure で 2/29 に起こった問題のまとめ

(1)ユーザーからの指示

• 新しいパッケージをデプロイする際、クライアントから .csdefファイルがRDFEに対してアップロードされる。

35

RDFE

クライアント ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

ホスト エージェント

.csdef ファイル

Page 36: Windows Azure で 2/29 に起こった問題のまとめ

(2)クラスターの選択

• RDFEは適切な状態にあるデータセンター内のクラスターを管理しているファブリックコントローラーを選択する。

– 指定されたリージョンのデータセンターの中で、クラスターの負荷状況やIPの利用状況などなどを考慮する

36

RDFE

クライアント ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

ホスト エージェント

.csdef ファイル

Page 37: Windows Azure で 2/29 に起こった問題のまとめ

(3)ノードの選択

• ファブリックコントローラーはアプリケーションが動作 するのに適切なノードを選択する。

– アプリケーションが要求するインスタンスのサイズや数を考慮

37

RDFE

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

ホスト エージェント

クライアント

Page 38: Windows Azure で 2/29 に起こった問題のまとめ

(4)VMの作成 • アプリケーションが動作する仮想マシンを作成する。

これが最終的にロールインスタンスとなる。

– VMの元となるOSイメージ(Dドライブ)はホストにあるイメージリポジトリ内にある。

– ローカルディスク領域(Cドライブ)とロールが配置される領域(EもしくはFドライブ)は動的にイメージが生成される。

38

RDFE

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

クライアント

Page 39: Windows Azure で 2/29 に起こった問題のまとめ

(5)内部通信の確立 • エージェントの間での通信を確立させる。

このとき通信を保護するための転送証明書をゲスト側で作成し、公開鍵だけをホスト側に送る。

• エージェント間通信が確立すると、ホストエージェントはゲストエージェントのハートビート監視を開始する。

39

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

ゲスト エージェント

秘密鍵

公開鍵

Page 40: Windows Azure で 2/29 に起こった問題のまとめ

(6)外部通信の設定

• 仮想マシンのネットワークを設定する

– 外部につながるDynamic IPを割り当てる

– 内部のVirtual IPとポートを設定し、外部のDynamic IPを紐付ける

– 仮想マシン間の通信にパケットフィルターを適用

– 外部と内部をつなぐロードバランサーの設定を行う

40

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

ゲスト エージェント

ルーター

ロードバランサー

Page 41: Windows Azure で 2/29 に起こった問題のまとめ

サービスの監視

• ファブリックコントローラーは、ソフト・ハードの監視によって、サービスの可用性を管理する。

– 基本的にハートビートを監視

– 影響のあるノードは自動的に修復される

41

問題の種類 検出の方法 対処方法

ロールインスタンスのクラッシュ

ファブリックコントローラーが ゲストエージェント経由で監視

・ロールを再起動

ゲストVMやゲストエージェントの クラッシュ

ホストエージェントがファブリックコントローラーにハートビートがなくなったことを警告

・ロールの再起動や、ゲストVMの再起動

ホストOSやホストエージェントの クラッシュ

ファブリックコントローラーが ホストエージェントの ハートビートを監視

・ロールの回復を試みる ・他ノードにロールをマイグレート

ノードの ハードウエア障害

ホストエージェントが ファブリックコントローラーに 警告

・他ノードにロールをマイグレート ・ノードに対して“out for repair”とマーキング

Page 42: Windows Azure で 2/29 に起こった問題のまとめ

今回の障害について

42

Page 43: Windows Azure で 2/29 に起こった問題のまとめ

障害の原因(その1)

• デジタル証明書を生成する際に有効期限を設定する処理のバグ

– 単に現在の年に+1した有効期限で証明書を 作ろうとしてしまっていた。

43

現在日時 2012年1月1日 ↓

有効期限 2013年1月1日 ↓

問題なし

現在日時 2012年2月29日 ↓

有効期限 2013年2月29日 ↓

作られない

Page 44: Windows Azure で 2/29 に起こった問題のまとめ

障害発生の直前まで

• 新しいバージョンのソフトウエアを展開中

– ファブリックコントローラ

– ホストエージェント

– ゲストエージェント

• 転送証明書の生成が行われやすい状態にあった

– 新しい仮想マシンの作成

• 新しい配置を実施したとき

• 配置のスケール アウトを行うとき

• 配置している仮想マシンの OS を更新したとき

– 配置が他のノードにマイグレートされた時

• 「サービス回復」と呼ばれる処理

44

Page 45: Windows Azure で 2/29 に起こった問題のまとめ

UTC 2月29日 0:00

• 証明書の作成に失敗すると、ゲストエージェントは終了するためハートビートが返ってこない。

• 25分以内にエージェントの接続が確立しないと、ホストエージェントは仮想マシンを初期化して 再起動する。(当然状況は改善しない)

45

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

ゲスト エージェント

Page 46: Windows Azure で 2/29 に起こった問題のまとめ

ノードレベルの障害 • 3 回連続でエージェント間の接続タイムアウトの後、ホスト

エージェントはハードウェア障害があったと判断。

• ホストエージェントはファブリックコントローラーに報告。

• ファブリックコントローラーは対象のノードを 「Human Investigate」という状態に変更した。

46

ノード

ファブリック コントローラー

ハイパーバイザー

ホスト OS

アプリ VM

ホスト エージェント

ゲスト エージェント

エラー報告が無いから ハード障害なんだろうな

(´・ω・`)

Page 47: Windows Azure で 2/29 に起こった問題のまとめ

クラスターレベルの障害 • 「Human Investigate」状態のノードが閾値を超えたため、

ファブリックコントローラーはクラスター全体を 「Human Investigate」の状態に変更した。

• この段階でファブリックコントローラーは、内部で開始されたすべてのソフトウェア更新を停止し、自動サービス回復は無効化される。

47

クラスター

ファブリック コントローラー

ファブリック コントローラー

Human Investigateの

ノードが 増えすぎたね (´・ω・`)

Page 48: Windows Azure で 2/29 に起こった問題のまとめ

UTC 2月29日 2:55

• サービスマネージメント機能を停止

– 新しいVMの作成は確実に失敗する

• アプリケーションの配置

• スケールアウトの実行

– 稼働中のアプリケーションの保護

• 複数インスタンスで運用して、一部のインスタンスが動作しているアプリケーションを、不用意に操作することを防ぐため。

48

Page 49: Windows Azure で 2/29 に起こった問題のまとめ

問題の原因(その2)

• 新バージョンのソフトウエアを展開中だった7個のクラスターだけが対象の問題

– 7個のクラスター向けの更新パッケージに ホストエージェントと互換性のないネットワーク プラグインが入っていたため、ネットワーク接続が失われた。

– いくつかのノードは 個別のエラーが発生 したため、個別の 対応を行った。

49

ホスト OS

アプリ VM

旧ホスト エージェント

旧ゲスト エージェント

新ネットワーク プラグイン

Page 50: Windows Azure で 2/29 に起こった問題のまとめ

おわりに

50

Page 51: Windows Azure で 2/29 に起こった問題のまとめ

おわりに

• 今回の障害でデータロストの問題は生じていない

– ストレージサービスやSQL Azureなどのデータロストは発生していない

• 複数のインスタンスで運用していた場合、サービスの提供は継続できていた可能性が高い

– 最大時で、North Central USリージョンの6.7%、South Central USの28%、North Europeリージョンの37%がサービス障害の対象であった。 http://itpro.nikkeibp.co.jp/article/NEWS/20120301/384015/

51

Page 52: Windows Azure で 2/29 に起こった問題のまとめ

Let’s dream and then let’s build. - Ray Ozzie

はるたま (@harutama) http://twitter.com/harutama