高可用性を構成する

最終公開日 : Oct 07, 2026
高可用性は、ホストまたはハードウェアの障害が発生した場合に、VMワークロードを保護しようとします。
この記事では、高可用性を構成するために実行するタスクについて説明します。高可用性の概念、要件、および期待される動作については、高可用性を参照してください。

1. プールを高可用性用に構成する

プールが高可用性と互換性を持つには、特定の要件を満たす必要があります。
  1. プールが均一であり、3つ以上のホストを含み、すべてのホストがオンラインであることを確認します。詳細については、プールの作成を参照してください。
  2. プール管理ネットワーク用に専用のボンディングインターフェイスを設定し、このネットワークがポート694経由のUDPトラフィックを許可することを確認します。詳細については、リソースプールでのNICボンディングの作成を参照してください。
  3. プール内のすべてのホストに静的IPアドレスを構成します。
  4. プール内のすべてのホストに共有ストレージを設定します。詳細については、SRの作成を参照してください。
  5. プール内の1つの共有ストレージリポジトリが、次の要件を満たすiSCSI、NFS、またはファイバーチャネルLUN上にあることを確認します。
    • サイズが4GB以上であること。
    • 弾力性のあるストレージ通信を備えていること:iSCSIおよびファイバーチャネルSRの場合は、マルチパスを構成します。NFS SRの場合は、弾力性のあるボンディングネットワークをストレージネットワークとして使用します。
    このSRはハートビートSRとして使用されます。

2. VMを高可用性用に準備する

高可用性で保護したいプール内のVMに対して、以下の手順を完了します。
  1. VMがアジャイルであることを確認します。
    1. 仮想ディスクが共有ストレージ上にあることを確認します。
      ディスクが共有ストレージ上にない場合は、次のコマンドを使用して移動します。
      xe vm-copy uuid=<vm_uuid> new-name-label=<name_for_copy> sr-uuid=<uuid_of_sr>
      sr-uuid をプール共有ストレージのUUIDに設定します。
    2. VMがローカルDVDドライブに接続されていないことを確認します。
      1. 次のように入力して、VMに空のCD/DVDドライブがないかどうかを確認します。
        xe vbd-list type=CD empty=false vm-uuid=<vm_uuid>
        接続されているドライブがある場合、その情報が返されます。リストの最初の項目である uuid に注意してください。
      2. VMのCD/DVDドライブを空にするには、次のように入力します。
        xe vbd-eject uuid=<uuid>
    3. 仮想ネットワークインターフェースがプール全体のネットワーク上にあることを確認します。
    4. VMがライブマイグレーションの要件を満たしていることを確認します。詳細については、「移行要件」を参照してください。
  2. プールがオーバーコミットされたときに、どのVMに最も高い再起動優先度が与えられるかを決定する一連の優先度を指定します。
    ha-restart-priority の値を次のいずれかのオプションに設定します。
    • プールがオーバーコミットされていない場合、VMをプール内の別のホストで再起動するには restart を使用します。XenServerは、成功するまでこの再起動を再試行します。
    • プール内の別のホストでVMを再起動する単一の試行を行うには best-effort を使用します。XenServerは、すべての保護されたVMが正常に再起動された後にのみ、この試行を行います。
    VMのorderの値を設定する際、最も優先度の高いVMが最も低い起動順序を持つように設定します。この設定のデフォルト値は0で、この起動順序のVMが最初に起動されます。
    xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<priority> order=<start_order>
    代わりにXenCenterを使用して、VMでこれらの設定を構成できます。詳細については、起動オプションを参照してください。

3. XenServer®プールで高可用性を有効にする

XenCenterまたはコマンドラインインターフェイス (CLI) を使用して、プールで高可用性を有効にできます。XenCenterを使用して高可用性を有効にする方法については、高可用性を有効にするを参照してください。
xe CLIを使用して高可用性を有効にするには:
  1. プールで高可用性を有効にし、オプションでタイムアウトを指定するには、次のコマンドを実行します。
    xe pool-ha-enable heartbeat-sr-uuids=<sr uuid> ha-config:timeout=<timeout_in_seconds>
    このコマンドで設定されたタイムアウトは、この高可用性の有効化にのみ適用されます。タイムアウトを指定しない場合、デフォルトは60秒です。プールのこのデフォルトタイムアウトを変更するには、高可用性タイムアウトを構成するを参照してください。
  2. プール内のすべての保護されたVMを実行するのに十分なリソースがなくなるまでに障害が発生する可能性のあるホストの最大数を、次のコマンドを実行して計算します。
    xe pool-ha-compute-max-host-failures-to-tolerate
    返される数値は、保護されたVMのライブネス保証を失うことなく、現在プールで発生する可能性のあるホスト障害の数です。この値は、プールの状態が変化するにつれて変わる可能性があります。
  3. 許容するホスト障害の数を、前のステップで示された値以下で指定します。
    xe pool-param-set ha-host-failures-to-tolerate=<failure_value> uuid=<pool uuid>
    許容する障害の数は、アラートが送信されるタイミングを決定します。システムは、プールの状態が変化するにつれてフェイルオーバープランを再計算します。この計算を使用して、プール容量と、保護されたVMのライブネス保証を失うことなく、さらにいくつの障害が発生する可能性があるかを特定します。この計算された値が指定された値を下回ると、システムアラートが生成されます。

高可用性タイムアウトを構成する

タイムアウトとは、プール内のホストがネットワークまたはストレージにアクセスできない期間です。XenServerホストがタイムアウト期間内にネットワークまたはストレージにアクセスできない場合、自己フェンスして再起動できます。デフォルトのタイムアウトは60秒です。ただし、プールのデフォルトの高可用性タイムアウトを設定することで、この値を変更できます。
xe pool-param-set uuid=<pool uuid> other-config:default_ha_timeout=<timeout in seconds>
xe CLIの代わりにXenCenter®を使用して高可用性を有効にした場合でも、このデフォルトは適用されます。

VMから高可用性保護を削除する

VMのHA機能を無効にするには、次のコマンドを使用します。
xe vm-param-set uuid=&lt;vm_uuid> ha-restart-priority=
このコマンドは起動順序設定を保持します。このVMのHAを再度有効にするには、ha-restart-priority パラメーターを適切に restart または best-effort に設定します。

内部的にシャットダウンされたVMの再起動動作を構成する

VMがHAによって保護されている場合、シャットダウンされるたびにデフォルトで再起動されます。この動作には、VMクラッシュによる内部シャットダウン、またはゲストオペレーティングシステム内からのクリーンシャットダウンが含まれます。
この動作を変更して、HAが有効なプール内のVMが、実行中のホストが障害を起こしたりフェンスされたりした場合にのみ再起動され、内部シャットダウンの場合はVMがシャットダウンされたままになるようにすることができます。
内部シャットダウン後にHA保護されたVMが自動的に再起動しないように構成するには、ha-reboot-vm-on-internal-shutdown の値を false に設定します。
xe pool-param-set uuid=&lt;pool_uuid> ha-reboot-vm-on-internal-shutdown=false
内部シャットダウン後にHA保護されたVMが自動的に再起動するように構成するには、ha-reboot-vm-on-internal-shutdown の値を true に設定します。
xe pool-param-set uuid=&lt;pool_uuid> ha-reboot-vm-on-internal-shutdown=true

到達不能なホストを回復する

何らかの理由でホストが高可用性状態ファイルにアクセスできない場合、ホストが到達不能になる可能性があります。XenServerインストールを回復するには、ホストで host-emergency-ha-disable コマンドを使用して高可用性を無効にする必要がある場合があります。
xe host-emergency-ha-disable --force
ホストがプールコーディネーターだった場合、高可用性が無効な状態で通常どおり起動します。プールメンバーは再接続し、自動的に高可用性を無効にします。ホストがプールメンバーであり、プールコーディネーターに連絡できない場合、次のいずれかのアクションを実行する必要がある場合があります。
  • ホストをプールコーディネーターとして再起動するよう強制する (xe pool-emergency-transition-to-master)
    xe pool-emergency-transition-to-master uuid=<host uuid>
  • 新しいプールコーディネーターがどこにあるかをホストに伝える (xe pool-emergency-reset-master):
    xe pool-emergency-reset-master master-address=<new pool coordinator hostname>
すべてのホストが正常に再起動したら、高可用性を再度有効にします。
xe pool-ha-enable heartbeat-sr-uuid=<sr uuid>

高可用性が有効なホストをシャットダウンする

ホストのシャットダウンまたは再起動時には、高可用性メカニズムがホストの障害を想定しないように、特別な注意を払ってください。高可用性が有効なホストをクリーンにシャットダウンするには、ホストを無効にし、ホストを退避させ、最後にXenCenterまたはCLIを使用してホストをシャットダウンします。高可用性が有効な環境でホストをシャットダウンするには、次のコマンドを実行します。
xe host-disable host=<host name>
xe host-evacuate uuid=<host uuid>
xe host-shutdown host=<host name>

高可用性によって保護されているVMをシャットダウンする

VMが高可用性プランによって保護され、自動的に再起動するように設定されている場合、この保護がアクティブな間はシャットダウンできません。VMをシャットダウンするには、まずその高可用性保護を無効にしてから、CLIコマンドを実行します。
xe vm-param-set uuid=<vm_uuid> ha-restart-priority=
xe vm-shutdown uuid=<vm_uuid>
保護されたVMのシャットダウンボタンを選択すると、XenCenterは保護の無効化を自動化するためのダイアログボックスを提供します。
注:
ゲスト内からVMをシャットダウンし、そのVMが保護されている場合、高可用性の障害条件下で自動的に再起動されます。この自動再起動は、オペレーターのエラーによって保護されたVMが誤ってシャットダウンされたままになることを防ぐのに役立ちます。このVMをシャットダウンしたい場合は、まずその高可用性保護を無効にしてください。