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

3,564 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,564
On SlideShare
0
From Embeds
0
Number of Embeds
888
Actions
Shares
0
Downloads
19
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. Windows Azure で 2/29 に 起こった問題のまとめJapan Windows Azure User GroupMicrosoft MVP for Windows Azure はるたま http://twitter.com/harutama
  2. 2. 自己紹介 @harutama 2
  3. 3. 本セッションのゴール• 2012年2月29日に発生した障害に関して正 しく理解するため、Windows Azureの内部 構造に関して理解すること。• 障害自体に関する説明は軽めになります。 詳細は以下のURLを参照してください。 http://www.microsoft.com/japan/wind owsazure/disruption229/ 3
  4. 4. 参考リソース• 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/techd ays/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
  5. 5. ところで 5
  6. 6. Windows Azureとして管理されてるコンピューティング リソースって どのくらい? 6
  7. 7. People’s ears usually perk-upwhen they hear WindowsAzure uses more servercompute capacity than wasused on the planet in 1999.http://blogs.msdn.com/b/windowsazure/archive/2012/05/24/datacenter-expansion-and-capacity-planning.aspx 7
  8. 8. 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モード携帯電話、急速に普及 http://pc.watch.impress.co.jp/docs/article/991224/best10.htm 8
  9. 9. Windows Azure のアーキテクチャ 9
  10. 10. 物理アーキテクチャデータセンター データセンター ラック内部 ルーター PDU ルーターと スイッチ ロードバランサ 物理マシン 10
  11. 11. 外側から見たラックの様子 11
  12. 12. ラックの中身 12
  13. 13. 論理アーキテクチャ• データセンター内の物理マシンは「クラスター」という 単位で分割されている。 – 1つのクラスタは約1000台の物理マシンで構成される – 不具合の影響がクラスター内で閉じ込められるような設計• 各クラスターは「ファブリックコントローラー(FC)」に よって管理されている。 クラスター ファブリック コントローラーデータセンター ファブリック ルーター コントローラー … … 13
  14. 14. クラスターの内部構造と ファブリックコントローラー ラック内部 他のファブリックコントローラーとは マスター経由で状態を同期している ラック内部 ルーターと ロードバランサ クラスター内にある ラック内部 1つのファブリック コントローラーはマスターとして動作する ラック内にある1台の物理マシンは ファブリックコントローラー用に予約される 14
  15. 15. ファブリックコントローラー 15
  16. 16. ファブリックコントローラーの役目• データセンターにおけるカーネルの役割 – データセンターの資源の管理 – Azureで動作するアプリケーションの管理 SQL Exchange SQL Office Server Online Azure 物理マシン データセンター 16
  17. 17. ファブリックコントローラーの仕事• リソースの割り当て – 新しい仮想マシンの作成(もちろん効率的に) – 仮想マシンのスケールアップ・スケールアウトの対応• リソースのプロビジョニング – 物理マシンが故障した際は健全なマシンに移動させる• サービスのライフサイクル管理 – アプリケーションのアップデート – ゲストOSの自動アップデート• サービスのヘルスチェック – アプリケーションの死活監視 – ゲストOSの状態管理 17
  18. 18. 起動の仕組み• ユーティリティファブリックコントローラー により起動される。 – ファブリックコントローラーの複製元 – アップデートの際にも使用される• ユーティリティファブリックコントローラーは 各ファブリックコントローラーのFeed (Datacenter.xml)を購読している。 – 各サーバーのIPアドレス – サービスに割り当てるためにプールされたIP – ネットワーク機器やPDU(Power Distribution Unit) のIPアドレス 18
  19. 19. ファブリックコントローラーの中身• 仮想マシンを作成するための仕組みを持っている – 各種のイメージファイル • 物理マシンのメンテナンス用OS • ホスト用OS • ロールインスタンス用OS – 配布するための仕組み ファブリックコントローラー • PXEサーバー • Windows 展開サービス ホスト ロール メンテ (Windows Deployment Services) OS OS OS Windows PXE サーバー 展開サービス 19
  20. 20. ノード 20
  21. 21. 3種類の物理マシンクラスター ラック内部 ルーターと ラック内部ロードバランサ プライマリー ファブリック ラック内部コントローラー レプリカ ファブリック コントローラー ノード 21
  22. 22. ノードの中身• ノード上では、ホストVM(1個)とアプリVM(n個)が 動作している。• アプリVMとホストVMは、エージェント同士が通信する。• ファブリックコントローラーには、ホストエージェントから アプリケーションVMの情報が伝えられる。 ノード アプリ ホスト VM OS ゲスト ホスト ファブリック エージェント エージェント コントローラー ハイパーバイザー 22
  23. 23. ノードの準備が完了するまで 23
  24. 24. (1)ノードのブート• ノードに電源が投入されると、ファブリック コントローラーが持っているメンテナンスOSで PXEブートされる。 ノード ファブリックコントローラー ホスト ロール メンテ OS OS OS エージェント メンテナンスOS Windows PXE サーバー 展開サービス 24
  25. 25. (2)ホストOSのインストール• エージェントはホストOSをインストールする – ノードが持つ物理ディスクをフォーマット – ファブリックコントローラーのWindows 展開サービス からインストールされる ノード ファブリックコントローラー ホスト ロール メンテ OS OS OS エージェント メンテナンスOS Windows PXE サーバー 展開サービス 25
  26. 26. (3)sysprepの実行• ノードが再起動してホストOSがブートされる。• sysprepコマンドを実行して新しいSIDを作成。 その後、再び再起動。 ノード ファブリックコントローラーsysprep/specialize ホスト ホスト ロール メンテ OS OS OS OS ハイパーバイザー Windows PXE サーバー 展開サービス 26
  27. 27. (4)準備完了!• ホストOS内で動作しているホストエージェントが ファブリックコントローラーとの通信を開始。 ノード ファブリックコントローラー ホスト ホスト ロール メンテ OS OS OS OS ホスト エージェント ハイパーバイザー Windows PXE サーバー 展開サービス 27
  28. 28. (5)その後• 各ノードが持っているイメージリポジトリに、 ファブリックコントローラーが持っている OSイメージを配布する。 – 各種ロールのOSイメージやzipファイルなど ノード ファブリックコントローラー ホスト ホスト ロール メンテ OS OS OS OS ホスト エージェント ハイパーバイザー Windows PXE サーバー 展開サービス 28
  29. 29. 外から見たWindows Azure 29
  30. 30. 外から見たWindows Azure Windows Azure管理ポータル PowerShell Cmdlets RDFE ファブリック ファブリック コントローラー コントローラー … データセンター 30
  31. 31. RDFEって何?• RedDog Front End の略称 – Windows Azureに対するAPIをインターネットに公開 しているフロントエンド – ユーザからのすべてのリクエストはRDFEを通る• Red Dog って何? – Windows Azureがまだ開発中だった頃のコードネーム – ちょっと間違えていたらPink Poodleになっていた http://japan.zdnet.com/cio/sp_07microsoft/20384470/ 31
  32. 32. Pink Poodle? なにそれ? 32
  33. 33. RDFEの役割• Windows Azureのフロントエンドとしての役目 – サブスクリプションの管理 – 課金のカウント – 各種サービスの管理• ストレージとコンピュートのインスタンスを効率 良く運用する – データセンターリージョンの決定 – アフィニティグループの考慮 – データセンターのVirtual IPや ノードの状況も考えつつ 33
  34. 34. アプリケーションのデプロイ 34
  35. 35. (1)ユーザーからの指示• 新しいパッケージをデプロイする際、クライアントから .csdefファイルがRDFEに対してアップロードされる。 ノード クライアント ホスト .csdef OS ファイル ホスト エージェント RDFE ハイパーバイザー ファブリック コントローラー 35
  36. 36. (2)クラスターの選択• RDFEは適切な状態にあるデータセンター内のクラスターを 管理しているファブリックコントローラーを選択する。 – 指定されたリージョンのデータセンターの中で、クラスターの負荷 状況やIPの利用状況などなどを考慮する ノード クライアント ホスト OS .csdef ファイル ホスト エージェント RDFE ハイパーバイザー ファブリック コントローラー 36
  37. 37. (3)ノードの選択• ファブリックコントローラーはアプリケーションが動作 するのに適切なノードを選択する。 – アプリケーションが要求するインスタンスのサイズや数を考慮 ノード クライアント ホスト OS ホスト エージェント RDFE ハイパーバイザー ファブリック コントローラー 37
  38. 38. (4)VMの作成• アプリケーションが動作する仮想マシンを作成する。 これが最終的にロールインスタンスとなる。 – VMの元となるOSイメージ(Dドライブ)はホストにあるイメージ リポジトリ内にある。 – ローカルディスク領域(Cドライブ)とロールが配置される領域 (EもしくはFドライブ)は動的にイメージが生成される。 ノード クライアント アプリ ホスト VM OS ホスト エージェント RDFE ハイパーバイザー ファブリック コントローラー 38
  39. 39. (5)内部通信の確立• エージェントの間での通信を確立させる。 このとき通信を保護するための転送証明書をゲスト側で 作成し、公開鍵だけをホスト側に送る。• エージェント間通信が確立すると、ホストエージェント はゲストエージェントのハートビート監視を開始する。 ノード 秘密鍵 アプリ ホスト 公開鍵 VM OS ゲスト ホストエージェント エージェント ハイパーバイザー ファブリック コントローラー 39
  40. 40. (6)外部通信の設定• 仮想マシンのネットワークを設定する – 外部につながるDynamic IPを割り当てる – 内部のVirtual IPとポートを設定し、外部のDynamic IPを紐付ける – 仮想マシン間の通信にパケットフィルターを適用 – 外部と内部をつなぐロードバランサーの設定を行う ノード ルーター アプリ ホスト VM OS ロードバランサー ゲスト ホスト エージェント エージェント ハイパーバイザー ファブリック コントローラー 40
  41. 41. サービスの監視• ファブリックコントローラーは、ソフト・ハードの監視に よって、サービスの可用性を管理する。 – 基本的にハートビートを監視 – 影響のあるノードは自動的に修復される 問題の種類 検出の方法 対処方法ロールインスタンス ファブリックコントローラーが ・ロールを再起動のクラッシュ ゲストエージェント経由で監視ゲストVMやゲスト ホストエージェントがファブリック ・ロールの再起動や、ゲストVMのエージェントの コントローラーにハートビートがな 再起動クラッシュ くなったことを警告ホストOSやホスト ファブリックコントローラーが ・ロールの回復を試みるエージェントの ホストエージェントの ・他ノードにロールをマイグレートクラッシュ ハートビートを監視 ホストエージェントが ・他ノードにロールをマイグレートノードの ファブリックコントローラーに ・ノードに対して“out for repair”ハードウエア障害 警告 とマーキング 41
  42. 42. 今回の障害について 42
  43. 43. 障害の原因(その1)• デジタル証明書を生成する際に有効期限 を設定する処理のバグ – 単に現在の年に+1した有効期限で証明書を 作ろうとしてしまっていた。現在日時 2012年1月1日 現在日時 2012年2月29日 ↓ ↓有効期限 2013年1月1日 有効期限 2013年2月29日 ↓ ↓ 問題なし 作られない 43
  44. 44. 障害発生の直前まで• 新しいバージョンのソフトウエアを展開中 – ファブリックコントローラ – ホストエージェント – ゲストエージェント• 転送証明書の生成が行われやすい状態にあった – 新しい仮想マシンの作成 • 新しい配置を実施したとき • 配置のスケール アウトを行うとき • 配置している仮想マシンの OS を更新したとき – 配置が他のノードにマイグレートされた時 • 「サービス回復」と呼ばれる処理 44
  45. 45. UTC 2月29日 0:00• 証明書の作成に失敗すると、ゲストエージェント は終了するためハートビートが返ってこない。• 25分以内にエージェントの接続が確立しないと、 ホストエージェントは仮想マシンを初期化して 再起動する。(当然状況は改善しない) ノード アプリ ホスト VM OS ゲスト ホスト エージェント エージェント ハイパーバイザー ファブリック コントローラー 45
  46. 46. ノードレベルの障害• 3 回連続でエージェント間の接続タイムアウトの後、ホスト エージェントはハードウェア障害があったと判断。• ホストエージェントはファブリックコントローラーに報告。• ファブリックコントローラーは対象のノードを 「Human Investigate」という状態に変更した。 ノード エラー報告が無いから ハード障害なんだろうな アプリ ホスト (´・ω・`) VM OS ゲスト ホスト エージェント エージェント ハイパーバイザー ファブリック コントローラー 46
  47. 47. クラスターレベルの障害• 「Human Investigate」状態のノードが閾値を超えたため、 ファブリックコントローラーはクラスター全体を 「Human Investigate」の状態に変更した。• この段階でファブリックコントローラーは、内部で開始され たすべてのソフトウェア更新を停止し、自動サービス回復は 無効化される。 Human Investigateの クラスター ノードが ファブリック 増えすぎたね コントローラー (´・ω・`) ファブリック コントローラー 47
  48. 48. UTC 2月29日 2:55• サービスマネージメント機能を停止 – 新しいVMの作成は確実に失敗する • アプリケーションの配置 • スケールアウトの実行 – 稼働中のアプリケーションの保護 • 複数インスタンスで運用して、一部のインスタンス が動作しているアプリケーションを、不用意に操作 することを防ぐため。 48
  49. 49. 問題の原因(その2)• 新バージョンのソフトウエアを展開中だった7個 のクラスターだけが対象の問題 – 7個のクラスター向けの更新パッケージに ホストエージェントと互換性のないネットワーク プラグインが入っていたため、ネットワーク接続が失 われた。 アプリ ホスト – いくつかのノードは VM OS 個別のエラーが発生 旧ゲスト 旧ホスト エージェント エージェント したため、個別の 対応を行った。 新ネットワーク プラグイン 49
  50. 50. おわりに 50
  51. 51. おわりに• 今回の障害でデータロストの問題は生じていない – ストレージサービスやSQL Azureなどのデータロスト は発生していない• 複数のインスタンスで運用していた場合、サービ スの提供は継続できていた可能性が高い – 最大時で、North Central USリージョンの6.7%、 South Central USの28%、North Europeリージョン の37%がサービス障害の対象であった。 http://itpro.nikkeibp.co.jp/article/NEWS/20120301/384015/ 51
  52. 52. Let’s dream and then let’s build. - Ray Ozzie はるたま (@harutama) http://twitter.com/harutama

×