9.2. ライブマイグレーションの設定


ライブマイグレーション設定を行い、移行プロセスがクラスターに負荷を与えないようにすることができます。

ライブマイグレーションポリシーを設定して、さまざまな移行設定を仮想マシンのグループに適用できます。

9.2.1. ライブマイグレーションの制限およびタイムアウトの設定

openshift-cnv namespace にある HyperConverged カスタムリソース (CR) を更新して、クラスターのライブマイグレーションの制限およびタイムアウトを設定します。

手順

  • HyperConverged CR を編集し、必要なライブマイグレーションパラメーターを追加します。

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv

    設定ファイルのサンプル

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      liveMigrationConfig:
        bandwidthPerMigration: 64Mi 1
        completionTimeoutPerGiB: 800 2
        parallelMigrationsPerCluster: 5 3
        parallelOutboundMigrationsPerNode: 2 4
        progressTimeout: 150 5
        allowPostCopy: false 6

    1
    各マイグレーションの帯域幅制限。値は 1 秒あたりのバイト数です。たとえば、値 2048Mi は 2048 MiB/s を意味します。デフォルト: 0 (無制限)。
    2
    移行がこの時間内に終了しない場合 (単位はメモリーの GiB あたりの秒数)、移行は取り消されます。たとえば、6 GiB メモリーを搭載した仮想マシンは、4800 秒以内に移行が完了しないとタイムアウトになります。Migration MethodBlockMigration の場合、移行するディスクのサイズは計算に含められます。
    3
    クラスターで並行して実行される移行の数。デフォルトは 5 です。
    4
    ノードごとのアウトバウンドの移行の最大数。デフォルトは 2 です。
    5
    メモリーのコピーの進捗がこの時間内 (秒単位) に見られない場合に、移行は取り消されます。デフォルトは 150 です。
    6
    仮想マシンが負荷の高いワークロードを実行しており、メモリーのダーティー率が高すぎる場合、あるノードから別のノードへの移行が収束しない可能性があります。これを防ぐには、ポストコピーモードを有効にします。デフォルトでは、allowPostCopyfalse に設定されています。
注記

キー/値のペアを削除し、ファイルを保存して、spec.liveMigrationConfig フィールドのデフォルト値を復元できます。たとえば、progressTimeout: <value> を削除してデフォルトの progressTimeout: 150 を復元します。

9.2.2. 負荷の高いワークロード向けのライブマイグレーション設定

メモリーのダーティー率が高く、負荷の高いワークロード (データベース処理など) を実行している仮想マシンを移行する場合、移行を完了するにはより高い帯域幅が必要です。

ダーティー率が高すぎる場合、あるノードから別のノードへの移行は収束しません。これを防ぐには、ポストコピーモードを有効にします。

ポストコピーモードは、定義されたタイムアウト内に最初のプレコピーフェーズが完了しない場合にトリガーされます。ポストコピーの期間において、必要最小限のメモリーページの転送中に仮想マシン CPU はソースホスト上で一時停止します。その後、仮想マシン CPU が宛先ホスト上でアクティブになり、実行時に残りのメモリーページが宛先ノードに転送されます。

openshift-cnv namespace にある HyperConverged カスタムリソース (CR) を更新して、負荷の高いワークロードのライブマイグレーションを設定します。

手順

  1. HyperConverged CR を編集し、負荷の高いワークロードを移行するために必要なパラメーターを追加します。

    $ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnv

    設定ファイルのサンプル

    apiVersion: hco.kubevirt.io/v1beta1
    kind: HyperConverged
    metadata:
      name: kubevirt-hyperconverged
      namespace: openshift-cnv
    spec:
      liveMigrationConfig:
        bandwidthPerMigration: 0Mi 1
        completionTimeoutPerGiB: 150 2
        parallelMigrationsPerCluster: 5 3
        parallelOutboundMigrationsPerNode: 1 4
        progressTimeout: 150 5
        allowPostCopy: true 6

    1
    各マイグレーションの帯域幅制限。値は 1 秒あたりのバイト数です。デフォルトは 0 で、無制限です。
    2
    この時間内に完了しない移行はキャンセルされ、ポストコピーが有効な場合はポストコピーモードがトリガーされます。この値は、メモリー 1 GiB あたりの秒数で測定されます。移行プロセスの早い段階でポストコピーモードをトリガーするには、completionTimeoutPerGiB を減らします。また、移行プロセスの後半でポストコピーモードをトリガーするには、completionTimeoutPerGiB を増やします。
    3
    クラスターで並行して実行される移行の数。デフォルトは 5 です。負荷の高いワークロードを移行する場合は、parallelMigrationsPerCluster 設定を低くします。
    4
    ノードごとのアウトバウンド移行の最大数。負荷の高いワークロード用に、ノードごとに仮想マシンを 1 つ設定します。
    5
    この時間内 (秒単位) にメモリーコピーが進捗しない場合、移行は取り消されます。この値は秒単位で測定されます。大きなメモリーサイズで負荷の高いワークロードを実行する場合は、このパラメーターを増やします。
    6
    メモリーのダーティー率が高い場合は、移行が確実に収束するように、ポストコピーモードを使用します。ポストコピーモードを有効にするには、allowPostCopytrue に設定します。
  2. オプション: メインネットワークがビジー状態で移行できない場合は、移行専用のセカンダリーネットワークを設定します。
注記

ポストコピーモードは転送中のパフォーマンスに影響を与える可能性があるため、重要なデータや不安定なネットワークでは使用しないでください。

9.2.3. 関連情報

9.2.4. ライブマイグレーションポリシー

ライブマイグレーションポリシーを作成して、仮想マシンまたはプロジェクトラベルによって定義された仮想マシンのグループにさまざまな移行設定を適用できます。

ヒント

ライブマイグレーションポリシーは、OpenShift Virtualization Web コンソールを使用して作成できます。

9.2.4.1. コマンドラインを使用したライブマイグレーションポリシーの作成

コマンドラインを使用してライブマイグレーションポリシーを作成できます。KubeVirt は、任意のラベルの組み合わせを使用して、選択した仮想マシン (VM) にライブマイグレーションポリシーを適用します。

  • sizeosgpu などの仮想マシンラベル
  • prioritybandwidth、または hpc-workload などのプロジェクトラベル

ポリシーを特定の仮想マシングループに適用するには、仮想マシングループのすべてのラベルがポリシーのラベルと一致する必要があります。

注記

複数のライブマイグレーションポリシーが仮想マシンに適用される場合は、一致するラベルの数が最も多いポリシーが優先されます。

複数のポリシーがこの基準を満たす場合、ポリシーは一致するラベルキーのアルファベット順に並べ替えられ、その順序の最初のポリシーが優先されます。

手順

  1. ライブマイグレーションポリシーを適用する仮想マシンオブジェクトを編集し、対応する仮想マシンラベルを追加します。

    1. リソースの YAML 設定を開きます。

      $ oc edit vm <vm_name>
    2. 設定の .spec.template.metadata.labels セクションで必要なラベル値を調整します。たとえば、移行ポリシーの目的で仮想マシンを production 仮想マシンとしてマークするには、kubevirt.io/environment: production 行を追加します。

      apiVersion: migrations.kubevirt.io/v1alpha1
      kind: VirtualMachine
      metadata:
        name: <vm_name>
        namespace: default
        labels:
          app: my-app
          environment: production
      spec:
        template:
          metadata:
            labels:
              kubevirt.io/domain: <vm_name>
              kubevirt.io/size: large
              kubevirt.io/environment: production
      # ...
    3. 設定を保存して終了します。
  2. 対応するラベルを使用して MigrationPolicy オブジェクトを設定します。次の例では、production というラベルが付けられたすべての仮想マシンに適用されるポリシーを設定します。

    apiVersion: migrations.kubevirt.io/v1alpha1
    kind: MigrationPolicy
    metadata:
      name: <migration_policy>
    spec:
      selectors:
        namespaceSelector: 1
          hpc-workloads: "True"
          xyz-workloads-type: ""
        virtualMachineInstanceSelector: 2
          kubevirt.io/environment: "production"
    1
    プロジェクトラベルを指定します。
    2
    仮想マシンラベルを指定します。
  3. 次のコマンドを実行して、移行ポリシーを作成します。

    $ oc create migrationpolicy -f <migration_policy>.yaml

9.2.5. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.