12.2.2. 負荷の高いワークロード向けのライブマイグレーション設定
メモリーのダーティー率が高く、負荷の高いワークロード (データベース処理など) を実行している仮想マシンを移行する場合、移行を完了するにはより高い帯域幅が必要です。
ダーティー率が高すぎる場合、あるノードから別のノードへの移行は収束しません。これを防ぐには、ポストコピーモードを有効にします。
ポストコピーモードは、定義されたタイムアウト内に最初のプレコピーフェーズが完了しない場合にトリガーされます。ポストコピーの期間において、必要最小限のメモリーページの転送中に仮想マシン CPU はソースホスト上で一時停止します。その後、仮想マシン CPU が宛先ホスト上でアクティブになり、実行時に残りのメモリーページが宛先ノードに転送されます。
openshift-cnv namespace にある HyperConverged カスタムリソース (CR) を更新して、負荷の高いワークロードのライブマイグレーションを設定します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。
手順
HyperConvergedCR を編集し、負荷の高いワークロードを移行するために必要なパラメーターを追加します。$ oc edit hyperconverged kubevirt-hyperconverged -n openshift-cnvExample
apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: openshift-cnv spec: liveMigrationConfig: bandwidthPerMigration: 0Mi completionTimeoutPerGiB: 150 parallelMigrationsPerCluster: 5 parallelOutboundMigrationsPerNode: 1 progressTimeout: 150 allowPostCopy: true各項目の説明:
bandwidthPerMigration-
各移行の帯域幅をバイト/秒単位で指定します。デフォルトは
0で、無制限です。 completionTimeoutPerGiB-
移行が完了しない場合に移行がキャンセルされ、ポストコピーモードが有効になっている場合にトリガーされるまでの時間を指定します (メモリー 1 GiB あたりの秒数)。移行プロセスの早い段階でポストコピーモードをトリガーするには、
completionTimeoutPerGiBを減らします。また、移行プロセスの後半でポストコピーモードをトリガーするには、completionTimeoutPerGiBを増やします。 parallelMigrationsPerCluster-
クラスター内で並行して実行されるマイグレーションの数を指定します。デフォルトは
5です。負荷の高いワークロードを移行する場合は、parallelMigrationsPerCluster設定を低くします。 parallelOutboundMigrationsPerNode- ノードごとの送信マイグレーションの最大数を指定します。負荷の高いワークロード用に、ノードごとに仮想マシンを 1 つ設定します。
progressTimeout- メモリーコピーの処理が進まなかった場合に、移行がキャンセルされるまでの時間を秒単位で指定します。大きなメモリーサイズで負荷の高いワークロードを実行する場合は、このパラメーターを増やします。
allowPostCopy- ポストコピーモードが有効化されているかどうかを指定します。ポストコピーモードを有効化すると、仮想マシンが負荷の高いワークロードを実行していて、メモリーのダーティー率が高すぎる場合でも、あるノードから別のノードへの移行を収束させることができます。ポストコピーモードを有効にするには、allowPostCopy を true に設定します。
- オプション: メインネットワークがビジー状態で移行できない場合は、移行専用のセカンダリーネットワークを設定します。
ポストコピーモードは転送中のパフォーマンスに影響を与える可能性があるため、重要なデータや不安定なネットワークでは使用しないでください。