💬

【AZ-104】今さら聞けないAzure仮想マシン

2024/01/17に公開1

はじめに

この記事では、Azure の仮想マシンについて解説していきます。
仮想マシン(以下 VM)は Azure の中で最もポピュラーなサービスであり、業務やテストなどのためのクラウド上のコンピューティング環境です。
Azure について勉強したい方、 AZ-104(中級レベルの試験)の勉強をしている方の参考になれば幸いです。

VM の概要

VM は、CPU、メモリ、ディスク、ネットワークインターフェースといった、コンピューティング環境に必要なリソースをクラウド上でまとめて提供しています。
Microsoft のデータセンターで実行される VM のインスタンスが Azure VM です。
Microsoft のデータセンターには多くのラックがあり、そのラック内の各ブレードで Windows サーバーを実行する Hyper-V サーバー(ホスト)が動作しています。
VM のリソースを作成することで、データセンター内のホスト上に VM が作成され、インターネットを介してリモート接続できます。
VM の特徴は以下です。

  • 様々な OS、性能を選択できる
  • 迅速に展開できる
  • 柔軟に性能を変更できる
  • 強固なセキュリティとコンプライアンス
  • 運用コストをおさえられる

VM のサイズ

サイズとは VM の性能を表すパラメーターです。サイズによって割り当てられる vCPU やメモリ容量などが異なります。
サイズは後から変更可能です。

シリーズは、データセンター内のホストの種類を表す言葉です。
データセンターには数多くのホストが存在し、Intel 社のプロセッサを搭載するホストや、AMD 社のプロセッサを搭載するホストなど様々です。
そのため、同じサイズでもシリーズが異なればパフォーマンスが異なります。

VM を構成するディスク

VM でも、物理的なコンピュータと同じように OS やアプリのデータを保存するためのディスクが必要です。VM を構成するディスクは 3 つあります。

OS ディスク

OS が含まれるディスクです。WindowsVM では C ドライブとしてラベル付けされます。
通常、OS ディスクは Azure Storage に格納されます。

一時ディスク

キャッシュ用のディスクです。一時ディスクは非永続化領域であり、VM を停止すると一時ディスクに保存されているデータは消失します。
D ドライブとしてラベル付けされます。OS ディスクに比べて高速なアクセスを実現するため、キャッシュの格納先として利用されます。

データディスク

アプリケーションやデータを格納するディスクです。新しいデータディスクを VM に接続すると、VM 上で新しいディスクとして認識されるためユーザーの任意のラベルをつけて使用できます。接続できるディスクの数はサイズによって決まります。
VM を停止することなくディスクの追加、削除が可能です。

ディスクの種類

OS ディスクとデータディスクは種類を選択できるので、用途にあったパフォーマンスのディスクを選択しましょう。VM に接続するディスクごとに異なる種類を使用できます。

Standard HDD

データへのアクセス頻度が低い、クリディカルではないワークロード向けです。
最大 IOPS は 2000、最大スループットは 500MB/秒です。
※IOPS(Input/Output Operations Per Second)は「1 秒あたりの入出力操作数」です。
※スループットは単位時間あたりに処理できるデータの量です。IOPS は回数、スループットは量という違いがあります。

Standard SSD

Web サーバーなど高い IOPS が要求されないワークロード、使用頻度の低いエンタープライズアプリケーション、開発やテスト向けのディスクです。
最大 IOPS は 6000、最大スループットは 750MB/秒です。

Premium SSD

Exchange サーバーの運用環境など、エンタープライズワークロード向けのディスクです。
最大 IOPS は 20000、最大スループットは 900MB/秒です。

Ultra Disk

トランザクションが多いワークロード向けのディスクです。IOPS とスループットは独自に指定可能です。OS ディスクとしては使用できず、データディスクとしてのみ使用できます。
最大 IOPS は 16000、最大スループットは 4000MB/秒です。

ディスクストレージ

VM の OS ディスクとデータディスクの実体は、用量が固定された VHD ファイルです。
これらはいずれかのディスクストレージに格納して管理します。

アンマネージドディスク

事前にストレージアカウントを準備し、その中にディスクを格納する管理方法です。
Standard HDD 使用時のみ、オプションで geo 冗長ストレージを選択すると 6 重のコピーを 2 つのリージョンにまたがって保持できます。

マネージドディスク

現在の Azure における主流のディスク管理方法です。事前にストレージアカウントを準備することなくディスクを作成できます。
ディスクの種類(Ultra Disk 以外)も変更できるため、パフォーマンスに合わせた対応が可能です。
アンマネージドディスクをマネージドディスクに変換することも可能です。(アンマネージド → マネージドの方向のみ可能)

イメージ及びサポートされる OS

Azure でサポートされる OS は大きく分けて Windows と Linux があります。
VM にインストールする OS イメージをAzure Marketplaceから選択します。

Windows サーバーについては、Windows Server 2003 以降のバージョンがサポートされています。
Linux サーバーについては、Ubuntu、Oracle Linux など、一般的に使用される多くの Linux ディストリビューションとバージョンがサポートされています。
Windows サーバーと異なり、Linux の VM ででゃ OS のインプレースアップグレードがサポートされています。

VM の可用性オプション

VM の稼働率を可能な限り 100%に近づけるために、可用性セットや可用性ゾーンという可用性を高めるオプションがあります。
いずれも VM 作成時にオプションを決定する必要があり、既存の VM には追加できないことに注意しましょう。

可用性セット

1 つのデータセンター内の複数のラックやブレードに同じ構成の VM を複数作成する方法です。
99.95%の可用性を保証できます。可用性セットには 2 つのパラメーターがあります。

  • 障害ドメイン
    データセンター内のいくつのラックに分散して VM を配置するか決定します。最大 3 ですが、リージョンやサブスクリプションによって 3 より小さいことがあります。
  • 更新ドメイン
    いくつのサーバーグループに分散して VM を配置するか決定します。最大 20 です。

可用性ゾーン

配置先のデータセンターを分ける方法です。
データセンターレベルで障害が発生した場合に強い構成となり、99.99%以上の可用性を保証できます。例えば、東日本リージョンは、東京と埼玉にデータセンターがあるため、同じ構成の VM を複数のそれぞれのデータセンターに作成できます。
リージョンにあるデータセンターを「ゾーン」と呼ばれる単位で分割しています。

VM の拡張機能

VM に拡張機能をインストールすることができます。Azure ポータルから簡単に追加・削除ができます。既存の VM に拡張機能を追加・削除する際には、VM が実行中である必要があるので注意です。
拡張機能にはサードパーティ製を含めて様々なものがありますが、代表的なもの 2 つをご紹介します。この 2 つの共通点としては、拡張機能で使用するスクリプトファイルを Blob Storage に格納しておく必要があります。
手元にあるファイルは直接実行できません。

カスタムスクリプト拡張機能

VM の OS で、指定したスクリプトを実行する拡張機能です。
Windows の VM では PowerShell スクリプトを、Linux の VM ではシェルスクリプトを実行できます。
例えば、VM の初期設定を行うスクリプトを用意し、VM 作成時にそのスクリプトを実行することで初期設定を自動化できます。

PowerShell DSC 拡張機能

PowerShell DSC(Desired State Configuration)とは、PowerShell によるシステムの構成や展開を行う管理プラットフォームです。
望ましい状態を実現するためのスクリプトファイルを VM の OS 上で実行できる拡張機能です。
例えば、Web サーバー(IIS)の役割をインストールする際は、次のような宣言型構文で定義します。
「localhost では、Windows の機能として Web サーバーの役割が存在してほしい」という旨のスクリプトファイルです。

Configuration IISInstall
{
  Node "localhost"
  {
    WindowsFeature IIS
    {
      Ensure = "Present"
      Name = "Web-Server"
    }
  }
}

VM の作成と変更

作成

VM を作成する際に、Windows か Linux どちらかのイメージを作成しますが、VM への接続方法が異なります。
Windows ではリモートデスクトップ(RDP)を使用するのに対し、Linux は SSH を使用します。
そのためイメージによって認証方法が異なる点をおさえてください。
Windows では RDP 接続を行うための管理者アカウントの情報を指定して認証します。
Linux では SSH 接続をするための認証の種類としてパスワードか SSH 公開キーのいずれかを選択し必要な情報を指定する必要があります。

設定

VM を作成後、Azure ポータル等でディスクやサイズ、拡張機能などの設定を変更することができます。サイズを上位のものに変更することをスケールアップといい、パフォーマンスを向上させることができます。スペックが過剰になってしまった場合、サイズを下位のものに変更します。このことをスケールダウンといいます。
実行中の VM のサイズを変更する際には、再起動が必要になります。

監視

Azure ポータルのメニュー「診断設定」にて「ゲストレベルの監視を有効にする」を選択すると、VM に 診断エージェント(Diagnostics エージェント) がインストールされます。
これによりゲスト OS やアプリケーションが生成するログやパフォーマンスデータなどがストレージアカウントに収集されます。
そのため VM に接続することなく、診断データにアクセス可能になります。

オートメーション

「テンプレートのエクスポート」は既存の VM と同じようなパラメーターの VM を新しく作成したい時に役立ちます。ARM テンプレートの確認やダウンロードが可能です。

VM への接続方法

VM への接続方法は次の 3 つがあります。

リモートデスクトップ(RDP)接続

WindowsVM に接続する方法です。既定のポートは 3389 です。

SSH(Secure Shell)接続

LinuxVM に接続する方法です。既定のポートは 22 です。

Bastion 接続

PaaS サービスの Bastion を用いて VM に接続する方法です。
RDP や SSH のポートを外部に公開せず、安全にリモート接続できます。既定のポートは 443 です。
Bastion はリモート接続するための踏み台として機能します。
Bastion 接続を使用するには、VM が接続する仮想ネットワークに「AzureBastionSubnet」という名前の Bastion 専用のサブネットを作成する必要があります。
サブネットを作成したら、Bastion を作成してパブリック IP アドレスを割り当てます。
アドレス範囲のプレフィックスの値を/26 以下にする必要があります。

VM のスケールセット

VM のスケールセットを使用すると、同じ構成の VM を複数まとめて作成し、必要に応じて自動スケーリングすることが可能になります。
2 つのスケーリング方法と、スケールセット作成時のパラメーターを紹介します。

垂直スケーリング

VM のサイズを変更するアプローチです。
サイズを上げることをスケールアップ、サイズを下げることをスケールダウンといいます。
垂直スケーリングを実行するとダウンタイムが発生します。

水平スケーリング

VM の稼働数を変更するアプローチです。
稼働数を増やすことをスケールアウト、減らすことをスケールインといいます。
VM の台数を調整することでシステムの性能を調整するので、ダウンタイムはありません。
台数も上限はありません。(増やしすぎるとコストが恐ろしいことになるので注意)

初期インスタンス数

スケールセット内に最初に作成する VM の数です。0~1000 まで指定できます。

スケーリングポリシー

手動でスケーリングするか、自動でスケーリングするか選択できます。自動スケーリングの場合は「カスタム」を選択します。
カスタムの場合はインスタンス数の最小数、最大数、CPU の使用率などでしきい値を設定します。

スケールインポリシー

スケールセット内でどの VM から削除するか順序を構成します。障害ドメインと更新ドメインのバランスを維持しつつ、VM を削除する必要があります。
新しい VM から削除するポリシーと、古い VM から削除するポリシーがあります。

アップグレードモード

スケールセット内の VM を、スケールセットモデルに合わせた状態、構成にアップグレードする方法を指定します。
スケールセット内で指定された VM の構成、定義情報をスケールセットモデルといいます。
スケールセットモデルを変更したとき、既存の VM をどのようなアプローチでスケールセットモデル通りの構成に更新するかということです。
アップグレードする方法は 3 つあります。

  • 手動
    スケールセットモデルの変更は既存の VM の更新に影響しません。スケールセットモデル変更後、手動で既存の VM のアップグレードをする必要があります。
  • 自動
    スケールセットモデル変更後、自動で既存の VM も更新されます。ランダムな順序で更新されるため、全ての VM が同時に停止する時間が発生します。
  • ローリング
    スケールセットモデル変更後、指定した更新する VM の割合(バッチサイズ)に合わせて順次自動更新していく方法です。
    例えば VM が 10 台、バッチサイズ 20%を指定すると、2 台ずつ更新されます。

オーバープロビジョニング

VM のプロビジョニング成功率を上げるためのアプローチです。このパラメーターを有効にすると、スケールセットで指定した台数より少し多めに VM を作成及び起動します。
要求された VM の数通りにプロビジョニングが成功した場合、余計に作成していた VM は削除されます。バッファを設けるイメージですね。
なお、一時的に作成された VM は課金対象にはなりません。クォータ制限にもカウントされません。

自動スケーリング設定

スケールセットの特徴は、自動スケーリングできることです。需要が多くなれば VM を自動追加し、少なくなれば自動削除します。
自動スケーリングを実行する規則、インスタンス数の範囲、スケジュール設定などは**自動スケールプロファイル(スケーリング条件)**と呼ばれる単位で管理されます。

自動スケールプロファイルが構成されている場合、「指定日プロファイル」「定期的プロファイル」「既定プロファイル」の順でプロファイルを確認して実行します。

  • 指定日プロファイル
    特定の開始日時と終了日時を指定するプロファイルです。
  • 定期的プロファイル
    特定の曜日とその開始時刻と終了時刻を指定するプロファイルです。
  • 既定プロファイル
    既定で作成されているプロファイルです。上記 2 つに一致しなかった時に実行されます。

自動スケールプロファイルに複数の規則が構成されている場合は、スケールアウトとスケールインによって実行条件が異なります。
スケールアウトの規則については、「いずれか」を満たしている場合に自動スケーリングが実行されます。
スケールインの規則については、「すべて」が満たされている場合に自動スケーリングが実行されます。

例えば、以下のような規則がある場合は、こんな結果になります。

# 規則
・CPU使用率が80%を超えたらスケールアウト
・メモリ使用率が75%を超えたらスケールアウト
・CPU使用率が30%未満の場合、スケールイン
・メモリ使用率が40%未満の場合、スケールイン
# 結果
・CPU使用率が85%でメモリ使用率が50%の場合、スケールアウトされる
・CPU使用率が60%でメモリ使用率が80%の場合、スケールアウトされる
・CPU使用率が25%でメモリ使用率が50%の場合、スケールアウトされない
・CPU使用率が25%でメモリ使用率が35%の場合、スケールアウトされる

おわりに

以上、AZ-104 の「仮想マシン」に関わる情報でした。
詳細の仕組みなどを知りたい場合は以下の書籍や公式ドキュメントを御覧ください。

合格対策 Microsoft 認定試験 AZ-104:Microsoft Azure Administrator テキスト&演習問題

(模擬問題付き)徹底攻略 Microsoft Azure Administrator 教科書[AZ-104]対応

最後まで読んでいただきありがとうございました。

ヘッドウォータース

Discussion

jemiyajemiya

めっちゃわかりやすい!!AZ-104とタイトルにはあるけど、AZ-900の範囲でもありますよ!