分散リソーススケジューラー (DRS) と高可用性 (HA)
Cockpit は、パフォーマンスを最大化し、ハイパーバイザーのワークロードを均一化し、ホスト障害から仮想化サービスを保護するために、インテリジェントなリソーススケジューリングとクラスターレベルの高可用性(HA)機能を提供します。
1. 分散リソーススケジューラー (DRS)
DRS はクラスター内の物理ハイパーバイザーホスト間で CPU とメモリの使用率を動的に監視し、リソースの逼迫を解消し、ワークロードのバランスを維持するためにライブマイグレーションを自動実行します。
1.1 負荷超過しきい値の計算式
DRS は、以下の計算式を用いて物理ホストの負荷超過(オーバーロード)限界値を算出します:
$$\text{しきい値} = 90 - (\text{移行しきい値} \times 5)$$
移行しきい値は、1(保守的)から 5(積極的)の5段階で構成されます。しきい値の設定と計算される限界値は以下の通りです:
| 移行しきい値の設定 | 計算される超過しきい値 (CPU / メモリ) | 感度の振る舞い |
|---|---|---|
| 1 (保守的) | 85% | ホストが極端かつ長期にわたって飽和状態にある場合にのみ移行を実行します。 |
| 2 | 80% | 標準的な保守的設定。 |
| 3 (バランス) | 75% | デフォルトのバランス設定。 |
| 4 | 70% | 感度が高めの設定。 |
| 5 (積極的) | 65% | 高感度の設定。軽微な負荷不均衡でも移行をトリガーします。 |
1.2 DRS の自動化レベル
管理者は以下の3つの自動化レベルから選択できます:
- 完全自動 (Fully Automated): 不均衡がしきい値を超えると、DRS スケジューラーがライブマイグレーションを自動的に実行します。
- 一部自動 (Partially Automated): DRS スケジューラーが配置を評価し、移行の推奨案をタスク(Tasks)パネルに表示して管理者に判断を求めます。
- 手動 (Manual): 自動スケジューリングは無効化されます。ワークロードは管理者が手動で移行する必要があります。このモードでは、しきい値スライダーは無効になります。
1.3 コンピュート専用ライブマイグレーションの規則
DRS による移行は**コンピュート専用(仮想 CPU レジスタおよびメモリ状態のライブ転送)**です。スケジューラーは、実行中の仮想マシンの CPU レジスタと RAM 状態をネットワーク経由で移行先ホストにライブ転送します。
IMPORTANT
DRS の負荷分散の対象となるには、ターゲット VM の仮想ディスクがすべて共有データストア(NFS やクラスター化された OCFS2 など)上に配置されている必要があります。ローカルディスクを含む VM は DRS のスケジュール対象からスキップされます。ローカルストレージの移行(ブロック移行)は I/O オーバーヘッドが大きいため、自動ロードバランスの処理ループに適さないためです。
2. 高可用性 (HA)
クラスター高可用性(HA)は、物理ホストのクラッシュから仮想ワークロードを保護します。HA が有効な場合、Cockpit オケストレーターはホストのハートビート状態を監視し、ハイパーバイザーの障害発生時に、残存するホスト上で仮想マシンを自動的に再起動します。
2.1 構成パラメータ
- HA を有効にする: HA ウォッチドッグスケジューラーの有効/無効を切り替えます。
- フェイルオーバー遅延 (Failover Delay): ホストがオフラインと判定されてから、セカンダリホスト上で VM の再起動プロセスを開始するまでの待ち時間(秒単位、例:
15秒)。この遅延を設けることで、一時的なネットワーク分断時の二重起動(スプリットブレイン)を防ぎます。
2.2 コントロールプレーンの非アフィニティ(アンチアフィニティ)スケジュール
3ノードの Kubernetes クラスターコントロールプレーンなどの高可用性ワークロードに対して、DRS は厳格な非アフィニティルールを強制します:
- 初期の VM 作成時に、スケジューラーはホストの可用性を検証します。
- DRS は、3台の HA マスターコントロールプレーン VM を3台の異なる物理ハイパーバイザーホストに分散して配置します。
- ホストが故障した場合、HA エンジンは、影響を受けたマスター VM をまだマスター VM が稼働していない残存ホスト上で再起動させます。これにより、クォーラムの可用性を維持し、単一障害点(SPOF)による全機能停止を回避します。