Azure仮想マシンとVMロールの違い

Azure Virtual Machines(仮想マシン)とVMロールがよく混同されているようです。
使ったことがある人にとっては、すぐにわかりますが、公な記事などでも混同されている場合があるので注意してください。

今回は、少し前の記事ですが、Azure仮想マシンとVMロールの違いについて書かれたものがあったので、ざっくり訳してみました。(少しかいつまんでいます。)

VMロール
付属するソフトウェアやサービスパック、パッチ、更新、インストールされたアプリケーションと共にOSイメージをWindows Azureへ送信します。
アプリケーションだけでなくOSの健全性にも責任を持つ必要があります。パッチを適用し、メンテナンスしなければなりません。
差分ディスクにより更新を適用することができます。そのため、20-30GBのシステムイメージを再送信する必要はありません。

異なるホストでVMロールが実行されるには、多くの理由(ブルースクリーンのような)があります。
その際、イメージを取得し、新しいホストを検出し、イメージを実行します。
古いVMは破棄され、異なる顧客のための利用可能なホストになります。
そのため、ローカルファイルシステムに加えた変更は失われます。

IaaS仮想マシン
6月6日、7日に告知された仮想マシンは、Windows Azureデータセンターで実行さる文字通り仮想マシンです。
それもまた、OSとパッチ適用とメンテナンスに責任を持つ必要があります。
しかし、計画的および非計画的なリブートに対して、完全に永続化されます。
レジストリやファイルシステムを変更したり、COMコンポーネントを登録したりしても、システム障害などで異なるホストへの移動があると、その変更は移動後にも維持されます。
オンプレミス環境の仮想マシンと同様に、すべての変更は移動後でも維持されます。

なぜでしょうか?
Windows Azureに慣れていない人であれば、リブート後にデータが維持されないことを望むでしょうか。
これは、より広い視点で見る必要があります。
Windows Azureは、IaaSサービスを導入しました。
今までは提供されていたのはPaaSでした。
PaaSは、そこにコードを送れば、それを実行するというモデルです。
これを目的として、Window Azureクラウドサービスは3つのロールを導入しています。

  1. Workerロール
  2. Webロール
  3. VMロール

Workerロールは、クラウドアプリケーションを素早くプロビジョニングできるように設計されています。
サービス管理APIを使うことで、複数のVMが必要であることを示すことができます。
共通の方法のひとつは、フィールドです。
アプリケーションをスケールアウトしたり戻す処理が行われます。

  1. 健全で正確にパッチ適用されたOSイメージを取得します。(それはマイクロソフトにより作成され、パッチ適用され、メンテナンスされています。)
  2. 実行するホストを検出します。ホストは異なるルーター、異なるロードバランサ、異なる電力供給など、作成した時とは異なるラックにあるでしょう。
  3. ホストにVMをコピーし、起動します。
  4. ロール毎に個別のサブネットを作成し、VM内外へのトラフィックを通すだけのルーターに接続し、ポートのみを指定します。
  5. 外部ポートはロードバランサとファイアウォール、最終的にはインターネットに接続します。
  6. 仮想IPアドレスとDNS名が付与されます。
  7. 指定したスタートアップタスクを実行します。例えば、コードが呼び出すランタイムやAPIをインストールします。
  8. 送信したアプリケーションパッケージを検出し、VM上に正しいコードを取得します。
  9. あなたのコードが実行されます。

これはすべて自動化されています。
約8~15分で大抵のアプリケーションのプロビジョニングが行われ、多層アーキテクチャ、マルチサーバーが提供できるでしょう。

Webロールは上記1から9の間で、IISを構成して実行する以外は、Workerロールと同じです。

OSが起動し、スタートアップタスクが実行されるまでには、それが複雑であれば、それだけ時間がかかります。
その問題のためにVMロールがあります。
例えば、スタートアップタスクがアプリケーションをインストールするのに45分要する場合、デフォルトの起動時間が15分であった場合、VMのプロビジョニングのたびに60分を要することになります。

コードや設定、ランタイムなどが埋め込まれたVMイメージであれば、起動は15分で済むでしょう。
それは、OSをメンテナンスし、パッチを適用し、セキュリティ修正やサービスパックを適用しなければならないというデメリットがあります。
しかし、素早いプロビジョニングというメリットを得ることができます。

IaaS仮想マシンはよりよいものです。
しかし、IaaSの仮想マシンをメンテナンスするということは、インフラ領域で働く必要があるということです。
例えば、複数の仮想マシンの負荷分散を設定するために、のような方法は使えません。
自動化したすべてのプロビジョニング処理と関連付けるようにする必要があります。

メリット・デメリット
IaaS仮想マシンとVMロールは似ているようですが、異なります。
IaaS仮想マシンには永続性があります。VMロールには永続性はありません。
VMロールはすばやいプロビジョニングが可能です。仮想マシンはそれができません。
IaaS仮想マシンのメリットは、ローカルファイルシステムへの変更に留まらず、サポートされたLinuxディストリビューションや、オンプレミスのどんなアプリケーションでも1時間あたり数円でクラウドに展開できることです。

ただのホスティング機能か?
ホスティングでは、IaaSかPaaSのどちらでも、これほど短時間で仮想マシンをプロビジョニングできません。
複雑なアプリケーションのためのインフラを準備するために、短時間でプロビジョニングすることはできません。
大抵のホスティングのビジネスモデルでは、仮想マシンを契約した長さによって課金されます。
それが稼働しているか否かにかかわらず、契約した仮想マシンに対して支払う必要があります。
ホスティングで実現できないことのひとつは、時間単位での課金です。
クラウド環境では、1時間だけアプリケーションを乗せた仮想マシンをプロビジョニングできます。

原文:The difference between Azure VMs and Azure VM Role


This entry was posted in 未分類 and tagged , , . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>