Azure Virtual Machines は、Azure プラットフォームで仮想マシン (VM) を作成して実行するために使用できるコンピューティング サービスの一種です。 さまざまな課金モデルを使用して、さまざまな SKU、オペレーティング システム、構成に柔軟性を提供します。
この記事では、アーキテクトとして、 コンピューティング デシジョン ツリー を確認し、ワークロードのコンピューティング サービスとして Virtual Machines を選択していることを前提としています。 この記事のガイダンスでは、Well-Architected Framework の柱の原則にマップされるアーキテクチャに関する推奨事項を示します。
重要
このガイドの使用方法
各セクションには、設計チェックリスト があり、テクノロジ スコープにローカライズされた設計戦略と共に、関心のあるアーキテクチャ領域が示されています。
また、これらの戦略の具体化に役立つテクノロジ機能に関する推奨事項も含まれています。 推奨事項は、Virtual Machines とその依存関係で使用できるすべての構成の完全な一覧を表すわけではありません。 代わりに、設計パースペクティブにマップされた主要な推奨事項が一覧表示されます。 推奨事項を使用して概念実証を構築するか、既存の環境を最適化します。
主要な推奨事項を示す基本アーキテクチャ: 仮想マシンのベースライン アーキテクチャ。
技術の範囲
このレビューでは、次の Azure リソースに関する相互に関連する決定に焦点を当てます。
ディスクは VM ベースのアーキテクチャにとって重要な依存関係ですが、この記事では取り上げません。 詳細については、「 Azure Disk Storage のアーキテクチャのベスト プラクティス」を参照してください。
信頼性
信頼性の柱の目的は、十分な回復性を構築 し、障害から迅速に回復する機能をして継続的な機能を提供することです。
信頼性設計の原則、個々のコンポーネント、システム フロー、およびシステム全体に適用される高度な設計戦略を提供します。
設計チェックリスト
信頼性 の設計レビュー チェックリストに基づいて、設計戦略を開始します。 VM とその依存関係の SKU と機能を念頭に置いて、ビジネス要件との関連性を判断します。 必要に応じて、より多くのアプローチを含むように戦略を拡張します。
設計上の制限が発生する可能性がある仮想マシンのクォータと制限を確認します。 VM には特定の制限とクォータがあり、VM またはリージョンの種類によって異なります。 サブスクリプションあたりの VM の数や VM あたりのコア数など、サブスクリプションの制限がある場合があります。 他のワークロードがサブスクリプションを共有している場合、データを使用する機能が低下する可能性があります。 VM、仮想マシン スケール セット、マネージド ディスクの制限を確認します。
VM と ネットワークおよびストレージ コンポーネントとの対話を分析して、障害点を最小限に抑えるために障害モード分析を実行します。 一時的なオペレーティング システム (OS) ディスクなどの構成を選択して、ディスク アクセスをローカライズし、ネットワーク ホップを回避します。 複数の VM にネットワーク トラフィックを分散することで自己保持を強化するロード バランサーを追加すると、可用性と信頼性が向上します。
Azure サービス レベル アグリーメント (SLA) に基づいて複合サービス レベル目標 (SLO) を計算します。 非現実的な期待や潜在的な問題を回避するために、SLO が Azure SLA よりも高くないことを確認します。
依存関係によって生じる複雑さに注意してください。 たとえば、仮想ネットワークやネットワーク インターフェイス カード (NIC) などの一部の依存関係には、独自の SLA がありません。 関連付けられているデータ ディスクなどの他の依存関係には、VM SLA と統合される SLA があります。 これらのバリエーションは VM のパフォーマンスと信頼性に影響を与える可能性があるため、考慮する必要があります。
ディスクやネットワーク コンポーネントなどのコンポーネント上の VM の重要な依存関係を考慮します。 これらの関係を理解していれば、信頼性に影響を与える重要なフローを特定できます。
状態の分離を確立します。 ワークロード データは、OS ディスクとの干渉を防ぐために、別のデータ ディスク上に配置する必要があります。 VM で障害が発生した場合は、同じデータ ディスクを使用して新しい OS ディスクを作成できます。これにより、回復性と障害の分離が保証されます。 詳細については、「 エフェメラル OS ディスク」を参照してください。
VM とその依存関係をゾーン間で冗長にします。 VM で障害が発生した場合、冗長性のためにワークロードは引き続き機能する必要があります。 冗長性の選択肢に依存関係を含めます。 たとえば、ディスクで使用できる組み込みの冗長性オプションを使用します。 ゾーン冗長 IP アドレスを使用して、データの可用性と高いアップタイムを確保します。
サービス レベルの低下を防ぎ、障害を回避するために、スケールアップとスケールアウトの準備をしてください。 仮想マシン スケール セット には、必要に応じて新しいインスタンスを作成し、複数の VM と可用性ゾーンに負荷を分散する自動スケール機能があります。
自動回復オプションを確認します。 Azure では、VM の正常性低下の監視と自己復旧機能がサポートされています。 たとえば、スケール セットは インスタンスの自動修復を提供します。 より高度なシナリオでは、self-healing には、Azure Site Recovery の使用、フェールオーバーするパッシブ スタンバイ、またはコードとしてのインフラストラクチャ (IaC) からの再デプロイが含まれます。 選択する方法は、ビジネス要件と組織の運用に合わせる必要があります。 詳細については、「 VM サービスの中断」を参照してください。
仮想マシンとその依存関係を最適化します。 VM の予想される作業を理解して、VM が過大な負荷を受けず、最大負荷を処理できることを確認します。 障害を軽減するための追加の容量を用意します。
包括的なディザスター リカバリー計画を作成します。 災害への備えには、包括的な計画を作成し、復旧のためのテクノロジを決定する必要があります。
依存関係とステートフル コンポーネント (アタッチされたストレージなど) は、復旧を複雑にする可能性があります。 ディスクがダウンした場合、その障害は VM の機能に影響します。 復旧計画にこれらの依存関係の明確なプロセスを含めます。
厳密な操作を実行します。 信頼性設計の選択は、監視の原則、運用環境での回復性テスト、自動化されたアプリケーション VM のパッチとアップグレード、デプロイの一貫性に基づく効果的な操作によってサポートされる必要があります。 運用ガイダンスについては、「オペレーショナル エクセレンス 参照してください。
推奨事項
勧告 | メリット |
---|---|
(スケール セット)柔軟なオーケストレーション モードで仮想マシン スケール セットを使用して、VM をデプロイします。 | リージョンまたは可用性ゾーン内の障害ドメイン間で VM を分散する高可用性の保証を利用して、スケーリングを行うアプリケーションの将来性を確保します。 |
(VM)VM にインスタンスの正常性状態を出力する ヒート エンドポイントを実装 します。 (スケール セット)推奨される修復操作を指定して、スケール セットで自動修復を 有効にします 。 VM の状態が変化した場合に自動修復が一時停止する期間を設定することを検討してください。 |
インスタンスが異常と見なされた場合でも、可用性を維持します。 自動修復では、障害のあるインスタンスを置き換えることで復旧が開始されます。 時間枠を設定すると、不注意や早期の修復操作を防ぐことができます。 |
(スケール セット)スケール セットで オーバープロビジョニングを有効にします 。 | オーバープロビジョニングではデプロイ時間が短縮され、追加の VM には課金されないため、コスト上のメリットがあります。 |
(スケール セット) スタンバイ プールを使用してインスタンスを事前割り当てします。 | スタンバイ プール インスタンスは休止状態のままですが、障害が発生した場合はワークロードを引き継ぐ準備ができています。 この機能により、システムの信頼性が向上します。 |
(スケール セット)フレキシブル オーケストレーションを使用して 、VM インスタンスを できるだけ多くの障害ドメインに分散できるようにします。 | このオプションは、障害ドメインを分離します。 メンテナンス期間中、1 つの障害ドメインが更新されると、VM インスタンスは他の障害ドメインで使用できます。 |
(スケール セット)スケール セット上 の可用性ゾーン間でデプロイ します。 各ゾーンに少なくとも 2 つのインスタンスを設定します。 ゾーンの分散により 、インスタンスがゾーン間で均等に分散されます。 |
VM インスタンスは、ローカル障害に対してトレラントな各 Azure リージョン内の物理的に別々の場所にプロビジョニングされます。 リソースの可用性によっては、ゾーン間でインスタンスの数が不均等になる可能性があることに注意してください。 ゾーン分散では、1 つのゾーンがダウンしている場合に、他のゾーンに十分なインスタンスがあることを確認することで、可用性がサポートされます。 各ゾーンの 2 つのインスタンスは、アップグレード中にバッファーを提供します。 |
(スケール セット)アップグレードのコストへの影響を制御しながらサービスのアップタイムを強化するには、 MaxSurge を有効にします。 | 新しいインスタンスは、最新のスケール モデルを使用してバッチで作成されます。 新しいインスタンスが正常な状態になった後、古いインスタンスはバッチで削除されます。 このプロセスは、すべてのインスタンスが更新されるまで続行され、更新中にダウンタイムが発生しません。 |
(VM) 容量予約機能を利用します。 | 容量は使用のために予約されており、該当する SLA のスコープ内で利用できます。 容量予約は不要になった時点で削除でき、課金は従量課金ベースです。 |
安全
セキュリティの柱の目的は、ワークロードに対して機密性、整合性、可用性を保証することです。
セキュリティ設計原則は、Virtual Machines の技術的な設計にアプローチを適用することで、これらの目標を達成するための高度な設計戦略を提供します。
設計チェックリスト
セキュリティ の 設計レビュー チェックリストに基づいて設計戦略を開始し、セキュリティ体制を改善するための脆弱性と制御を特定します。 必要に応じて、より多くのアプローチを含むように戦略を拡張します。
Linux および Windows VM と仮想マシン スケール セットのセキュリティ ベースラインを確認します。
ベースライン テクノロジの選択の一環として、ワークロードをサポートする VM SKU のセキュリティ機能を検討してください。
タイムリーかつ自動化されたセキュリティ パッチ適用とアップグレードを確保します。 適切に定義されたプロセスを使用して、更新プログラムが自動的にロールアウトおよび検証されていることを確認します。 Azure Automation などのソリューションを使用して、OS の更新プログラムを管理し、重要な更新を行うことでセキュリティ コンプライアンスを維持します。
状態を保持する VM を特定します。 組織が提供する秘密度ラベルに従ってデータが分類されていることを確認します。 適切な保存レベルや転送中の暗号化などのセキュリティコントロールを使用してデータを保護します。 機密性の高い要件がある場合は、二重暗号化や Azure コンフィデンシャル コンピューティングなどのセキュリティの高いコントロールを使用して、使用中のデータを保護することを検討してください。
ネットワーク境界とアクセス制御を設定して、VM とスケール セットにセグメント化を提供します。 同じライフサイクルを共有するリソース グループに VM を配置します。
VM に 到達しようとする ID と、他のリソースに到達する VM にアクセス制御を適用します。 認証と承認のニーズに Microsoft Entra ID を使用します。 VM とその依存関係 (シークレットなど) に対して強力なパスワード、多要素認証、ロールベースのアクセス制御 (RBAC) を配置して、許可された ID がロールに期待される操作のみを実行できるようにします。
Microsoft Entra 条件付きアクセスを使用して、条件に基づいてリソース アクセスを制限します。 期間と必要なアクセス許可の最小セットに基づいて、条件付きポリシーを定義します。
ネットワーク制御を使用して、イングレス トラフィックとエグレス トラフィックを制限します。 Azure Virtual Network で VM とスケール セットを分離し、トラフィックをフィルター処理するネットワーク セキュリティ グループを定義します。 分散型サービス拒否 (DDoS) 攻撃から保護します。 ロード バランサーとファイアウォール規則を使用して、悪意のあるトラフィックやデータ流出攻撃から保護します。
Azure Bastion を使用して、運用アクセスのために VM へのより安全な接続を提供します。
VM からサービスとしてのプラットフォーム (PaaS) ソリューションとの間の通信は、プライベート エンドポイント経由である必要があります。
OS イメージを強化し、未使用のコンポーネントを削除することで、攻撃対象領域を減らします。 サイズの小さいイメージを使用し、ワークロードの実行に必要ではないバイナリを削除します。 必要のない既定のアカウントやポートなどの機能を削除して、VM 構成を強化します。
転送中のデータを保護するために必要な証明書などのシークレットを保護します。 Windows または Linux 用の Azure Key Vault 拡張機能を使用して、キー コンテナーに格納されている証明書を自動的に更新することを検討してください。 証明書の変更が検出されると、拡張機能は対応する証明書を取得してインストールします。
脅威の検出。 VM の脅威と構成の誤りを監視します。 Defender for Servers を使用して VM と OS の変更をキャプチャし、アクセス、新しいアカウント、アクセス許可の変更の監査証跡を維持します。
脅威の防止。 ファイアウォール、ウイルス対策ソフトウェア、侵入検出システムなどのセキュリティ コントロールを実装することで、マルウェア攻撃や悪意のあるアクターから保護します。 信頼された実行環境 (TEE) が必要かどうかを判断します。
推奨事項
勧告 | メリット |
---|---|
(スケール セット) マネージド ID をスケール セットに割り当てます。 スケール セット内のすべての VM は、指定された VM プロファイルを介して同じ ID を取得します。 (VM) また、マネージド ID は、作成時に個々の VM に割り当てて から、必要に応じてスケール セットに追加することもできます。 |
VM は、他のリソースと通信するときに、信頼境界を越えます。 スケール セットと VM は、通信が許可される前に ID を認証する必要があります。 Microsoft Entra ID は、マネージド ID を使用してその認証を処理します。 |
(スケール セット) セキュリティ機能を備えている VM SKU を選択します。 たとえば、 一部の SKU では BitLocker 暗号化がサポートされ、 コンフィデンシャル コンピューティング では使用中のデータの暗号化が提供されます。 機能を確認して制限事項を理解します。 |
Azure が提供する機能は、多くのテナントでキャプチャされ、カスタム コントロールよりも優れたリソースを保護できるシグナルに基づいています。 ポリシーを使用して、これらのコントロールを適用することもできます。 |
(VM、スケール セット)プロビジョニングされたリソース に組織が推奨するタグを適用 します。 | タグ付け は、リソースをセグメント化して整理する一般的な方法であり、インシデント管理中に重要になる場合があります。 詳細については、「 名前付けとタグ付けの目的」を参照してください。 |
(VM、スケール セット)VM 構成で有効にするセキュリティ機能を使用してセキュリティ プロファイルを設定 します。 たとえば、プロファイルで ホストでの暗号化 を指定すると、VM ホストに格納されているデータは保存時に暗号化され、フローはストレージ サービスに暗号化されます。 |
セキュリティ プロファイルの機能は、VM の作成時に自動的に有効になります。 詳細については、「 仮想マシン スケール セットの Azure セキュリティ ベースライン」を参照してください。 |
(VM)VM のネットワーク プロファイルの セキュリティで保護されたネットワーク オプションを選択 します。 パブリック IP アドレスを VM に直接関連付けず、IP 転送を有効にしないでください。 すべての仮想ネットワーク インターフェイスに、ネットワーク セキュリティ グループが関連付けられていることを確認します。 |
ネットワーク プロファイルでセグメント化制御を設定できます。 攻撃者はパブリック IP アドレスをスキャンします。 このアクティビティにより、VM は脅威に対して脆弱になります。 |
(VM)VM のストレージ プロファイルのセキュリティで保護されたストレージ オプションを選択 します。 既定では、ディスク暗号化と保存データ暗号化を有効にします。 VM ディスクへのパブリック ネットワーク アクセスを無効にします。 |
パブリック ネットワーク アクセスを無効にすると、データとリソースへの不正アクセスを防ぐことができます。 |
(VM、スケール セット)脅威から保護する 拡張機能を VM に含めます 。 例えば - Windows および Linux 用の Key Vault 拡張機能 - Microsoft Entra ID 認証 - Azure Cloud Services と Virtual Machines 用の Microsoft マルウェア対策 - Windows および Linux 用の Azure Disk Encryption 拡張機能。 |
拡張機能は、VM との間のアクセスを保護する適切なソフトウェアを使用して VM をブートストラップするために使用されます。 Microsoft が提供する拡張機能は、進化するセキュリティ標準に対応するために頻繁に更新されます。 |
コストの最適化
コストの最適化では、支出パターンの検出 、重要な領域への投資の優先順位付け、ビジネス要件を満たしながら組織の予算を満たすために他の での最適化に重点を置いています。
コスト最適化設計原則は、仮想マシンとその環境に関連する技術的設計において、これらの目標を達成し、必要に応じてトレードオフを行う高度な設計戦略を提供します。
設計チェックリスト
投資のコスト最適化 の 設計レビュー チェックリストに基づいて、設計戦略を開始します。 ワークロードの設計を、そのワークロードに割り当てられた予算に合わせて微調整します。 設計では、適切な Azure 機能を使用し、投資を監視し、時間の経過と同時に最適化する機会を見つける必要があります。
現実的なコストを見積もります。 料金計算ツールを使用して、VM のコストを見積もります。 VM セレクターを使用して、ワークロードに最適な VM を特定します。 詳細については、Linux と Windows の価格に関する記事を参照してください。
コスト ガードレールを実装する。 ガバナンス ポリシーを使用して、リソースの種類、構成、場所を制限します。 RBAC を使用して、オーバーペンドにつながる可能性があるアクションをブロックします。
適切なリソースを選択します。 VM プランのサイズと SKU の選択は、全体的なコストに直接影響します。 ワークロードの特性に基づいて VM を選択します。 ワークロードはCPU負荷が高いですか、それとも割り込み可能なプロセスを実行しますか? 各 SKU には、全体的なコストに影響するディスク オプションが関連付けられています。
依存リソースに適した機能を選択します。 予約容量を持つ Azure Backup ストレージを使用して、コンテナー Standard レベルのバックアップ ストレージ コストを節約します。 1 年または 3 年間の予約にコミットすると、割引が提供されます。
Azure Storage のアーカイブ層は、ほとんどアクセスされない BLOB データを格納するために最適化されたオフライン層です。 アーカイブ層では、ストレージ コストは最も低くなりますが、ホットおよびクールオンラインレベルと比較して、データ取得コストと待機時間は高くなります。
ゾーン冗長サービスを使用して可用性の複雑さを軽減しながら、VM の ゾーン間ディザスター リカバリー を使用してサイト障害から復旧することを検討してください。 運用の複雑さが軽減されることで、コスト上のメリットが得られる場合があります。
適切な課金モデルを選択します。 コンピューティング用のコミットメント ベースのモデルが、ワークロードのビジネス要件に基づいてコストを最適化するかどうかを評価します。 次の Azure オプションを検討してください。
-
Azure の予約: 使用量ベースの価格と比較してコストを削減するために、予測可能なワークロードを前払いします。
重要
安定した使用状況を持つワークロードの Azure コストを削減するために予約インスタンスを購入します。 使用量を管理して、使用しているリソースよりも多くのリソースに対して支払いを行らないようにします。 予約インスタンスをシンプルにし、管理オーバーヘッドを低く抑えてコストを削減します。
- 節約計画: 1 年または 3 年間、コンピューティング サービスに一定の時間単位の金額を費やすことをコミットすると、このプランによってコストが削減されます。
- Azure ハイブリッド特典: オンプレミスの VM を Azure に移行するときに節約できます。
-
Azure の予約: 使用量ベースの価格と比較してコストを削減するために、予測可能なワークロードを前払いします。
使用状況を監視する。 使用パターンを継続的に監視し、未使用または使用率の低い VM を検出します。 これらのインスタンスの場合は、VM インスタンスが使用されていないときにシャットダウンします。 監視は、オペレーショナル エクセレンスの主要なアプローチです。 詳細については、「 オペレーショナル エクセレンス」の推奨事項を参照してください。
最適化する方法を探します。 一部の戦略には、既存のシステム内のリソースを増やすか、スケールアップするか、そのシステムのインスタンスを追加するか、スケールアウトするかの最もコスト効率の高いアプローチの選択が含まれます。要求を他のリソースに分散することでオフロードすることも、優先順位キュー、ゲートウェイ オフロード、バッファリング、レート制限を実装して需要を減らすことができます。 詳細については、「 パフォーマンス効率」の推奨事項を参照してください。
推奨事項
勧告 | メリット |
---|---|
(VM、スケール セット) 適切な VM プランのサイズと SKU を選択します。 ワークロードに最適な VM サイズ を特定します。 VM セレクターを使用して、ワークロードに最適な VM を特定します。 Windows と Linux の価格に関する記事を参照してください。 一部の中断を許容できる高度な並列バッチ処理ジョブなどのワークロードの場合は、 Azure Spot Virtual Machines の使用を検討してください。 スポット仮想マシンは、大規模なソリューションの実験、開発、テストに適しています。 |
SKU は、提供されている機能に従って価格が設定されます。 高度な機能が必要ない場合は、SKU を使いすぎないでください。 スポット仮想マシンでは、Azure の余分な容量を低コストで利用できます。 |
(スケール セット) 通常の VM とスポット仮想マシンを混在させます。 柔軟なオーケストレーションを使用すると、指定した割合に基づいて スポット仮想マシンを分散 できます。 |
スポット仮想マシンの大幅な割引を適用することで、コンピューティング インフラストラクチャのコストを削減します。 |
(スケール セット) 需要が減少したときに VM インスタンスの数を減らします。 条件に基づいてスケールイン ポリシーを設定します。 |
リソースが使用されていないときにスケールインすると、スケール セットで実行される VM の数が減り、コストが節約されます。 |
(VM)時間外に VM を停止します。Azure Automation の開始/停止機能を使用し、ビジネス ニーズに応じて構成できます。 | 開始/停止機能は、アイドル状態のインスタンス コストに大きく影響する可能性がある低コストの自動化オプションです。 |
(VM)Azure Boost を使用して CPU リソースを解放します。 | バックエンド仮想化プロセスをオフロードすると、ゲスト仮想マシンの CPU リソースが解放されます。 この最適化により、パフォーマンスが向上します。 Azure Boost は特定の VM でのみ使用できるため、 Azure Boost が有効になっている VM サイズも選択してください。 |
(VM、スケール セット) Azure ハイブリッド特典を使用して、ライセンス モビリティを活用します。 VM には、オンプレミスの Windows Server OS ライセンス を Azure に持ち込むためのライセンス オプションがあります。 Azure ハイブリッド特典を使用すると、特定の Linux サブスクリプションを Azure に持ち込むこともできます。 |
クラウドの利点を得ながら、オンプレミスのライセンスを最大限に活用できます。 |
オペレーショナル エクセレンス
オペレーショナル エクセレンスは主に、開発プラクティス、可観測性、リリース管理の手順に重点を置いています。
オペレーショナル エクセレンス設計原則、ワークロードの運用要件に対してこれらの目標を達成するための高度な設計戦略を提供します。
設計チェックリスト
Virtual Machines とスケール セットに関連する監視、テスト、デプロイのプロセスを定義するための オペレーショナル エクセレンスの設計レビュー チェックリスト に基づいて、設計戦略を開始します。
VM インスタンスを監視します。 VM インスタンスからログとメトリックを収集して、リソースの使用状況を監視し、インスタンスの正常性を測定します。 一般的な メトリック には、CPU 使用率、要求の数、入出力 (I/O) 待機時間などがあります。 Azure Monitor アラート を設定して、問題に関する通知を受け取り、環境内の構成の変更を検出します。
VM とその依存関係の正常性を監視します。
- 監視コンポーネントをデプロイして、VM、ゲスト OS、ブート診断データの包括的なビューを提供するログとメトリックを収集します。 仮想マシン スケール セットはテレメトリをロールアップします。これにより、個々の VM レベルまたは集計として正常性メトリックを表示できます。 Azure Monitor を使用して、各 VM のこのデータを表示するか、複数の VM に集計します。 詳細については、「 エージェントの監視に関する推奨事項」を参照してください。
- VM の正常性状態を確認するネットワーク コンポーネントを利用します。 たとえば、Azure Load Balancer は VM に ping を実行して異常な VM を検出し、それに応じてトラフィックを再ルーティングします。
- Azure Monitor アラート ルールを設定します。 監視データの重要な条件を特定して、問題がシステムに影響を与える前に特定して対処します。
定期的な操作の一部として、定期的なシステム修正プログラムを含むメンテナンス プランを作成します。 即時パッチ 適用を可能にする緊急プロセスを含めます。 修正プログラムの適用を管理したり、タスクを部分的に Azure に委任したりするためのカスタム プロセスを作成できます。 Azure には、個々の VM メンテナンス用の機能が用意されています。 メンテナンス期間を設定して、更新中の中断を最小限に抑えることができます。 プラットフォームの更新中は、障害ドメインに関する考慮事項が回復性の鍵となります。 ゾーンに少なくとも 2 つのインスタンスをデプロイすることをお勧めします。 ゾーン内の障害ドメインは一度に 1 つだけ更新されるため、ゾーンごとに 2 つの VM で各ゾーンに少なくとも 1 つの VM が保証されます。 そのため、3 つのゾーンについて、少なくとも 6 つのインスタンスをプロビジョニングします。
ブートストラップ、スクリプトの実行、VM の構成のプロセスを自動化します。 拡張機能またはカスタム スクリプトを使用してプロセスを自動化できます。 次のオプションをお勧めします。
Key Vault VM 拡張機能は、キー コンテナーに格納されている証明書を自動的に更新します。
Windows および Linux 用 の Azure カスタム スクリプト拡張機能 は、Virtual Machines でスクリプトをダウンロードして実行します。 この拡張機能は、デプロイ後の構成、ソフトウェアのインストール、その他の構成タスクや管理タスクに使用します。
cloud-init を使用して、Linux ベースの VM のスタートアップ環境を設定します。
自動更新をインストールするためのプロセスがあります。 重要なパッチとセキュリティ パッチをタイムリーにロールアウトするには、 VM ゲストの自動 修正プログラムの適用を使用することを検討してください。 Azure Update Manager を使用して、Azure の Windows および Linux VM の OS 更新プログラムを管理します。
運用環境と密接に一致するテスト環境を構築し、更新プログラムと変更を運用環境にデプロイする前にテストします。 セキュリティ更新プログラム、パフォーマンス ベースライン、信頼性エラーをテストするプロセスを配置します。 Azure Chaos Studio の障害ライブラリを利用して、エラー状態を挿入してシミュレートします。 詳細については、Azure Chaos Studio の障害およびアクション ライブラリ を参照してください。
クォータを管理します。 ワークロードに必要なクォータのレベルを計画し、ワークロードの進化に合わせてそのレベルを定期的に確認します。 クォータを増減する必要がある場合は、 それらの変更を早期に要求してください。
推奨事項
勧告 | メリット |
---|---|
(スケール セット)フレキシブル オーケストレーション モードの仮想マシン スケール セットは、ワークロードのデプロイと管理を簡素化するのに役立ちます。 たとえば、自動修復を使用して自己復旧を簡単に管理できます。 | 柔軟なオーケストレーションでは、VM インスタンスを大規模に管理できます。 個々の VM を渡す場合、運用上のオーバーヘッドが増加します。 たとえば、VM インスタンスを削除する場合は、VM に関連付けられているディスクと NIC を削除または保持することができます。 VM インスタンスは、更新操作によってサービスが中断されないように、複数の障害ドメインに分散できます。 フレキシブル オーケストレーション インスタンスを管理するときは、すべての標準 VM API を使用できます。 Linux と Windows の両方の VM を同じ柔軟なスケール セットに配置できるため、異種ワークロードの管理が簡素化されます。 |
(スケール セット)フレキシブル オーケストレーション モードで仮想マシン スケール セットに対して 1 つのインスタンス VM をアタッチまたはデタッチすると、インフラストラクチャを再デプロイすることなく、運用上のニーズに柔軟に対応できます。 | VM をアタッチすると、既存の VM を VMSS Flex の管理下に持ち込み、更新、スケーリング、監視を一元的に制御できます。 VMSS Flex から VM をデタッチすると、残りのスケール セットを中断することなく、トラブルシューティングや特別な構成のために VM を分離できます。 |
(スケール セット)アップグレード ポリシーを設定して、VM を最新の状態に保ちます。 ローリング アップグレードをお勧めします。 ただし、細かい制御が必要な場合は、手動でアップグレードすることを選択します。 フレキシブル オーケストレーションの場合は、 Azure Update Manager を使用できます。 |
アップグレードの主な理由はセキュリティです。 インスタンスのセキュリティ保証は、時間の経過と同時に減衰しないようにする必要があります。 ローリング アップグレードはバッチで実行されます。 この方法では、すべてのインスタンスが同時にダウンしないようにします。 |
(VM、スケール セット)プロファイルでアプリケーションを定義して、 Azure コンピューティング ギャラリー から VM アプリケーションを自動的にデプロイ します。 | スケール セット内の VM が作成され、指定されたアプリがプレインストールされるため、管理が容易になります。 |
ブートストラップの一部として、事前構築済みのソフトウェア コンポーネントを拡張機能としてインストールします。 Azure では、VM のユーティリティ アプリケーションの構成、監視、セキュリティ保護、および提供に使用できる多くの拡張機能がサポートされています。 拡張機能の自動アップグレードを有効にします。 |
拡張機能を使用すると、各 VM にソフトウェアを手動でインストール、構成、またはアップグレードしなくても、大規模なソフトウェアインストールを簡略化できます。 |
(VM、スケール セット)VM インスタンス の正常性を監視して測定 します。 VM に Monitor エージェント 拡張機能をデプロイして、OS 固有のデータ収集規則を使用してゲスト OS から監視 データを収集します。 VM 分析情報を有効にして、正常性とパフォーマンスを監視し、収集されたデータの傾向を表示します。 ブート診断を使用して、VM の起動時に情報を取得します。 ブート診断では、ブートエラーも診断します。 |
データの監視はインシデント解決の中核です。 包括的な監視スタックは、VM のパフォーマンスとその正常性に関する情報を提供します。 インスタンスを継続的に監視することで、パフォーマンスの過負荷や信頼性の問題などのエラーに対する準備を整えたり、回避したりできます。 |
パフォーマンス効率
パフォーマンス効率とは、容量の管理により、負荷が増加してもユーザー エクスペリエンスを維持することです。 この戦略には、リソースのスケーリング、潜在的なボトルネックの特定と最適化、ピーク パフォーマンスの最適化が含まれます。
パフォーマンス効率設計の原則、予想される使用に対してこれらの容量目標を達成するための高度な設計戦略を提供します。
設計チェックリスト
パフォーマンス効率 の設計レビュー チェックリストに基づいて、設計戦略を開始します。 仮想マシンとスケール セットの主要業績評価指標に基づくベースラインを定義します。
パフォーマンス目標を定義します。 応答時間、CPU 使用率、メモリ使用率、ワークロード メトリック (1 秒あたりのトランザクション数、同時ユーザー数、可用性と正常性など) としてパフォーマンス インジケーターを追跡および測定する VM メトリックを特定します。
容量計画における VM、スケール セット、ディスク構成のパフォーマンス プロファイルを考慮します。 SKU ごとにメモリと CPU のプロファイルが異なり、ワークロードの種類によって動作が異なります。 パイロットと概念実証を実施して、特定のワークロードでのパフォーマンスの動作を理解します。
VM のパフォーマンスチューニング。 ワークロードで必要に応じて、パフォーマンスの最適化と機能の強化を活用します。 たとえば、高パフォーマンスのユース ケースや高速ネットワークにはローカルに接続された不揮発性メモリ Express (NVMe) を使用し、パフォーマンスとスケーラビリティを向上させるには Premium SSD v2 を使用します。
依存サービスを考慮します。 VM と対話するワークロードの依存関係 (キャッシュ、ネットワーク トラフィック、コンテンツ配信ネットワークなど) は、パフォーマンスに影響を与える可能性があります。 また、ゾーンやリージョンなどの地理的分散を検討します。これによって待機時間が増加する可能性があります。
パフォーマンス データを収集します。 オペレーショナル エクセレンスのベスト プラクティスに従って監視し、適切な拡張機能をデプロイして、パフォーマンス インジケーターに対して追跡するメトリックを表示します。
近接通信配置グループ。 VM が物理的に互いに近い場所に配置されるように、待機時間が短いワークロードでは 近接通信配置グループ を使用します。
推奨事項
勧告 | メリット |
---|---|
(VM、スケール セット)容量計画に合わせて VM の SKU を選択 します。 不適切な SKU を除外できるように、コアの数、メモリ、ストレージ、ネットワーク帯域幅など、ワークロードの要件をよく理解してください。 |
VM の権利化は、ワークロードのパフォーマンスに大きく影響する基本的な決定です。 適切な VM のセットがないと、パフォーマンスの問題が発生し、不要なコストが発生する可能性があります。 |
(VM、スケール セット) 近接配置グループに待機時間に敏感なワークロード VM をデプロイします。 | 近接通信配置グループは、Azure コンピューティング リソース間の物理的な距離を減らし、パフォーマンスを向上させ、スタンドアロン VM、複数の可用性セット内の VM、または複数のスケール セット内の VM 間のネットワーク待ち時間を短縮できます。 |
(VM) 高速ネットワークを有効にすることを検討してください。 | これにより、VM への単一ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワーク パフォーマンスが大幅に向上します。 |
(VM、スケール セット) 需要 に基づいてスケール セット内の VM インスタンスの数を増減するように自動スケール ルールを設定します。 | アプリケーションの需要が増加すると、スケール セット内の VM インスタンスに対する負荷が増加します。 自動スケール ルールにより、需要を満たすのに十分なリソースが確保されます。 |
Azure ポリシー
Azure には、Virtual Machines とその依存関係に関連する広範な組み込みポリシー セットが用意されています。 上記の推奨事項の一部は、Azure Policy を使用して監査できます。 たとえば、次のことを確認できます。
暗号化はホスト レベルで有効になります。 VM データのセキュリティを強化するために、ホスト レベルで暗号化が有効になっていることを確認します。
マルウェア対策拡張機能が展開されます。 マルウェア対策拡張機能が、Windows Server を実行する VM に展開され、自動更新用に設定されていることを確認して、継続的な保護を確保します。
OS イメージの自動修正プログラムが有効になっています。 スケール セットで OS イメージの自動修正プログラムが有効になっていることを確認して、VM がセキュリティ パッチで更新されていることを確認します。
承認済みの VM 拡張機能のみがインストールされます。 承認済みの拡張機能のみが VM にインストールされていることを確認します。 このアプローチは、セキュリティの脆弱性のリスクを最小限に抑えるのに役立ちます。
監視エージェントと依存関係エージェントが有効になっています。 監視と依存関係の管理を容易にするために、すべての新しい VM で監視エージェントと依存関係エージェントが有効になっていることを確認します。
許可されている VM SKU のみがデプロイされます。 承認された VM SKU のみがデプロイされていることを確認します。 このポリシーにより、コストの制約とリソース要件への準拠が保証されます。
プライベート エンドポイントは、ディスク アクセスに使用されます。 プライベート エンドポイントがディスク リソースに安全にアクセスするために使用されていることを確認します。 このアプローチは、パブリック ネットワークへの露出を防ぐのに役立ちます。
脆弱性検出が有効になっています。 VM の脆弱性検出を有効にします。 Windows マシンの場合は、Microsoft Defender ウイルス対策を使用した毎日のスキャンなどのルールを構成して、潜在的な脅威を検出します。
包括的なガバナンスについては、 仮想マシンの Azure Policy 組み込み定義 と、コンピューティング レイヤーのセキュリティに影響する可能性があるその他のポリシーを確認します。
Azure Advisor の推奨事項
Azure Advisor は、Azure デプロイを最適化するためのベスト プラクティスに従うのに役立つ、パーソナライズされたクラウド コンサルタントです。
詳細については、Azure Advisor に関するページを参照してください。
関連コンテンツ
この記事で強調表示されている推奨事項を示すリソースとして、次の記事を検討してください。
- この記事のガイダンスをワークロードに適用する方法の例として、次の参照アーキテクチャを使用します。
- 単一 VM アーキテクチャ: Linux VM と Windows VM
- インフラストラクチャの推奨事項に焦点を当てた基本アーキテクチャ: Virtual Machines のベースライン アーキテクチャ
- 次の製品ドキュメントを使用して、実装の専門知識を構築します。