• 3 min read

Scheduled Events で仮想マシン ハードウェアの性能低下を検出

お客様がクラウドに移行するメリットの 1 つは、ハードウェアのメンテナンスや修理をお客様自身で行う必要がなくなり、その分の時間をビジネス アプリの構築に集中できる点です。

お客様がクラウドに移行するメリットの 1 つは、ハードウェアのメンテナンスや修理をお客様自身で行う必要がなくなり、その分の時間をビジネス アプリの構築に集中できる点です。Azure ではハードウェアが絶えず監視され、性能の低下や障害発生の兆候がないか注視されています。兆候が見られた場合、Azure によって仮想マシン (VM) のライブ マイグレーションが試行されます。そしてライブ マイグレーションが不可だった場合、Azure によって自動的に VM が正常なマシンに再デプロイされます。このときディザスター リカバリーがセットアップされていれば (セットアップしておくことを強くお勧めします)、再デプロイメントの影響は最小限に抑えられます。しかし、サービス停止に対する許容性がないアプリでは、正常なマシンへの再デプロイが行われることで問題が生じることがあります。このことに関してお客様からは、可能であれば正常なマシンへの再デプロイのタイミングをお客様自身が制御できるようにしてほしいという声が寄せられていました。

Microsoft では、予定されているメンテナンス イベント (ライブ マイグレーション、再デプロイメント、再起動など) についてプログラムで VM に通知して対応できるようにする方法として、Azure に Scheduled Events を導入しました。お客様は、スケジュールされたイベントの通知を受け取ると、フェールオーバー、状態の保存、VM のセッションのドレイン、手動メンテナンスのスケジュール設定、ユーザーへの通知などの対策を取ることができます。また、Microsoft は新たに、正常なマシンへの再デプロイが必要な問題が近いうちにハードウェアで発生することが予想される場合に Scheduled Events がトリガーされるようにしました。さらに、ライブ マイグレーションが不可能だった場合には、正常なハードウェアに VM が再デプロイされるまでの期間が表示されます。これにより、Azure によって VM の再デプロイが自動で行われる前に、お客様自身が再デプロイを行うことができます。

ハードウェア障害の予測

Azure では、データセンターで運用している膨大な数のサーバーから得たインサイトを基にハードウェアの性能低下を検出しています。実際、多くのケースで障害を予測し、発生を未然に防いでいます。たとえば、特定ノードのディスク I/O パフォーマンスが低下していたり、メモリにエラーが出ていることを検出した場合に、それが重大な影響を及ぼすものでないかどうかを判断します。

ハードウェア障害がごく近いうちに発生する兆候が見られた場合は、可能であれば VM のライブ マイグレーションが自動的に実行されます。これにより、通常はワークロードへの影響が最小限に抑えられ、お客様のエクスペリエンスは最終フェーズで数秒程度フリーズするだけで済みます。Scheduled Events をサブスクライブしていると、ライブ マイグレーションが開始される数前に VM に通知が届きます。ただし、M シリーズや G シリーズなどの特殊なハードウェアを使用している場合や古い世代のハードウェアを使用している場合は、ライブ マイグレーションができないことがあります。この場合は、VM が新しいインスタンスに再デプロイされます。一部のお客様から、ノードの再割り当てを開始するタイミングをコントロールしたり、処理中のエクスペリエンスを制御できるようにしてほしいというご要望をいただいていました。これを受けて、私たちは Scheduled Events を強化し、ハードウェアの異常が検出された時刻を通知できるようにしました。また、ハードウェア障害がすぐに発生しないようであれば、VM の他のマシンへの移行を待機できるようにしました。多くの場合、ハードウェア障害が発生するまでには数日程度の余裕があるため、障害の発生が遅れるように Azure によって軽減策が講じられます。しかし実際に障害が発生するまでの時間はまちまちであるため、性能が低下したハードウェアはできるだけ早急に移行することをお勧めします。

Scheduled Events をリッスンする方法

メンテナンス関連のイベントを取得するには、VM で Scheduled Events をサブスクライブする必要があります。プログラムを作成して Scheduled Events を有効化し、対応する方法の詳細については、こちらのビデオをご覧ください。また、Scheduled Events をリッスンし、軽減策を実施した後に承認する場合のコード サンプルも併せてご確認ください。

ハードウェア関連のイベントをリッスンするために、特別な操作を行う必要はありません。ハードウェア関連のイベントは、"再デプロイ" イベントとして配信されます。メンテナンスが実行されるまでの期間は NotBefore プロパティで通知されます。この期間は数時間から数日間で、ハードウェア障害の重大度によって異なります。Azure による障害発生までの期間の予測の精度が向上すれば、NotBefore の期間の精度もさらに高まると考えられます。しかし、性能が低下したハードウェアを使用していると、障害は突然発生することもあるため、できるだけ速やかに自動または手動で再デプロイを実行する、あるいはスケジュールされたイベントを承認することをお勧めします。要求を承認すると VM は新しい物理マシンに再デプロイされ、これが完了すると Scheduled Events から通知されます。スケジュールされたイベントを NotBefore の期間内に承認しなかった場合は、そのエクスペリエンスは制御できなくなり、Azure によって VM が正常なマシンに再デプロイされます。

Scheduled Events によるハードウェアの性能低下の通知は、既に世界中でサポートされています。API の変更はなく、api-version=2017-08-01 からこの機能を使用できます。

プラットフォームのメンテナンス イベントの影響を受けやすい場合は、Scheduled Events を使用して自動化することを強くお勧めします。ぜひこの機能をお試しのうえ、ページ下部のコメント欄までご意見をお寄せください。