XenServer

高可用性の構成

高可用性は、ホストまたはハードウェア障害が発生した場合にVMワークロードを保護しようとします。

この記事では、高可用性を構成するために実行するタスクについて説明します。高可用性の概念、要件、および期待される動作については、「高可用性」を参照してください。

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

プールが高可用性と互換性を持つためには、特定の要件を満たす必要があります。

  1. プールが均一であり、3つ以上のホストを含み、すべてのホストがオンラインであることを確認します。詳細については、「プールの作成」を参照してください。

  2. プール管理ネットワーク用に専用のボンディングされたインターフェイスを設定し、このネットワークがポート694を介したUDPトラフィックを許可することを確認します。詳細については、「リソースプールでNICボンディングを作成する」を参照してください。

  3. プール内のすべてのホストに静的IPアドレスを構成します。

  4. プール内のすべてのホストに共有ストレージを設定します。詳細については、「SRの作成」を参照してください。

  5. プール内の1つの共有ストレージリポジトリが、次の要件を満たすiSCSI、NFS、またはFibre Channel LUN上にあることを確認します。

    • サイズが4GB以上であること。
    • 回復力のあるストレージ通信を備えていること:iSCSIおよびFibre Channel 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>
        <!--NeedCopy-->
        

        接続されているドライブがある場合、その情報が返されます。リストの最初の項目である uuid に注意してください。

      2. VMのCD/DVDドライブを空にするには、次のように入力します。

        xe vbd-eject uuid=<uuid>
        <!--NeedCopy-->
        
    3. 仮想ネットワークインターフェースがプール全体のネットワーク上にあることを確認します。

    4. VMがライブマイグレーションの要件を満たしていることを確認します。詳細については、「マイグレーションの要件」を参照してください。

  2. プールがオーバーコミットされたときに、どのVMに最高の再起動優先度が与えられるかを決定する一連の優先順位を指定します。

    ha-restart-priority の値を次のいずれかのオプションに設定します。

    • restart プールがオーバーコミットされていない場合、VMをプール内の別のホストで再起動させます。XenServerは成功するまでこの再起動を再試行します。
    • best-effort プール内の別のホストでVMを再起動する単一の試行を行います。XenServerは、すべての保護されたVMが正常に再起動された後にのみ、この試行を行います。

    VMのorderの値を設定する際は、最も優先度の高いVMの起動順序を最も低く設定します。この設定のデフォルト値は0で、この起動順序のVMが最初に起動されます。

    xe vm-param-set uuid=<vm_uuid> ha-restart-priority=<priority> order=<start_order>
    <!--NeedCopy-->
    

    代わりに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>
    <!--NeedCopy-->
    

    このコマンドで構成されたタイムアウトは、この高可用性の有効化にのみ適用されます。タイムアウトを指定しない場合、デフォルトは60秒です。プールのこのデフォルトタイムアウトを変更するには、「高可用性タイムアウトを構成する」を参照してください。

  2. プール内のすべての保護されたVMを実行するためのリソースが不足する前に、障害が発生する可能性のあるホストの最大数を次のコマンドを実行して計算します:

    xe pool-ha-compute-max-host-failures-to-tolerate
    <!--NeedCopy-->
    

    返される数値は、保護されたVMのライブネス保証を失うことなく、現在プールで発生する可能性のあるホスト障害の数です。この値は、プールの状態が変化するにつれて変わる可能性があります。

  3. 前のステップで示された値以下の、許容するホスト障害の数を指定します。

    xe pool-param-set ha-host-failures-to-tolerate=<failure_value> uuid=<pool uuid>
    <!--NeedCopy-->
    

    許容する障害数によって、アラートが送信されるタイミングが決まります。システムのプール状態が変化すると、フェイルオーバー計画が再計算されます。この計算を使用して、プール容量と、保護されたVMのライブネス保証を失うことなく、さらにいくつの障害が発生する可能性があるかを特定します。この計算された値が指定された値を下回ると、システムアラートが生成されます。

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

タイムアウトとは、プール内のホストがネットワークまたはストレージにアクセスできない期間のことです。XenServerホストがタイムアウト期間内にネットワークまたはストレージにアクセスできない場合、自己フェンスして再起動できます。デフォルトのタイムアウトは60秒です。ただし、プールのデフォルトの高可用性タイムアウトを設定することで、この値を変更できます:

xe pool-param-set uuid=<pool uuid> other-config:default_ha_timeout=<timeout in seconds>
<!--NeedCopy-->

xe CLIの代わりにXenCenter®を使用して高可用性を有効にした場合でも、このデフォルトは適用されます。

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

VMのHA機能を無効にするには、次のコマンドを使用します。

xe vm-param-set uuid=<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=<pool_uuid> ha-reboot-vm-on-internal-shutdown=false

内部シャットダウン後にHAで保護されたVMが自動的に再起動するように構成するには、ha-reboot-vm-on-internal-shutdown の値を true に設定します。

xe pool-param-set uuid=<pool_uuid> ha-reboot-vm-on-internal-shutdown=true

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

何らかの理由でホストが高可用性状態ファイルにアクセスできない場合、ホストが到達不能になる可能性があります。XenServerのインストールを回復するには、ホストで host-emergency-ha-disable コマンドを使用して高可用性を無効にする必要がある場合があります。

xe host-emergency-ha-disable --force
<!--NeedCopy-->

ホストがプールコーディネーターであった場合、高可用性が無効な状態で通常どおり起動します。プールメンバーは再接続し、自動的に高可用性を無効にします。ホストがプールメンバーであり、プールコーディネーターに連絡できない場合、次のいずれかのアクションを実行する必要がある場合があります。

  • ホストをプールコーディネーターとして再起動するよう強制する (xe pool-emergency-transition-to-master)

     xe pool-emergency-transition-to-master uuid=<host uuid>
     <!--NeedCopy-->
    
  • 新しいプールコーディネーターがどこにあるかをホストに伝える (xe pool-emergency-reset-master):

     xe pool-emergency-reset-master master-address=<new pool coordinator hostname>
     <!--NeedCopy-->
    

すべてのホストが正常に再起動したら、高可用性を再度有効にします。

xe pool-ha-enable heartbeat-sr-uuid=<sr uuid>
<!--NeedCopy-->

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

ホストのシャットダウンまたは再起動時には、高可用性メカニズムがホストの障害と誤認しないように特に注意してください。高可用性が有効な状態でホストをクリーンにシャットダウンするには、ホストを無効にし、ホストを退避させ、最後にXenCenterまたはCLIを使用してホストをシャットダウンします。高可用性が有効な環境でホストをシャットダウンするには、次のコマンドを実行します。

xe host-disable host=<host name>
xe host-evacuate uuid=<host uuid>
xe host-shutdown host=<host name>
<!--NeedCopy-->

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

VMが高可用性プランで保護され、自動的に再起動するように設定されている場合、この保護がアクティブな間はシャットダウンできません。VMをシャットダウンするには、まずその高可用性保護を無効にしてから、CLIコマンドを実行します。

xe vm-param-set uuid=<vm_uuid> ha-restart-priority=
xe vm-shutdown uuid=<vm_uuid>
<!--NeedCopy-->

保護されたVMのシャットダウンボタンを選択すると、XenCenterは保護の無効化を自動化するためのダイアログボックスを表示します。

注意:

ゲスト内からVMをシャットダウンし、そのVMが保護されている場合、高可用性の障害条件下で自動的に再起動されます。この自動再起動は、オペレーターのエラーによって保護されたVMが誤ってシャットダウンされたままになることを防ぐのに役立ちます。このVMをシャットダウンしたい場合は、まずその高可用性保護を無効にしてください。