メンテナンス イベントの事前対応が可能に
執筆者: Ziv Rafalovich (Senior Program MAnager, Azure Compute)
このポストは、5 月 3 日に投稿された Reacting to maintenance events... before they happen の翻訳です。
スケジュールされたイベント (プレビュー) の概要
VM の可用性に影響を与える可能性のあるイベントの予定を把握し、事前に対処しておけたら便利だと思いませんか? Azure のスケジュールされたイベント機能ならこれが可能です。
このスケジュールされたイベント機能は Azure Metadata Service のサブサービスで、再起動などのスケジュールされているイベントの情報を表示します。これにより、アプリケーションでイベントの影響を最小限に抑えるタスクを事前に実行できます。このサービスは、Azure Metadata Service の一部として VM 内から REST エンドポイントを使用して表示されます。ルーティング不可能な IP が使用されるため、この情報が VM 外部に漏えいすることはありません。
スケジュールされたイベントの対応範囲
マイクロソフトでは、スケジュールされたイベントの範囲を拡大させ続けています。プレビュー期間中でも、以下のことが可能です。
- VM 保護メンテナンス (インプレース VM 移行)。このレベルのメンテナンス操作は、VM を再起動させることなくホスティング環境 (ハイパーバイザーおよびエージェント) の修正プログラムや更新を適用するのに使用されます。VM 保護メンテナンスでは VM が最長で 30 秒程度停止しますが、開かれているファイルやネットワーク接続は保持されます。最新のアプリケーションのほとんどは、このような短い時間の一時停止の影響を受けることはありませんが、ゲームなどの非常に繊細なワークロードでは、サービス中断と見なされることもあります。スケジュールされたイベントでは、フリーズなどのイベントが含まれるメンテナンスを把握できます。
- VM 再起動メンテナンス。更新のほとんどは仮想マシンに影響ありませんが、仮想マシンの再起動が必要な場合があります。スケジュールされたイベントでは、イベントの種類が "Reboot" や "Redeploy" に設定されているシナリオを検出できます。
- ユーザー操作。運用環境サーバーを手動で再起動することはなくても、フェールオーバー ロジックのテストとして、テスト用の VM の再起動や再デプロイを試すことはあります。いずれの場合でも、イベントの種類が "Reboot" や "Redeploy" に設定されているイベントを表示します。
スケジュールされたイベントの使用例
スケジュールされたイベントは、以下のような場合に使用されます。
- プロアクティブなフェールオーバー。アプリケーション、SLB、トラフィック マネージャーが何らかの異常を検出するのを待つ代わりに、事前に他のノードへのフェールオーバーを実行します。VM がすぐに復帰するとわかっている場合には、パーティションやレプリカをフェールオーバーするのではなく、蓄積とログ変更を開始するようにアプリケーション ロジックを設定することができます。
- ノードのドレイン。実行中のジョブが失敗しないように、VM で新しいジョブの受け付けを止め、既に開始しているジョブをドレインさせます。
- ログ記録と監査。Azure による VM の中断を把握しておくと、可用性の問題を検出した場合の根本原因の分析が容易になります。
- 通知と関連付け。通知を管理者や監視ソフトウェアに送信し、スケジュールされたイベントと他のシグナルを関連付けます。
スケジュールされたイベントの使用を開始する
VNET 対応の VM から以下を実行するだけで、スケジュールされたイベントのクエリを発行できます。
curl -H Metadata:true https://169.254.169.254/metadata/scheduledevents?api-version=2017-03-01
応答にはスケジュールされたイベントの配列が含まれます。配列が空の場合は、その時点ではスケジュールされたイベントが存在していません。スケジュールされたイベントが存在する場合、応答にはイベントの配列が含まれます。
{
"DocumentIncarnation":{IncarnationID},
"Events":[
{
"EventId":{eventID},
"EventType":"Reboot" | "Redeploy" | "Freeze",
"ResourceType":"VirtualMachine",
"Resources":[{resourceName}],
"EventStatus":"Scheduled" | "Started",
"NotBefore":{timeInUTC},
}
]
}
VM でスケジュールされたイベントの処理ロジックをトリガーまたはテストする場合は、Azure ポータルから VM を再起動または再デプロイします。
次のステップ
- 詳細については、スケジュールされたイベントに関するドキュメントを参照してください。
- Azure Event Hub を使用して複数の VM からスケジュールされたイベントを収集する場合は、こちらのサンプル (英語) をご利用ください。