2013年版の inside windows azure

2,031 views

Published on

2013年版の inside windows azure

  1. 1. 2013年版の Inside Windows Azure Japan Windows Azure User Group Microsoft MVP for Windows Azure はるたま http://twitter.com/harutama
  2. 2. 自己紹介 2 @harutama
  3. 3. 本セッションのゴール • Windows Azure の裏側がどんな仕組みで 動いているのか、なんとなく理解する。 3
  4. 4. 参考リソース • Windows Azure Internals http://channel9.msdn.com/Events/TechEd/NorthAmeri ca/2013/WAD-B402 • Windows Azure Role Architecture http://blogs.msdn.com/b/kwill/archive/2011/05/05/wi ndows-azure-role-architecture.aspx 4
  5. 5. 5 ところで
  6. 6. 6 Windows Azure として管理されてる コンピューティング リソースって どのくらい?
  7. 7. 7 People’s ears usually perk-up when they hear Windows Azure uses more server compute capacity than was used on the planet in 1999. http://blogs.msdn.com/b/windowsazure/archive/2012/05/24/datacenter- expansion-and-capacity-planning.aspx
  8. 8. 8
  9. 9. 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モード携帯電話、急速に普及 9 http://pc.watch.impress.co.jp/docs/article/991224/best10.htm
  10. 10. Windows Azure の 物理的なアーキテクチャ 10
  11. 11. 物理アーキテクチャ(ざっくり) 11 トップオブラック スイッチ 物理マシン データセンター ルーター ルーターと ロードバランサ データセンター PDU
  12. 12. 外側から見たラックの様子 12
  13. 13. ラックの中身 13
  14. 14. Gen.1 Network: DLA 14 ラック20本がひとかたまり オーバーサブスクリプション 120:1 データセンタールーター
  15. 15. ネットワークアーキテクチャ • Gen.1は Tree ネットワーク – 上の階層を経由する通信は転送速度が落ちる。 • トラフィックが集中してしまう • ブロッキングの影響が大きくなってしまう – 上の階層では IN/OUT のバランスが悪くなる。 =オーバーサブスクリプションが大きい • Gen.2以降は Fat-Tree ネットワーク – 基本的な考え方は “レイヤー間を全部つないじゃう” =ノンブロッキングで通信可能 =多くの物理マシンを収容できる 15
  16. 16. 参考 • 【Force10 Z9000とHPC】スケーラブル10GbE ネットワークの設計 - パート1 – http://ja.community.dell.com/techcenter/b/weblog/archive/ 2012/08/24/force10-z9000-hpc-10gbe.aspx • 【Force10 Z9000とHPC】スケーラブル10GbE ネットワークの設計 - パート2 – http://ja.community.dell.com/techcenter/b/weblog/archive/ 2012/08/27/force10-z9000-hpc-10gbe-2.aspx • ビジネス向けIBネットワークを考える ~HPCクラスタでの経験を踏まえて~ – http://www.slideshare.net/naotomatsumoto/ib-hpc 16
  17. 17. ボーダーリーフ スパイン Gen.2 Network: Quantum10 17 コンピュートラック 80本 7200ノード ストレージラック 20本 720ノード ・・・・・・・・・ ・・・・・・・・・
  18. 18. クラスター スパイン データセンター スパインセット2 クラスター スパイン データセンター スパインセット1 ボーダーリーフ Gen.3 Network: Quantum10v2 18 コンピュートクラスター 900ノード ストレージクラスター 720ノード ・・・・・・・・・ ・・・・・・・・・
  19. 19. 本当のところは… 19 前の図では全部同じ太さの線で機器をつ ないでいますが、実際にはちょっと違っ たりします。 32ポートだとして 8ポート=1 24ポート=3
  20. 20. Windows Azure の 論理的なアーキテクチャ 20
  21. 21. 論理アーキテクチャ • データセンター内の物理マシンは「クラスター」という 単位で分割されている。 – 1つのクラスタは約1000台の物理マシンで構成される – 不具合の影響がクラスター内で閉じ込められるような設計 • 各クラスターは「ファブリックコントローラー(FC)」に よって管理されている。 21 クラスター ファブリック コントローラー ファブリック コントローラー … …
  22. 22. クラスターの内部構造と ファブリックコントローラー 22 ラック内部 ラック内にある1台の物理マシンは ファブリックコントローラー用に予約される ラック内部 ラック内部 クラスター内にある 1つのファブリック コントローラーは マスターとして動作する 他のファブリック コントローラーとは マスター経由で 状態を同期している
  23. 23. ファブリックコントローラーの役目 • データセンターにおけるカーネルの役割 – データセンターのハードウエア管理 – 動作しているサービスの管理 23 物理マシン Office SQL Server データセンター IaaS PaaS Azure Database
  24. 24. ファブリックコントローラーの仕事 • リソースの割り当て – 新しい仮想マシンの作成(もちろん効率的に) – 仮想マシンのスケールアップ・スケールアウトの対応 • リソースのプロビジョニング – 物理マシンが故障した際は健全なマシンに移動させる • サービスのライフサイクル管理 – アプリケーションのアップデート – ゲストOSの自動アップデート • サービスのヘルスチェック – アプリケーションの死活監視 – ゲストOSの状態管理 24
  25. 25. 起動の仕組み • ユーティリティファブリックコントローラー により起動される。 – ファブリックコントローラーの複製元 – アップデートの際にも使用される • ユーティリティファブリックコントローラーは 各ファブリックコントローラーのFeed (Datacenter.xml)を購読している。 – 各サーバーのIPアドレス – サービスに割り当てるためにプールされたIP – ネットワーク機器やPDU(Power Distribution Unit) のIPアドレス 25
  26. 26. ファブリックコントローラーの中身 • 仮想マシンを作成するための仕組みを持っている – 各種のイメージファイル • 物理マシンのメンテナンス用OS • ホスト用OS • ロールインスタンス用OS – 配布するための仕組み • PXEサーバー • Windows 展開サービス (Windows Deployment Services) 26 ファブリックコントローラー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバー
  27. 27. クラスター 3種類の物理マシン 27 ラック内部 ラック内部 ラック内部 レプリカ ファブリック コントローラー プライマリー ファブリック コントローラー ノードorブレード (意味的には同じもの)
  28. 28. ノードの中身 • ノード上では、ホストVM(1個)とアプリVM(n個)が 動作している。 • アプリVMとホストVMは、エージェント同士が通信する。 • ファブリックコントローラーには、ホストエージェントから アプリケーションVMの情報が伝えられる。 28 ノード ファブリック コントローラー ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント
  29. 29. ノードの準備が完了するまで 29
  30. 30. (1)ノードのブート • ノードに電源が投入されると、ファブリック コントローラーが持っているメンテナンスOSで PXEブートされる。 30 ノード ファブリックコントローラー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバー エージェント メンテナンスOS
  31. 31. (2)ホストOSのインストール • エージェントはホストOSをインストールする – ノードが持つ物理ディスクをフォーマット – ファブリックコントローラーのWindows 展開サービス からインストールされる 31 ノード ファブリックコントローラー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバー エージェント メンテナンスOS
  32. 32. (3)sysprepの実行 • ノードが再起動してホストOSがブートされる。 • sysprepコマンドを実行して新しいSIDを作成。 その後、再び再起動。 32 ノード ファブリックコントローラー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバーハイパーバイザー ホスト OS sysprep/specialize
  33. 33. (4)準備完了! • ホストOS内で動作しているホストエージェントが ファブリックコントローラーとの通信を開始。 33 ノード ファブリックコントローラー ハイパーバイザー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバー ホスト OS ホスト エージェント
  34. 34. (5)その後 • 各ノードが持っているイメージリポジトリに、 ファブリックコントローラーが持っている OSイメージを配布する。 – 各種ロールのOSイメージやzipファイルなど 34 ノード ファブリックコントローラー ハイパーバイザー メンテ OS ホスト OS ロール OS Windows 展開サービス PXE サーバー ホスト OS ホスト エージェント
  35. 35. 外から見たWindows Azure 35
  36. 36. RDFE データセンター 外から見たWindows Azure 36 ファブリック コントローラー 管理ポータル Windows Azure PowerShell Cmdlets ファブリック コントローラー …
  37. 37. RDFEって何? • RedDog Front End の略称 – Windows Azureに対するAPIをインターネットに公開 しているフロントエンド – ユーザからのすべてのリクエストはRDFEを通る • Red Dog って何? – Windows Azureがまだ開発中だった頃のコードネーム – ちょっと間違えていたらPink Poodleになっていた http://japan.zdnet.com/cio/sp_07microsoft/20384470/ 37
  38. 38. Pink Poodle? なにそれ? 38
  39. 39. RDFEの役割 • Windows Azureのフロントエンドとしての役目 – サブスクリプションの管理 – 課金のカウント – 各種サービスの管理 • ストレージとコンピュートのインスタンスを効率 良く運用する – データセンターリージョンの決定 – アフィニティグループの考慮 – データセンターのVirtual IPや ノードの状況も考えつつ 39
  40. 40. Cloud Services へのデプロイ 40
  41. 41. (1)ユーザーからの指示 • 新しいパッケージをデプロイする際、クライアントから .csdefファイルがRDFEに対してアップロードされる。 41 RDFE クライアント ノード ファブリック コントローラー ハイパーバイザー ホスト OS ホスト エージェント .csdef ファイル
  42. 42. (2)クラスターの選択 • RDFEは適切な状態にあるデータセンター内のクラスターを 管理しているファブリックコントローラーを選択する。 – 指定されたリージョンのデータセンターの中で、クラスターの負荷 状況やIPの利用状況などなどを考慮する 42 RDFE クライアント ノード ファブリック コントローラー ハイパーバイザー ホスト OS ホスト エージェント .csdef ファイル
  43. 43. (3)ノードの選択 • ファブリックコントローラーはアプリケーションが動作 するのに適切なノードを選択する。 – アプリケーションが要求するインスタンスのサイズや数を考慮 43 RDFE ノード ファブリック コントローラー ハイパーバイザー ホスト OS ホスト エージェント クライアント
  44. 44. (4)VMの作成 • アプリケーションが動作する仮想マシンを作成する。 これが最終的にロールインスタンスとなる。 – VMの元となるOSイメージ(Dドライブ)はホストにあるイメージ リポジトリ内にある。 – ローカルディスク領域(Cドライブ)とロールが配置される領域 (EもしくはFドライブ)は動的にイメージが生成される。 44 RDFE ノード ファブリック コントローラー ハイパーバイザー ホスト OS アプリ VM ホスト エージェント クライアント
  45. 45. (5)内部通信の確立 • エージェントの間での通信を確立させる。 このとき通信を保護するための転送証明書をゲスト側で 作成し、公開鍵だけをホスト側に送る。 • エージェント間通信が確立すると、ホストエージェント はゲストエージェントのハートビート監視を開始する。 45 ノード ファブリック コントローラー ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント 秘密鍵 公開鍵
  46. 46. (6)外部通信の設定 • 仮想マシンのネットワークを設定する – 外部につながるDynamic IPを割り当てる – 内部のVirtual IPとポートを設定し、外部のDynamic IPを紐付ける – 仮想マシン間の通信にパケットフィルターを適用 – 外部と内部をつなぐロードバランサーの設定を行う 46 ノード ファブリック コントローラー ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント ルーター ロードバランサー
  47. 47. サービスの監視 • ファブリックコントローラーは、ソフト・ハードの監視に よって、サービスの可用性を管理する。 – 基本的にハートビートを監視 – 影響のあるノードは自動的に修復される 47 問題の種類 検出の方法 対処方法 ロールインスタンス のクラッシュ ファブリックコントローラーが ゲストエージェント経由で監視 ・ロールを再起動 ゲストVMやゲスト エージェントの クラッシュ ホストエージェントがファブリック コントローラーにハートビートがな くなったことを警告 ・ロールの再起動や、ゲストVMの 再起動 ホストOSやホスト エージェントの クラッシュ ファブリックコントローラーが ホストエージェントの ハートビートを監視 ・ロールの回復を試みる ・他ノードにロールをマイグレート ノードの ハードウエア障害 ホストエージェントが ファブリックコントローラーに 警告 ・他ノードにロールをマイグレート ・ノードに対して“out for repair” とマーキング
  48. 48. ロードバランサー 48
  49. 49. 割り当てられる IP アドレス • パブリック仮想 IP アドレス = Virtual IP = VIP – インターネット側からアクセスする 際の IP アドレス。 • 内部 IP アドレス = Dynamic IP = DIP – Windows Azure の内部で割り当て られた IP アドレス。 – 内部 IP アドレスはWindows Azure のソフトウエアロードバランサーで 管理がされる。 49
  50. 50. 絵で描くとこんな感じ • ロードバランサーを経由すると0.5msec程度の遅延 が入る。 • Windows Azure のロードバランサーはソフトウエ アです。ハードウエアではありません。 50 インスタンス0 10.2.3.4(内部IP) インスタンス1 10.2.3.5(内部IP) ロードバランサー 65.123.44.22 (仮想IP) インターネット 0.5msec 程度の レイテンシー
  51. 51. 全体はこんな感じ 51 ファブリックコントローラー テナント マネージャー ネットワーク マネージャー ソフトウエアロードバランサー マネージャーロール ソフトウエアロードバランサー マネージャー ダイナミックIP ヘルスモニター ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント MUX ロール ルート マネージャー MUX エージェント MUX ドライバー 仮想スイッチ
  52. 52. (1)アプリのデプロイ開始 52 ファブリックコントローラー テナント マネージャー ネットワーク マネージャー ソフトウエアロードバランサー マネージャーロール ソフトウエアロードバランサー マネージャー ダイナミックIP ヘルスモニター ファブリックコントローラーが アプリケーションをデプロイ ↓ ファブリックコントローラーが 仮想IPアドレスを払い出す ↓ ファブリックコントローラーの テナントマネージャー ↓ ネットワークマネージャー ↓ ソフトウエアロードバランサー マネージャーに仮想IPが伝えられる
  53. 53. (2)アプリVMの作成 53 ファブリックコントローラー テナント マネージャー ネットワーク マネージャー ソフトウエアロードバランサー マネージャーロール ソフトウエアロードバランサー マネージャー ダイナミックIP ヘルスモニター ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント アプリVMの作成が完了すると、ホスト エージェントのソフトウエアロードバ ランサーホストプラグインが、ソフト ウエアロードバランサーマネージャー にIPを問い合わせて、ノードの仮想ス イッチを構成する。 仮想スイッチ
  54. 54. (3)モニタリングの開始 54 ソフトウエアロードバランサー マネージャーロール ソフトウエアロードバランサー マネージャー ダイナミックIP ヘルスモニター ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント MUX ロール ルート マネージャー MUX エージェント MUX ドライバー アプリVMの監視対象となるポート に対してのモニタリングをヘルスモ ニターが開始する。 仮想スイッチ
  55. 55. (4)MUXロールの構成 55 ソフトウエアロードバランサー マネージャーロール ソフトウエアロードバランサー マネージャー ダイナミックIP ヘルスモニター ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント MUX ロール ルート マネージャー MUX エージェント MUX ドライバー MUX ロールに対して、仮想IPアド レスと内部IPアドレスの関係を通知。 これをもとにして、エージェントと ドライバの動作を変更する。 仮想スイッチ
  56. 56. (5)物理ネットワークの構成 56 ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント MUX ロール ルート マネージャー MUX エージェント MUX ドライバー 物理ネットワーク デバイス ルートマネージャーが物理ネットワー クデバイスの構成を変更して、仮想IP アドレスに対する外部からのパケット のルーティングを開始。 インターネット 仮想スイッチ
  57. 57. (6)これで完成 57 ノード ハイパーバイザー ホスト OS アプリ VM ホスト エージェント ゲスト エージェント MUX ロール ルート マネージャー MUX エージェント MUX ドライバー 物理ネットワーク デバイス インターネット 仮想スイッチ こんな感じでインターネットから Windows Azure の内部にパケットが 流れ始める。
  58. 58. MS社内用ツールで見ると… 58
  59. 59. 59
  60. 60. 60
  61. 61. 61 ちょっと寄り道
  62. 62. ふむ… 62
  63. 63. ほぅ… 63
  64. 64. 64
  65. 65. 65
  66. 66. Let’s dream and then let’s build. - Ray Ozzie はるたま (@harutama) http://twitter.com/harutama

×