ホストとリソースプール

ここでは、xeコマンドラインインターフェイス(CLI)の使用例を基に、リソースプールの作成方法について説明します。シンプルなNFSベースの共有ストレージ構成を使用した例を挙げて、仮想マシンの管理について説明します。また、物理ノードの障害に対処する手順についても説明します。

XenServer ホストとリソースプールの概要

リソースプール」(または単に「プール」)は、複数のXenServerホストで構成され、仮想マシンをホストする単一の管理対象としてグループ化したものです。リソースプールに共有ストレージを接続すると、十分なメモリを備えた任意 XenServerのホスト上で仮想マシンを起動できるようになります。さらに、最小限のダウンタイムで、実行中の仮想マシンを別のXenServerホスト上に動的に移行することもできます(「ライブマイグレーション」または「XenMotion」とも呼ばれます)。XenServerホストでハードウェア障害が生じた場合、管理者は、そのホスト上の仮想マシンを、同じリソースプール内の別のXenServerホスト上で再起動させることができます。リソースプールの高可用性機能を有効にすると、ホストに障害が発生した場合に、そのホスト上の仮想マシンが自動的に移行されるようになります。リソースプールでは、最大で64台のホストがサポートされます。ただし、この制限は強制的なものではありません。

リソースプールには、プールマスタと呼ばれる1つの物理ノードが常に存在します。プールマスタだけが、XenCenterおよびXenServerコマンドラインインターフェイス(xe CLI)に管理インターフェイスを提供します。管理者が実行する管理コマンドは、プールマスタにより、必要に応じて個々のメンバホストに転送されます。

注:

高可用性機能が有効なリソースプールでは、プールマスタに障害が発生すると、別のホストがマスタとして選出されます。

リソースプール作成の要件

リソースプールは、同種(または制限付きの異種混在型)のXenServerホストの集合で、最大ホスト数は64です。ここで「同種のXenServerホスト」とは、以下の条件を満たすものを指します。

  • プールに追加するサーバー上のCPUは、ベンダー、モデル、および機能が、プール内の既存のサーバー上のCPUと同じである。

  • インストールされているXenServerソフトウェアが同じバージョンである。

以上のほか、リソースプールに追加するサーバーには制限が適用され、特にサーバーについて次の点が確認されます:

  • ほかのリソースプールのメンバではない。

  • 共有ストレージが設定されていない。

  • 実行中またはサスペンド状態の仮想マシンがXenServerホスト上にない。

  • シャットダウンなど、処理をアクティブに実行している仮想マシンがない。

リソースプールに追加するサーバーのシステムの時計について、次の点を確認します:

  • システムの時計が、プールマスタと同期している(NTPを使用している場合など)。

  • 管理インターフェイスがボンディングされていない(リソースプールに追加した後ではボンディング可能)。

  • 管理IPが静的である(そのサーバー上またはDHCPサーバー上で固定アドレスが指定されている)。

XenServer ホストに搭載されている物理ネットワークインターフェイスの数やローカルストレージリポジトリのサイズは、リソースプール内で異なっていても構いません。また、完全に同一のCPUを搭載した複数のサーバーを入手することは難しい場合が多いため、軽微なばらつきは許容されます。CPUが異なるホストをリソースプールに追加しても問題がないと判断できる場合は、--forceパラメータを指定してホストを強制的に追加することもできます。

プール内のすべてのホストは同じサイトに存在し、低遅延のネットワークで接続されている必要があります。

注:

リソースプールで共有されるNFSまたはiSCSIストレージを提供するサーバーは、静的なIPアドレスが設定されている必要があります。

プールには、仮想マシンを実行するXenServerホストを動的に選択したり、XenServerホスト間で仮想マシンを動的に移行したりするための共有ストレージリポジトリが含まれている必要があります。可能な場合は、共有ストレージを設定してからリソースプールを作成してください。Citrixでは、共有ストレージを追加したら、ローカルストレージ上にディスクを持つ既存の仮想マシンを共有ストレージ上に移動しておくことをお勧めします。仮想マシンを移動するには、xe vm-copyコマンドまたはXenCenterを使用します。

リソースプールを作成する

リソースプールは、XenCenterまたはCLIを使用して作成できます。新しいホストをリソースプールに追加すると、そのホスト上のローカルデータベースがプールのデータベースと同期され、プールに適用されているいくつかの設定がそのホストに継承されます:

  • 仮想マシン、ローカル、およびリモートのストレージ設定は、プールのデータベースに追加されます。プールへの追加処理が完了し、管理者がリソースを明示的に共有するまで、この設定はプールに追加するホストに適用されません。

  • リソースプールに追加したホストには、プールに設定されている既存の共有ストレージリポジトリが継承され、その共有ストレージへのアクセスが自動的に可能になるように適切な物理ブロックデバイス(PBD)レコードが作成されます。

  • 一部のネットワーク設定も、新しいホストに継承されます。つまり、ネットワークインターフェイスカード(NIC)の構造的な詳細、仮想LAN(VLAN)、およびボンディングされたインターフェイスはすべて継承されますが、ポリシー情報は継承されません。追加したホスト上で再設定する必要があるポリシーには、以下のものが含まれます:

    • 管理インターフェイスのIPアドレス(プールに追加する前に設定済みのアドレスが保持されます)。

    • 管理インターフェイスの場所(プールに追加する前の設定が保持されます)。たとえば、プール内のほかのホストの管理インターフェイスがボンディングされたインターフェイス上に設定されている場合は、新しいホストの管理インターフェイスをそのボンディングに移行する必要があります。

    • ストレージ専用のネットワークインターフェイス。XenCenterまたはCLIを使って新しいホストに再割り当てし、トラフィックが正しく転送されるように物理ブロックデバイスを接続し直す必要があります。これは、プールに追加するときにIPアドレスが割り当てられないためで、このように正しく設定しないとストレージ用のネットワークインターフェイスを使用できません。CLIを使用したストレージ専用ネットワークインターフェイスの設定については、「ネットワークの管理」を参照してください。

注:

ホストの管理インターフェイスがリソースプールと同じタグが付けられたVLANにある場合にのみ、新しいホストをリソースプールに追加することができます。

CLIを使用してXenServerホストhost1およびhost2をリソースプールに追加するには

  1. XenServerホストhost2上でコンソールを開きます。

  2. 次のコマンドを実行して、XenServerホストhost2をXenServerホストhost1のプールに追加します:

    xe pool-join master-address=host1 master-username=administrators_username master-password=password
    

ここで、master-addressにはXenServerホストhost1の完全修飾ドメイン名を指定し、passwordにはXenServerホストhost1のインストール時に設定した管理者パスワードを指定します。

前の手順で使用した2つのXenServerホストは、デフォルトで名前のないリソースプールに属しています。リソースプールを作成するには、次のコマンドを実行して、名前のないリソースプールに名前を設定します。Tabキーを押してpool_uuidを取得することもできます:

xe pool-param-set name-label="New Pool" uuid=pool_uuid

異種混在型リソースプールを作成する

XenServer では、種類の異なるハードウェアを使って異種混在型のリソースプールを作成できるため、新しいハードウェアによる環境の拡張が簡単に行えます。異種混在型のリソースプールを作成するには、マスキングまたはレベリングと呼ばれる技術をサポートするIntel社(FlexMigration)またはAMD社(Extended Migration)のCPUが必要です。これらの機能では、CPUを実際とは異なる製造元、モデル、および機能のものとして見せかけることができます。これにより、異なる種類のCPUを搭載したホストでプールを構成しても、ライブマイグレーションがサポートされます。

注:

注:

異種混在型プールに追加するXenServerホストのCPUが、プール内のホストと同一ベンダー(AMDまたはIntel)のものである必要があります。ただし、ファミリー、モデル、およびステッピング数などは異なっていても構いません。

XenServer では、異種混在型プールのサポートが簡素化されました。ホストは、(CPUが同じベンダーファミリーからのものである限り)基になるCPUの種類に関係なく既存のリソースプールに追加できるようになりました。プールの機能セットは、以下が行われるたびに動的に計算されます。

  • 新しいホストをプールに追加した場合

  • プールメンバーをプールから除外した場合

  • プールメンバーが再起動の後に再接続した場合

プールの機能セットにおける変更は、プールで実行中の仮想マシンには影響しません。実行中の仮想マシンは、開始時に適用された機能セットを引き続き使用します。この機能セットは起動時に固定され、移行、サスペンド、および再開操作中も継続されます。機能の劣るホストがプールに追加されてプールのレベルが低下する場合、実行中の仮想マシンはプール内の新しく追加されたホストを除く任意のホストに移行できます。仮想マシンをプール内またはプール間で別のホストに移動または移行しようとすると、XenServerによって、移行先ホストの機能セットに対して仮想マシンの機能セットが比較されます。機能セットに互換性があることが分かった場合は、仮想マシンの移行が許可されます。これによって、仮想マシンで使用しているCPU機能に関係なく、仮想マシンをプール間で自由に移動できるようになります。ワークロードバランスを使用して、仮想マシンを移行するのに最適な移行先ホストを選択すると、互換性のない機能セットが使用されているホストは、移行先ホストとして推奨されません。

共有ストレージを追加する

サポートされている共有ストレージの種類の一覧については、「ストレージリポジトリの形式」を参照してください。ここでは、共有ストレージ(ストレージリポジトリと呼びます)を既存のNFSサーバー上に作成する方法について説明します。

CLIを使用してNFS共有ストレージをリソースプールに追加するには

  1. プール内の任意のXenServerホストで、コンソールを開きます。

  2. 次のコマンドを実行して、server:/pathにストレージリポジトリを作成します。

    xe sr-create content-type=user type=nfs name-label="Example SR" shared=true \
    device-config:server=server \
    device-config:serverpath=path
    

    ここで、device-config:serverはNFSサーバーのホスト名であり、device-config:serverpathはNFSサーバー上のパスです。sharedにtrueを指定しているため、プール内のすべてのXenServerホストに共有ストレージが自動的に接続されます。また、このプールに後で追加するすべてのXenServerホストにもこの共有ストレージが自動的に接続されます。ストレージリポジトリのUUID(Universally Unique Identifier)が、画面上に出力されます。

  3. 次のコマンドを実行して、プールのUUIDを確認します:

    xe pool-list
    
  4. 次のコマンドを実行して、共有ストレージをプール全体のデフォルトとして設定します。

    xe pool-param-set uuid=pool_uuid default-SR=sr_uuid
    

    共有ストレージがプールのデフォルトとして設定されたため、今後作成するすべての仮想マシンのディスクがデフォルトで共有ストレージに作成されます。ほかの種類の共有ストレージを作成する方法については、「ストレージリポジトリの形式」を参照してください。

リソースプールからXenServerホストを削除する

注:

XenServerホストをプールから削除する前に、そのホスト上のすべての仮想マシンがシャットダウン状態であることを確認してください。シャットダウンされていない仮想マシンが検出されると、警告メッセージが表示され、ホストを削除できません。

リソースプールからホストを削除(イジェクト)すると、サーバーが再起動して再初期化され、新規インストールと同じ状態になります。ただし、ローカルディスク上に重要なデータがある場合は、プールからXenServerホストを削除しないでください。

CLIを使用してホストをリソースプールから削除するには

  1. プール内の任意のホストで、コンソールを開きます。

  2. 次のコマンドを実行して、目的のホストのUUIDを確認します。

    xe host-list
    
  3. 次のコマンドを実行して、そのホストをプールから削除します:

    xe pool-eject host-uuid = host_uuid
    

    XenServerホストがリソースプールから削除され、新規インストールの状態になります。

    警告:

    ローカルディスクに重要なデータが格納されている場合は、そのホストをリソースプールから削除しないでください。ホストをプールから削除すると、すべてのデータが消去されます。ローカルディスク上のデータを保持するには、XenCenterまたはxe vm-copy CLIコマンドを使用して、仮想マシンをプールの共有ストレージにコピーしておきます。

ローカルディスク上に仮想マシンがあるXenServerホストをプールから削除すると、これらの仮想マシンはプールのデータベースに残り、ほかのXenServerホストからもプール内に存在しているように見えます。このような仮想マシンを起動可能にするためには、その仮想マシンに関連付けられている仮想ディスクを、プール内のほかのXenServerホストからアクセスできる共有ストレージ上のものに変更するか、仮想ディスクを削除する必要があります。このため、プールにホストを追加する場合には、ローカルストレージの内容を共有ストレージ上に移動することをお勧めします。これにより、プールからXenServerホストを削除したりホストに物理的な障害が発生したりしたときのデータの損失を回避することができます。

注:

ホストがタグ付きVLANネットワーク上で管理インターフェイスがあるプールから削除されると再起動され、このマシンの管理インターフェイスが同じネットワーク上で利用できるようになります。

XenServerホストのプールを保守するための準備

リソースプール内のホストの保守を行う場合は、そのホストを無効にして、仮想マシンが起動しなくなるようにしてから、仮想マシンをプール内の別のXenServerホストに移行しておく必要があります。これを行うには、XenCenterを使用して、XenServerホストを保守モードに切り替えます。詳しくは、XenCenterのオンラインヘルプを参照してください。

予備の同期処理は24時間ごとに機能するため、プールマスタを保守モードにすると、オフラインになった仮想マシンに対するラウンドロビンデータベースが最大で24時間分失われます。

警告:

Citrix ではアップグレードをインストールする前に、すべてのXenServerホストを再起動して、設定を確認することを強くお勧めします。これにより、XenServerが再起動するまで適用されない変更内容が原因でアップデートに失敗することを回避できます。

CLIを使用してプール内のホストを保守するための準備を行うには

  1. 次のコマンドを実行します:

    xe host-disable uuid=XenServer_host_uuid
    xe host-evacuate uuid=XenServer_host_uuid
    

    これにより、XenServerホストが無効になり、実行中の仮想マシンがプール内の別のXenServerホストに移行されます。

  2. 保守作業を行います。

  3. 保守作業が終了したら、次のコマンドを実行して、XenServerホストを有効にします:

    xe host-enable
    
  4. シャットダウンまたはサスペンドした仮想マシンを起動または再開します。

リソースプールデータのエクスポート

[リソースデータのエクスポート]オプションを使用すると、リソースプールのリソースデータレポートを生成し、それをXLSファイルやCSVファイルとしてエクスポートできます。このレポートには、リソースプール内のサーバー、ネットワーク、ストレージ、仮想マシン、VDI、GPUなど、さまざまなリソースについての詳細な情報が記述されます。これにより、管理者はCPU、ストレージ、およびネットワークなどのワークロードに基づいて、リソースの追跡、計画、および割り当てを行うことができます。

注:

[リソースプールデータのエクスポート]は、XenServer Enterprise Editionユーザー、またはCitrix Virtual Apps and Desktops権限によりXenServerにアクセスするユーザーが使用できます。

このレポートに記述されるリソースおよびリソースデータの一覧を以下に示します:

サーバー:

  • 名前
  • プールマスター
  • UUID
  • アドレス
  • CPU使用率
  • ネットワーク(平均/最大KB/秒)
  • 使用メモリ
  • ストレージ
  • アップタイム
  • 説明

ネットワーク:

  • 名前
  • 接続状態
  • MAC
  • MTU
  • VLAN
  • 種類
  • 場所

VDI:

  • 名前
  • 種類
  • UUID
  • サイズ
  • ストレージ
  • 説明

ストレージ:

  • 名前
  • 種類
  • UUID
  • サイズ
  • 場所
  • 説明

仮想マシン:

  • 名前
  • 電源状態
  • 実行サーバー
  • アドレス
  • MAC
  • NIC
  • オペレーティングシステム
  • ストレージ
  • 使用メモリ
  • CPU使用率
  • UUID
  • アップタイム
  • テンプレート
  • 説明

GPU:

  • 名前
  • サーバー
  • PCIバスのパス
  • UUID
  • 使用電力
  • 温度
  • 使用メモリ
  • コンピューター使用率

注:

GPUに関する情報は、GPUを搭載したXenServerホストでのみ記述されます。

リソースデータをエクスポートするには

  1. XenCenterのナビゲーションペインで [インフラストラクチャ] をクリックし、リソースプールをクリックします。

  2. [プール] メニューをクリックし、[リソースデータのエクスポート] を選択します。

  3. レポートの保存先を指定して、[保存] をクリックします。

ホストの電源投入

リモートからのホストの電源投入

XenServerホストの電源投入機能を使用すると、XenCenterやCLIを使ってリモートのホストの電源を投入したり切断(シャットダウン)したりできます。

ホストの電源投入機能を有効にするには、以下のいずれかの電源管理ソリューションが必要です。

  • Wake-on-LANが有効なネットワークカード

  • Dell Remote Access Card(DRAC)。XenServerでDRACを使用するには、Dellサプリメンタルパックをインストールしておく必要があります。DRACをサポートするには、DRACのサーバーにRACADMコマンドラインユーティリティをインストールして、DRACおよびそのインターフェイスを有効にする必要があります。通常、RACADMはDRAC管理ソフトウェアに含まれています。詳しくは、Dell社のDRACドキュメントを参照してください。

  • Hewlett-Packard Integrated Lights-Out(iLO)。XenServerでiLOを使用するには、そのサーバー上のiLOを有効にして、インターフェイスをネットワークに接続する必要があります。詳しくは、HP社のiLOドキュメントを参照してください。

  • XenServerの電源を投入または切断するための、管理APIに基づいたカスタムスクリプト。詳しくは、次のセクションの「ホストの電源投入機能のカスタムスクリプトを作成する」を参照してください。

電源を自動的に投入または切断できるようにXenServerホストを設定するには、以下の操作を行います:

  1. プール内のホストがリモートからの電源制御をサポートしていること(Wake-on-LAN機能、DRACまたはiLOカード、またはカスタムスクリプトが設定されていることなど)を確認します。

  2. CLIまたはXenCenterを使用して、ホスト電源投入機能を有効にします。

CLIを使用してホストの電源投入を管理する

ホスト電源投入機能は、CLIまたはXenCenterで管理できます。このセクションでは、CLIでの管理について説明します。

ホスト電源投入機能は、ホストレベル(つまり各XenServerホスト)で有効になります。

この機能を有効にすると、CLIやXenCenterからホストの電源を入れることができます。

CLIを使用してホスト電源投入を有効にするには

次のコマンドを実行します:

xe host-set-power-on-mode host=<host uuid>\
power-on-mode=("" , "wake-on-lan",
"iLO", "DRAC","custom")
power-on-config=key:value


iLOおよびDRACでは、キー(key)として"power_on_ip"{#prmnmN7008A}、"power_on_user"{#prmnmN70090}、"power_on_password_secret"{#prmnmN70096}を指定します。キー"power_on_password_secret"{#prmnmN7009C}を指定することで、パスワードを安全に格納することができます。

CLIを使用してホストの電源をリモートから投入するには

次のコマンドを実行します:

xe host-power-on host=<host uuid>

ホスト電源投入機能のカスタムスクリプトを作成する

デフォルトでサポートされるプロトコル(Wake-On-RingやIntel Active Management Technologyなど)をサポートしないXenServerホストの電源をリモートから投入するには、カスタムのLinux Pythonスクリプトを作成します。ただし、iLO、DRAC、およびWake-On-LANソリューション用のカスタムスクリプトを作成することもできます。

このセクションでは、XenServer APIコールhost.power_onのキー/値ペアを使用したホスト電源投入用カスタムスクリプトの作成について説明します。

カスタムスクリプトは、XenServerの電源の制御が必要なときにコマンドラインから実行する必要があります。また、XenCenterでスクリプトの実行を指定し、XenCenter UI機能を使用して操作することもできます。

XenServer APIについては、Citrix Webサイトで公開されているXenServer Management API(英文)を参照してください。

警告:

/etc/xapi.d/plugins/ディレクトリにインストールされるデフォルトのスクリプトを変更することはできません。新しく作成したスクリプトをこのディレクトリに追加することはできますが、XenServerに付属のスクリプトは変更しないでください。

キー/値ペア {#host.power_on_mode}

ホスト電源投入機能を使用するには、host.power_on_modeキーとhost.power_on_configキーを設定します。値については、後のセクションを参照してください。

次のAPIコールを使用すると、これらのフィールドを一度に設定することもできます:

void host.set_host_power_on_mode(string mode, Dictionary<string,string> config)
host.power_on_mode
  • 定義: 電源管理ソリューションの種類(Dell DRACなど)を指定するキー/値ペアを含みます。

  • 設定可能な値:

    • 空文字。電源管理を無効にします。

    • iLO:HP iLOを示します。

    • DRAC:Dell DRACを示します。DRACを使用するには、Dellサプリメンタルパックをインストールしておく必要があります。

    • wake-on-lan:Wake on LANを示します。

    • そのほかの名前(カスタムの電源投入スクリプトの指定)。このオプションでは、カスタムの電源管理スクリプトを指定できます。

  • 種類:文字列

host.power_on_config
  • 定義: 電源投入モードを指定するキー/値ペアを含みます。iLOおよびDRACに関する追加情報を指定します。

  • 設定可能な値:

    • 電源管理ソリューションの種類としてiLOまたはDRACを指定する場合は、このキーで以下のいずれかの値を指定します。

      • power_on_ip:電源管理カードとの通信で使用されるIPアドレスです。iLOまたはDRACが構成されたネットワークインターフェイスのドメイン名を入力することもできます。

      • power_on_user:管理プロセッサに関連付けられたiLOまたはDRACのユーザー名です。工場出荷時のものから変更されている場合があります。

      • power_on_password_secret:セキュリティを保護するシークレット機能を使用してパスワードを指定します。

    • “power_on_password_secret”でパスワードを指定するには、事前にパスワードシークレットを作成しておく必要があります。

  • 種類:マップ(文字列,文字列)

サンプルスクリプト

このサンプルスクリプトでは、XenServer APIをインポートし、自身をカスタムスクリプトとして定義し、さらにリモートから制御するホストに特定のパラメータを渡します。カスタムスクリプトでは、常にsession{#prmnmN8012E}、remote_host{#prmnmN80134}、およびpower_on_config{#prmnmN8013A}パラメータを定義する必要があります。

このスクリプトの結果は、実行に失敗した場合のみ表示されます。

import XenAPI
def custom(session,remote_host,
power_on_config):
result="Power On Not Successful"
for key in power_on_config.keys():
result=result+''
key=''+key+''
value=''+power_on_config[key]
return result

注:

作成したスクリプトは、拡張子.pyで/etc/xapi.d/pluginsディレクトリに保存します。

XenServerホストとリソースプールとの通信

XenServer では、管理APIトラフィックの暗号化にTLSプロトコルが使用されます。XenServerと管理APIクライアント(またはアプライアンス)との間の通信で、デフォルトでTLS 1.2プロトコルが使用されるようになりました。ただし、管理APIクライアントまたはアプライアンスがTLS 1.2を使用して通信できない場合は、それ以前のプロトコルが通信に使用される場合があります。

XenServer では、次の暗号の組み合わせが使用されます:

-TLS_RSA_WITH_AES_128_CBC_SHA256

-TLS_RSA_WITH_AES_256_CBC_SHA

-TLS_RSA_WITH_AES_128_CBC_SHA

-TLS_RSA_WITH_RC4_128_SHA

-TLS_RSA_WITH_RC4_128_MD5

-TLS_RSA_WITH_3DES_EDE_CBC_SHA

また、XenServerでは、TLS 1.2のみによる通信を許可するようにホストまたはリソースプールを構成できます。このオプションでは、TLS 1.2プロトコルを使用したXenServerと管理APIクライアント(またはアプライアンス)との通信が許可されます。TLS 1.2のみのオプションでは、TLS_RSA_WITH_AES_128_CBC_SHA256の暗号の組み合わせが使用されます。

警告:

XenServerプールと通信するすべての管理APIクライアントおよびアプライアンスにTLS 1.2との互換性があることを確認してから、[TLS 1.2のみ] をクリックしてください。