次の方法で共有


Azureで Linux VM を実行する

Azure Backup
Azure Blob Storage
Azure Storage
Azure Virtual Machines

Azureで仮想マシン (VM) をプロビジョニングするには、ネットワークリソースやストレージ リソースなど、VM 自体以外にも追加のコンポーネントが必要です。 この記事では、Azureでセキュリティで保護された Linux VM を実行するためのベスト プラクティスについて説明します。

アーキテクチャ

Azure 内の Linux VM を示すダイアグラム

このアーキテクチャのVisio ファイルをダウンロードしてください。

Workflow

リソースグループ

リソース グループ は、関連するAzure リソースを保持する論理コンテナーです。 一般には、リソースの有効期間や管理者に基づいて、リソースをグループ化します。

同じライフサイクルを共有する密接に関連付けられたリソースを同じリソース グループに配置します。 リソース グループを使用すると、リソースをグループとしてデプロイおよび監視したり、リソース グループ別に課金コストを追跡したりできます。 セットとしてリソースを削除することもできます。これはテスト デプロイの場合に便利です。 特定のリソースの検索やその役割の理解を簡略化するために、意味のあるリソース名を割り当ててください。 詳細については、「Azure リソースのRecommended 名前付け規則を参照してください。

仮想マシン

VM は、公開済みのイメージの一覧から、または Azure Blob Storage にアップロードされたカスタム マネージド イメージや仮想ハード ディスク (VHD) ファイルからプロビジョニングできます。 Azureでは、Debian、Red Hat Enterprise Linux (RHEL)、Ubuntu など、さまざまな一般的な Linux ディストリビューションの実行がサポートされています。 詳細については、「Azure および Linuxを参照してください。

Azureには、さまざまな仮想マシン サイズが用意されています。 既存のワークロードをAzureに移動する場合は、オンプレミス サーバーに最も近い VM サイズから始めます。 次に、CPU、メモリ、およびディスクの 1 秒あたりの入出力操作 (IOPS) について、実際のワークロードのパフォーマンスを測定し、必要に応じてサイズを調整します。

一般に、内部ユーザーまたは顧客に最も近いAzureリージョンを選択します。 すべてのリージョンですべての VM サイズを使用できるわけではありません。 詳細については、「リージョン別サービス」を参照してください。 特定のリージョンで使用可能な VM サイズの一覧については、Azure CLIから次のコマンドを実行します。

az vm list-sizes --location <location>

発行された VM イメージの選択については、Linux VM イメージの検索に関するページを参照してください。

ディスク

ディスク I/O のパフォーマンスを最大限に高めるには、ソリッド ステート ドライブ (SSD) にデータを格納する Premium Storage をお勧めします。 コストは、プロビジョニングされたディスクの容量に基づきます。 また、IOPS とスループット (つまり、データ転送速度) もディスク サイズによって異なるため、ディスクをプロビジョニングする場合は、3 つの要素 (容量、IOPS、スループット) すべてを考慮してください。 Premium storageには、無料のバースト機能とワークロード パターンの理解が組み合わされ、IaaS インフラストラクチャの効果的な SKU 選択とコスト最適化戦略が提供され、過剰な過剰プロビジョニングを行わずに高パフォーマンスを実現し、未使用の容量のコストを最小限に抑えることができます。

Managed Disksストレージを処理することで、ディスク管理を簡略化します。 マネージド ディスクにはストレージ アカウントが必要ありません。 ディスクのサイズと種類を指定すると、可用性の高いリソースとしてデプロイされます。 また、Managed disksオーバー プロビジョニングを必要とせずに目的のパフォーマンスを提供し、ワークロード パターンの変動を把握し、未使用のプロビジョニング容量を最小限に抑えることで、コストの最適化も実現します。

既定では、OS ディスクは Azure Storage に格納されているマネージド ディスクであるため、ホスト コンピューターがダウンした場合でも保持されます。 代わりに、エフェメラル OS ディスクリモート Azure Storageではなく、VM ホストのローカル ストレージに OS イメージを配置します。これにより、読み取り待ち時間が短縮され、再イメージ化が高速化され、マネージド ディスク のコストが削減されます。 ただし、一時的な OS ディスク上のすべてのデータは、停止/割り当て解除、再イメージ化、またはホスト メンテナンス復旧イベントで失われ、エフェメラル OS ディスクではスナップショットやAzure Backupはサポートされません。 VM がオートメーションから完全に再デプロイできる場合にのみ、エフェメラル OS ディスクを使用します。

VM には、ホスト コンピューター上の物理ドライブに格納されている一時ディスクもあります。 一時ディスクはAzure Storageに保持されず、再起動やその他の VM ライフサイクル イベント中に削除できます。 一時ディスクは、アプリケーション固有の一時ファイルやスワップ領域など、再起動後も存続する必要のないスクラッチ データにのみ使用します。

多くの Linux イメージでは、既定ではスワップ領域は構成されません。 ワークロードでスワップが必要な場合は、OS ディスクまたはデータ ディスクではなく cloud-init を使用して一時ディスクに作成します。

アプリケーション データ用に 1 つ以上の データ ディスク を作成することをお勧めします。 データ ディスクは、Azure Storageによってサポートされる永続的なマネージド ディスクです。

作成した VHD は、フォーマットされていません。 その VM にログインしてディスクをフォーマットしてください。 Linux シェルでは、データ ディスクはシリーズの /dev/sdc/dev/sdd、およびそれ以降の文字として表示されます。 lsblk を実行すると、ディスクなどのブロック デバイスの一覧を表示できます。 データ ディスクを使用するには、パーティションとファイル システムを作成し、ディスクをマウントします。 次に例を示します。

# Create a partition.

sudo fdisk /dev/sdc     # Enter 'n' to partition, 'w' to write the change.

# Create a file system.

sudo mkfs -t ext3 /dev/sdc1

# Mount the drive.

sudo mkdir /data1
sudo mount /dev/sdc1 /data1

データ ディスクを追加すると、ディスクに論理ユニット番号 (LUN) の ID が割り当てられます。 LUN ID は必要に応じて指定できます。たとえば、ディスクを交換する際に同じ LUN ID を保持したい場合や、特定の LUN ID を検索するアプリケーションがある場合などに指定します。 ただし、ディスクごとに一意な LUN ID である必要があります。

PREMIUM STORAGE アカウントを持つ VM のディスクは SSD であるため、SSD のパフォーマンスを最適化するために I/O スケジューラを変更することをお勧めします。 一般的な推奨事項は、SSD に対して NOOP スケジューラを使用することですが、iostat などのツールを使用してワークロードのディスク I/O パフォーマンスを監視する必要があります。

VM は一時ディスクを使用して作成されます。 このディスクは、ホスト コンピューターの物理ドライブ上に格納されます。 Azure Storageに保存されておらず、再起動やその他の VM ライフサイクル イベント中に削除される可能性があります。 ページ ファイルやスワップ ファイルなどの一時的なデータにのみ、このディスクを使用してください。 Linux VM の場合、一時ディスクは /dev/disk/azure/resource-part1 であり、/mnt/resource または /mnt でマウントされます。

ネットワーク

ネットワーク コンポーネントには、次のリソースが含まれます。

  • Virtual network。 すべての VM は、サブネットにセグメント化されるvirtual networkにデプロイされます。

  • ネットワーク インターフェイス (NIC) 。 NIC を使用すると、VM はvirtual networkと通信できます。 VM に複数の NIC が必要な場合は、VM サイズごとに NIC の最大数が定義されます。

  • パブリック IP アドレス。 REMOTE DESKTOP プロトコル (RDP) を使用して VM と通信するには、パブリック IP アドレスが必要です。 パブリック IP アドレスは、動的でも静的でもかまいません。 既定では、動的になっています。

    • 変わらない固定 IP アドレスが必要な場合 (たとえば、DNS 'A' レコードを作成するか、またはセーフ リストに IP アドレスを追加する必要がある場合) は、静的 IP アドレスを予約します。
    • IP アドレスの完全修飾ドメイン名 (FQDN) を作成することもできます。 これにより、その FQDN を参照する DNS で CNAME レコードを登録できます。 詳細については、「Azure ポータルで完全修飾ドメイン名を作成するを参照してください。
  • ネットワーク セキュリティ グループ (NSG)ネットワーク セキュリティ グループは、VM へのネットワーク トラフィックを許可または拒否するために使用されます。 NSG は、サブネットまたは個々の VM インスタンスと関連付けることができます。

    • すべての NSG には、既定の規則のセットが含まれています。これには、すべての受信インターネット トラフィックをブロックする規則が含まれます。 既定のルールを削除することはできませんが、他の規則でオーバーライドすることはできます。 インターネット トラフィックを有効にするには、特定のポート (HTTP のポート 80 など) への着信トラフィックを許可するルールを作成します。 セキュア シェル (SSH) を有効にするには、TCP ポート 22 への受信トラフィックを許可する NSG 規則を追加します。
  • Azure NAT Gateway.Network Address Translation (NAT) ゲートウェイ は、プライベート サブネット内のすべてのインスタンスが完全にプライベートな状態でインターネットに送信接続できるようにします。 NAT Gateway を通過できるのは、アウトバウンド接続への応答パケットとして到着するパケットのみです。 インターネットからの未承諾の受信接続は許可されません。

  • Azure Bastion.Azure Bastion は、プライベート IP アドレス経由で VM への安全なアクセスを提供するサービス ソリューションとしてのフル マネージド プラットフォームです。 この構成では、インターネットに公開されるパブリック IP アドレスが VM に必要ないため、セキュリティ体制が向上します。 Azure Bastionは、Azure ポータルやネイティブ SSH または RDP クライアントなど、さまざまな方法を使用して、トランスポート層セキュリティ (TLS) 経由で VM に安全な RDP または SSH 接続を直接提供します。

操作

SSH。 Linux VM を作成する前に、2048 ビット RSA 公開/秘密キー ペアを生成します。 VM を作成する場合は、公開キー ファイルを使用します。 詳細については、「 Azureを参照してください。

診断 基本的な正常性メトリック、診断インフラストラクチャ ログ、ブート診断などの監視と診断を有効にします。 VM が起動不可能な状態になった場合は、起動エラーを診断するのにブート診断が役立ちます。 ログを格納するAzure Storage アカウントを作成します。 診断ログには、標準のローカル冗長ストレージ (LRS) アカウントで十分です。 詳細については、「監視と診断の有効化」を参照してください。

可用性。 VM が計画メンテナンスまたは計画外のダウンタイムの影響を受ける可能性があります。 VM の再起動ログを使用すると、VM の再起動が計画的なメンテナンスによるものかどうかを確認できます。 可用性を高めるには、可用性セットまたはリージョン内の可用性ゾーンにまたがって複数の VM をデプロイします。 これらの両方の構成により、より高度なサービス レベル アグリーメント (SLA) が提供されます。

Backups 偶発的なデータ損失から保護するには、Azure Backup サービスを使用して VM を geo 冗長ストレージにバックアップします。 Azure Backupでは、アプリケーション整合性バックアップが提供されます。 パフォーマンスに依存するワークロードや、従来のバックアップ エージェントをサポートしていない特殊な Linux ディストリビューションの場合は、 エージェントレスのマルチディスク クラッシュ整合性バックアップ 機能を使用して、アプリケーションのパフォーマンスに影響を与えずに自動バックアップ保護を有効にします。

VM の停止。 Azureでは、"停止" 状態と "割り当て解除済み" 状態が区別されます。 VM が割り当て解除されたときではなく、VM が停止状態のときに課金されます。 Azure ポータルで、Stop ボタンによって VM の割り当てが解除されます。 ログイン中に OS からシャットダウンした場合、VM は停止しますが割り当ては "解除されない" ため、引き続き課金されます。

VM の削除。 VM を削除する場合は、そのディスクを削除するか保持するかを選択できます。 つまり、データを失うことなく安全に VM を削除できます。 ただし、ディスクに対しては引き続き課金されます。 マネージド ディスクは、他のAzure リソースと同様に削除できます。 誤って削除されないようにするには、リソース ロックを使用して、リソース グループ全体をロックするか、VM などの個々のリソースをロックします。

考慮事項

これらの考慮事項は、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、セキュリティ設計レビューのチェックリストを参照してください。

Microsoft Defender for Cloud を使用して、Azure リソースのセキュリティ状態を一元的に確認します。 Defender for Cloud は、潜在的なセキュリティ上の問題を監視し、デプロイのセキュリティの正常性を包括的に示します。 Defender for Cloud は、Azure サブスクリプションごとに構成されます。 「 Azure サブスクリプションの接続で説明されているように、セキュリティ データ収集を有効にします。 データ収集を有効にすると、Defender for Cloud Standard は、そのサブスクリプションに作成されているすべての VM を自動的にスキャンします。

更新プログラムの管理。 有効になっている場合、Defender for Cloud はセキュリティ更新プログラムや緊急更新プログラムが不足しているかどうかをチェックします。

マルウェア対策。 有効な場合、Defender for Cloud は、マルウェア対策ソフトウェアがインストールされているかどうかを確認します。 Defender for Cloud を使用して、Azure ポータル内からマルウェア対策ソフトウェアをインストールすることもできます。

アクセスの制御Azureロールベースのアクセス制御 (Azure RBAC) を使用して、Azure リソースへのアクセスを制御します。 Azure RBAC を使用すると、DevOps チームのメンバーに承認ロールを割り当てることができます。 たとえば、閲覧者ロールはリソースAzure表示できますが、リソースの作成、管理、削除は行いません。 一部のアクセス許可は、Azureリソースの種類に固有です。 たとえば、仮想マシン共同作成者ロールは、VM の再起動または割り当ての解除、管理者パスワードのリセット、新しい VM の作成を行うことができます。 このアーキテクチャに役立つ可能性のあるその他の 組み込みロール には、 DevTest Labs ユーザーネットワーク共同作成者が含まれます。

注意

Azure RBAC では、VM にログインしたユーザーが実行できるアクションは制限されません。 これらのアクセス許可は、ゲスト OS のアカウントの種類によって決まります。

監査ログ。 プロビジョニング操作や他の VM イベントを確認するには、監査ログを使用します。

データの暗号化。 host で encryption を有効にして、一時ディスクやディスク キャッシュなど、VM データのエンドツーエンドの暗号化を実現します。 ホストでの暗号化は、VM ホスト インフラストラクチャでの暗号化を処理し、ゲスト ベースの暗号化とは異なり、VM CPU リソースを消費しません。 顧客管理キーは、永続的な OS ディスクとデータ ディスクの Azure Key Vault と共に使用できます。 一時ディスクとエフェメラル OS ディスクは、プラットフォームマネージド キーで暗号化されます。 VM をプロビジョニングする前に、選択した VM サイズがホストでの暗号化をサポートしていることを確認します。

コストの最適化

コストの最適化は、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。

使用法やワークロードに応じて、VM サイズにはさまざまなオプションがあります。 この範囲には、machine learning用に最適化された最新の GPU VM に対する Bs シリーズの最も経済的なオプションが含まれています。 使用可能なオプションの詳細については、「Azure Linux VM の価格を参照してください。

予測可能なワークロードの場合は、Azure ReservationsAzure コンピューティングの節約計画を 1 年契約または 3 年契約で使用し、従量課金制の料金を大幅に削減します。 完了時間またはリソース消費の時間が予測できないワークロードの場合は、従量課金制オプションを検討してください。

Azureスポット VM を使用して、中断可能なワークロードを実行し、事前に定義された期間内または SLA 内で完了する必要はありません。 Azureは、使用可能な容量がある場合にスポット VM をデプロイし、容量を戻す必要があるときに削除します。 スポット仮想マシンに関連するコストは著しく低いです。 次のワークロードには、スポット VM を検討してください。

  • ハイ パフォーマンス コンピューティングのシナリオ、バッチ処理ジョブ、またはビジュアルなレンダリング アプリケーション。
  • 継続的インテグレーションおよび継続的デリバリー ワークロードを含むテスト環境。
  • 大規模ステートレスアプリケーション。

Azure料金計算ツールを使用してコストを見積もります。

詳細については、Microsoft Azure Well-Architected Framework のコストに関するセクションを参照してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、運用環境で実行し続ける運用プロセスを対象としています。 詳細については、「 オペレーショナル エクセレンスの設計レビュー チェックリスト」を参照してください。

Azure リソースとその依存関係をプロビジョニングするために、1 つの Azure Resource Manager テンプレート を使用します。 すべてのリソースは同じvirtual networkにあるため、同じ基本的なワークロードで分離されます。 それにより、ワークロード固有のリソースをチームに容易に関連付けられるので、DevOps チームはこれらのリソースのあらゆる側面を個別に管理できます。 この分離により、DevOps チームは、継続的インテグレーションと継続的デリバリー (CI/CD) を実行できます。

また、異なる Azure Resource Manager テンプレートを使用し、Azure DevOps Services と統合して、必要なときにのみシナリオやロード テスト環境などの運用環境をレプリケートしてコストを節約するなど、さまざまな環境を数分でプロビジョニングできます。

Azure Monitorを使用してインフラストラクチャのパフォーマンスを分析および最適化し、仮想マシンにログインせずにネットワークの問題を監視および診断することを検討してください。

次のステップ

  • Azure