VMware ESXiにおけるAutostart設定:障害発生後の自動復旧を支える必須テクニック

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

ホストの再起動後、なぜ仮想マシンを「眠らせたまま」にしてはいけないのか?

システム管理者であれば、深夜に物理サーバーが突然再起動したという通知を受け、肝を冷やした経験が一度はあるはずです。もしホストが20〜30台の仮想マシン(VM)を抱えていた場合、一台ずつログインして手動で「開始」ボタンを押していくのは、まさに苦行と言えるでしょう。

しかし、最大の懸念は手間の多さではなく、起動の順序にあります。例えば、データベース(順位1)がサービスのロード中であるにもかかわらず、Webサーバー(順位3)が先に立ち上がり接続を試みたとします。その結果、アプリケーションは即座に「500エラー」を吐き出し、画面が真っ白になってしまいます。

実プロジェクトで8台のホストクラスターを運用してきた経験から断言しますが、Autostartは不可欠な機能です。これによって、優先順位(Order)遅延(Delay)を設定できます。データベースが先に、次にバックエンドAPI、最後にフロントエンドという流れです。これこそが、人の手を介さずにシステムを復旧させる、標準的な「自己修復(Self-healing)」プロセスなのです。

Autostartの有効化:ホストの「窒息」を防ぐ

デフォルトでは、VMwareはこの機能をオフにしています。これは、すべてのVMが一斉に起動することでIOPSが10,000を超え、ホストの起動直後にディスクの輻輳やCPUの過負荷が発生するのを防ぐためです。

設定を開始するには、以下の手順を実行します:

  1. ブラウザからVMware Host Clientにアクセスします。
  2. 左メニューの「管理(Manage)」を選択します。
  3. 「システム(System)」タブに移動し、「Autostart」を見つけます。
  4. 「設定の編集(Edit settings)」をクリックして構成を開始します。

この設定画面では、特に以下の3つの主要パラメータに注意してください:

  • 開始遅延(Start delay): 私は通常120秒に設定しています。この待機時間により、前のVMがOSやバックグラウンドサービスを完全にロードしてから、次のVMが起動する余裕が生まれます。
  • ハートビートを待機(Wait for heartbeat): 非常に重要です。「はい」を選択すると、ESXiはVMのVMware Toolsからの信号を確認してから次の仮想マシンを起動します。単に時間をカウントするよりも、はるかにインテリジェントな方法です。
  • 停止アクション(Stop action): 「シャットダウン」を選択してください。データを安全にディスクに書き込みたい場合は、「サスペンド」は避けるべきです。

優先順位の設定:「司令塔」を最優先で起動する

全体の機能を有効にしたら、次は個々の仮想マシンに役割を割り当てます。すべてのVMを自動起動させる必要はありません。

Webインターフェースでの操作

Autostartの画面で、重要なVM(SQL Serverなど)を選択し、「構成(Configure)」をクリックします。

  • Autostart: 「有効(Enabled)」に切り替えます。
  • 開始順序(Start order): 数値が小さいほど優先度が高くなります。鉄則として、DBは1、Appは2、Web/LBは3と設定します。

ヒント: このリストには本番環境(Production)のVMのみを含めるべきです。開発・テスト用やバックアップ用のマシンは、システム復旧時のリソース節約のため、手動起動のままにしておくのが賢明です。

コマンド操作(自動化)を好むエンジニア向け

大量のホストを構成する必要がある場合は、SSHを使用する方がはるかに高速です。VMのリストとIDを確認するには、以下のコマンドを使用します:

vim-cmd vmsvc/getallvms

次に、現在の起動シーケンスを確認します:

vim-cmd hostsvc/autostartmanager/get_autostartseq

vCenterとHAクラスター運用における「手痛い」注意点

これは多くの人が混同しやすいポイントです。ESXiホストがvSphere HA(High Availability)を有効にしたクラスター内にある場合、ホストレベルでのAutostart設定は無効化されます。

このような環境では、vSphere HA Orchestratorが制御権を持ちます。ホストがダウンすると、HAが別のホスト上でVMを自動的に再起動します。この場合、個別のESXiで設定するのではなく、vCenterにログインして「VMオーバーライド(VM Overrides)」または「VMの開始優先順位(VM Startup Priority)」で順序を設定する必要があります。

また、すべてのVMにVMware Toolsがインストールされていることを100%確認してください。これが欠けていると、ESXiは「ハートビート」を受信できず、タイムアウトを待つためにAutostartプロセス全体が遅延してしまいます。

DevOps向けのクイック状態確認スクリンスクリプト

再起動後にVMがすべて正常に起動したかを確認し、必要に応じてTelegramにアラートを送信するための簡単なPythonコードを紹介します:

from pyVim.connect import SmartConnect
import ssl

# 自己署名証明書のSSLチェックをスキップ
scontext = ssl._create_unverified_context()
si = SmartConnect(host="192.168.1.100", user="root", pwd="password", sslContext=scontext)

for child in si.RetrieveContent().rootFolder.childEntity:
    if hasattr(child, 'vmFolder'):
        for vm in child.vmFolder.childEntity:
            print(f"VM: {vm.name} -> Status: {vm.runtime.powerState}")

これらの実務に基づいた共有が、皆さんのシステムの円滑な運用に役立ち、物理サーバーの不調のたびに「夜通し監視」するような事態が減ることを願っています。

Share: