66
2013年版の Inside Windows Azure Japan Windows Azure User Group Microsoft MVP for Windows Azure はるたま http://twitter.com/harutama

2013年版の inside windows azure

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 2013年版の inside windows azure

2013年版のInside Windows Azure

Japan Windows Azure User Group

Microsoft MVP for Windows Azure

はるたま

http://twitter.com/harutama

Page 2: 2013年版の inside windows azure

自己紹介

2@harutama

Page 3: 2013年版の inside windows azure

本セッションのゴール

• Windows Azure の裏側がどんな仕組みで動いているのか、なんとなく理解する。

3

Page 4: 2013年版の inside windows azure

参考リソース

• Windows Azure Internalshttp://channel9.msdn.com/Events/TechEd/NorthAmerica/2013/WAD-B402

• Windows Azure Role Architecturehttp://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx

4

Page 5: 2013年版の inside windows azure

5

ところで

Page 6: 2013年版の inside windows azure

6

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

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

Page 7: 2013年版の inside windows azure

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

Page 8: 2013年版の inside windows azure

8

Page 9: 2013年版の inside windows azure

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

Page 10: 2013年版の inside windows azure

Windows Azure の物理的なアーキテクチャ

10

Page 11: 2013年版の inside windows azure

物理アーキテクチャ(ざっくり)

11

トップオブラックスイッチ

物理マシン

データセンタールーター

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

データセンター

PDU

Page 12: 2013年版の inside windows azure

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

12

Page 13: 2013年版の inside windows azure

ラックの中身

13

Page 14: 2013年版の inside windows azure

Gen.1 Network: DLA

14

ラック20本がひとかたまり

オーバーサブスクリプション120:1 データセンタールーター

Page 15: 2013年版の inside windows azure

ネットワークアーキテクチャ

• Gen.1は Tree ネットワーク

– 上の階層を経由する通信は転送速度が落ちる。

• トラフィックが集中してしまう

• ブロッキングの影響が大きくなってしまう

– 上の階層では IN/OUT のバランスが悪くなる。=オーバーサブスクリプションが大きい

• Gen.2以降は Fat-Tree ネットワーク

– 基本的な考え方は “レイヤー間を全部つないじゃう”=ノンブロッキングで通信可能=多くの物理マシンを収容できる

15

Page 16: 2013年版の inside windows azure

参考

• 【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

Page 17: 2013年版の inside windows azure

ボーダーリーフ

スパイン

Gen.2 Network: Quantum10

17

コンピュートラック 80本 7200ノード ストレージラック 20本 720ノード

・・・・・・・・・ ・・・・・・・・・

Page 18: 2013年版の inside windows azure

クラスタースパイン

データセンタースパインセット2

クラスタースパイン

データセンタースパインセット1

ボーダーリーフ

Gen.3 Network: Quantum10v2

18

コンピュートクラスター 900ノード ストレージクラスター 720ノード

・・・・・・・・・ ・・・・・・・・・

Page 19: 2013年版の inside windows azure

本当のところは…

19

前の図では全部同じ太さの線で機器をつないでいますが、実際にはちょっと違ったりします。

32ポートだとして

8ポート=1

24ポート=3

Page 20: 2013年版の inside windows azure

Windows Azure の論理的なアーキテクチャ

20

Page 21: 2013年版の inside windows azure

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

単位で分割されている。

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

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

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

21

クラスター

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

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

… …

Page 22: 2013年版の inside windows azure

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

22

ラック内部

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

ラック内部

ラック内部

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

マスターとして動作する

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

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

Page 23: 2013年版の inside windows azure

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

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

– データセンターのハードウエア管理

– 動作しているサービスの管理

23

物理マシン

OfficeSQL

Server

データセンター

IaaSPaaS

AzureDatabase

Page 24: 2013年版の inside windows azure

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

• リソースの割り当て

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

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

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

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

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

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

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

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

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

– ゲストOSの状態管理

24

Page 25: 2013年版の inside windows azure

起動の仕組み

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

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

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

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

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

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

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

25

Page 26: 2013年版の inside windows azure

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

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

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

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

• ホスト用OS

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

– 配布するための仕組み

• PXEサーバー

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

26

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

メンテOS

ホストOS

ロールOS

Windows展開サービス

PXE サーバー

Page 27: 2013年版の inside windows azure

クラスター

3種類の物理マシン

27

ラック内部

ラック内部

ラック内部

レプリカファブリック

コントローラー

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

コントローラー

ノードorブレード(意味的には同じもの)

Page 28: 2013年版の inside windows azure

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

動作している。

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

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

28

ノード

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

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

Page 29: 2013年版の inside windows azure

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

29

Page 30: 2013年版の inside windows azure

(1)ノードのブート

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

30

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

メンテOS

ホストOS

ロールOS

Windows展開サービス

PXE サーバー

エージェント

メンテナンスOS

Page 31: 2013年版の inside windows azure

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

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

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

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

31

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

メンテOS

ホストOS

ロールOS

Windows展開サービス

PXE サーバー

エージェント

メンテナンスOS

Page 32: 2013年版の inside windows azure

(3)sysprepの実行

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

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

32

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

メンテOS

ホストOS

ロールOS

Windows展開サービス

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

ホストOS

sysprep/specialize

Page 33: 2013年版の inside windows azure

(4)準備完了!

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

33

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

ハイパーバイザー

メンテOS

ホストOS

ロールOS

Windows展開サービス

PXE サーバー

ホストOS

ホストエージェント

Page 34: 2013年版の inside windows azure

(5)その後

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

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

34

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

ハイパーバイザー

メンテOS

ホストOS

ロールOS

Windows展開サービス

PXE サーバー

ホストOS

ホストエージェント

Page 35: 2013年版の inside windows azure

外から見たWindows Azure

35

Page 36: 2013年版の inside windows azure

RDFE

データセンター

外から見たWindows Azure

36

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

管理ポータルWindows Azure

PowerShell Cmdlets

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

Page 37: 2013年版の inside windows azure

RDFEって何?

• RedDog Front End の略称

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

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

• Red Dog って何?

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

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

37

Page 38: 2013年版の inside windows azure

Pink Poodle? なにそれ?

38

Page 39: 2013年版の inside windows azure

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

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

– 課金のカウント

– 各種サービスの管理

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

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

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

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

39

Page 40: 2013年版の inside windows azure

Cloud Services へのデプロイ

40

Page 41: 2013年版の inside windows azure

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

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

41

RDFE

クライアントノード

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

ハイパーバイザー

ホストOS

ホストエージェント

.csdefファイル

Page 42: 2013年版の inside windows azure

(2)クラスターの選択

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

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

42

RDFE

クライアントノード

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

ハイパーバイザー

ホストOS

ホストエージェント

.csdefファイル

Page 43: 2013年版の inside windows azure

(3)ノードの選択

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

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

43

RDFE

ノード

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

ハイパーバイザー

ホストOS

ホストエージェント

クライアント

Page 44: 2013年版の inside windows azure

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

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

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

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

44

RDFE

ノード

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

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

クライアント

Page 45: 2013年版の inside windows azure

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

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

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

45

ノード

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

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

秘密鍵

公開鍵

Page 46: 2013年版の inside windows azure

(6)外部通信の設定

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

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

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

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

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

46

ノード

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

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

ルーター

ロードバランサー

Page 47: 2013年版の inside windows azure

サービスの監視

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

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

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

47

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

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

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

・ロールを再起動

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

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

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

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

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

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

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

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

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

Page 48: 2013年版の inside windows azure

ロードバランサー

48

Page 49: 2013年版の inside windows azure

割り当てられる IP アドレス

• パブリック仮想 IP アドレス= Virtual IP = VIP– インターネット側からアクセスする

際の IP アドレス。

• 内部 IP アドレス= Dynamic IP = DIP– Windows Azure の内部で割り当て

られた IP アドレス。

– 内部 IP アドレスはWindows Azureのソフトウエアロードバランサーで管理がされる。

49

Page 50: 2013年版の inside windows azure

絵で描くとこんな感じ

• ロードバランサーを経由すると0.5msec程度の遅延が入る。

• Windows Azure のロードバランサーはソフトウエアです。ハードウエアではありません。

50

インスタンス010.2.3.4(内部IP)

インスタンス110.2.3.5(内部IP)

ロードバランサー

65.123.44.22(仮想IP)

インターネット

0.5msec 程度のレイテンシー

Page 51: 2013年版の inside windows azure

全体はこんな感じ

51

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

テナントマネージャー

ネットワークマネージャー

ソフトウエアロードバランサーマネージャーロール

ソフトウエアロードバランサーマネージャー

ダイナミックIP ヘルスモニター

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

MUX ロール

ルートマネージャー

MUX エージェント

MUX ドライバー

仮想スイッチ

Page 52: 2013年版の inside windows azure

(1)アプリのデプロイ開始

52

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

テナントマネージャー

ネットワークマネージャー

ソフトウエアロードバランサーマネージャーロール

ソフトウエアロードバランサーマネージャー

ダイナミックIP ヘルスモニター

ファブリックコントローラーがアプリケーションをデプロイ

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

仮想IPアドレスを払い出す↓

ファブリックコントローラーのテナントマネージャー

↓ネットワークマネージャー

↓ソフトウエアロードバランサー

マネージャーに仮想IPが伝えられる

Page 53: 2013年版の inside windows azure

(2)アプリVMの作成

53

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

テナントマネージャー

ネットワークマネージャー

ソフトウエアロードバランサーマネージャーロール

ソフトウエアロードバランサーマネージャー

ダイナミックIP ヘルスモニター

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

アプリVMの作成が完了すると、ホストエージェントのソフトウエアロードバランサーホストプラグインが、ソフトウエアロードバランサーマネージャーにIPを問い合わせて、ノードの仮想スイッチを構成する。

仮想スイッチ

Page 54: 2013年版の inside windows azure

(3)モニタリングの開始

54

ソフトウエアロードバランサーマネージャーロール

ソフトウエアロードバランサーマネージャー

ダイナミックIP ヘルスモニター

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

MUX ロール

ルートマネージャー

MUX エージェントMUX ドライバー

アプリVMの監視対象となるポートに対してのモニタリングをヘルスモニターが開始する。

仮想スイッチ

Page 55: 2013年版の inside windows azure

(4)MUXロールの構成

55

ソフトウエアロードバランサーマネージャーロール

ソフトウエアロードバランサーマネージャー

ダイナミックIP ヘルスモニター

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

MUX ロール

ルートマネージャー

MUX エージェントMUX ドライバー

MUX ロールに対して、仮想IPアドレスと内部IPアドレスの関係を通知。これをもとにして、エージェントとドライバの動作を変更する。

仮想スイッチ

Page 56: 2013年版の inside windows azure

(5)物理ネットワークの構成

56

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

MUX ロール

ルートマネージャー

MUX エージェントMUX ドライバー

物理ネットワークデバイス

ルートマネージャーが物理ネットワークデバイスの構成を変更して、仮想IPアドレスに対する外部からのパケットのルーティングを開始。

インターネット

仮想スイッチ

Page 57: 2013年版の inside windows azure

(6)これで完成

57

ノード

ハイパーバイザー

ホストOS

アプリVM

ホストエージェント

ゲストエージェント

MUX ロール

ルートマネージャー

MUX エージェントMUX ドライバー

物理ネットワークデバイス

インターネット

仮想スイッチ

こんな感じでインターネットからWindows Azure の内部にパケットが流れ始める。

Page 58: 2013年版の inside windows azure

MS社内用ツールで見ると…

58

Page 59: 2013年版の inside windows azure

59

Page 60: 2013年版の inside windows azure

60

Page 61: 2013年版の inside windows azure

61

ちょっと寄り道

Page 62: 2013年版の inside windows azure

ふむ…

62

Page 63: 2013年版の inside windows azure

ほぅ…

63

Page 64: 2013年版の inside windows azure

64

Page 65: 2013年版の inside windows azure

65

Page 66: 2013年版の inside windows azure

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

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