仮想ネットワークの運用
データセンターに仮想ネットワークが構成された後の Cockpit の役割は、デプロイメントとデータセンターの状態を常に同期させることです。データセンターに属するすべてのホストがメンバーであり、すべてのメンバーが健全であり、すべてのホストが互いを把握している状態を保ちます。このページでは、その運用管理について説明します。
誰がメンバーか
データセンターの「仮想ネットワーク」タブにあるメンバーテーブルには、データセンターツリー内のホストごとに 1 行ずつ表示されます。各行には以下が含まれます。
| 項目 | 意味 |
|---|---|
| ロール (Role) | central は OVN データベースを実行します(Vapor ネイティブのみ)。chassis はファブリック上のハイパーバイザーです。 |
| Encap IP | このホストの Geneve トンネルが使用するアドレス。 |
| ステータス (Status) | synced — 参加済みで健全。pending — 適用処理中。error — 前回の適用が失敗(理由を表示)。excluded — 意図的に除外(理由を表示)。 |
excluded は Kube-OVN モードでのみ発生し、kube-ovn ノードでないホストや OVN クライアントツールを持たないホストに適用されます。除外されたホストには何も適用されず、デプロイメントのステータス計算にも含まれず、ドリフトとしても扱われません。原因を解消してから Sync を実行して参加させてください。
デプロイメント自体のステータスはメンバーの状態から導かれます: 参加メンバー全員が同期されている場合は active、一部のみ同期されている場合は partial、まったく同期されていない場合は error となります。
ホストの参加、移動、離脱
Cockpit はメンバーシップをインベントリツリーと自動的に連動させます。
- データセンターに追加されたホスト — 直下、フォルダー内、またはいずれかのクラスター内に追加されたホストは、要求(claim)および同期が行われると直ちにシャーシとして登録されます。登録に失敗した場合でもホストは追加され、そのメンバー行にエラーが表示され、次回の Sync で再試行されます。
- 外部からデータセンターへ移動されたホスト も同様に登録されます。
- データセンターから外へ移動されたホスト は、先に無効化されます。論理スイッチ上にあるそのホストのすべての仮想マシンインターフェースが切断されるため、Cockpit は確認を求めます。事前にそれらの VM を移動するか停止してください。
- 新しいホストがセントラルになることはありません。 RAFT クォーラムの変更は明示的な判断が必要なため、新しいホストは常にシャーシとして参加します。セントラルに昇格させるには、central ロールを指定して メンバーの追加 (Add member) を使用します。
データセンターとデプロイメントの内容が一致しない場合(メンバーからホストが欠落している、メンバーがデータセンター内に存在しない、またはメンバーが同期されていない場合)、**ドリフト(Drift)**バナーが表示されます。Cockpit はこれを毎分チェックし、不一致が続く間はデプロイメントを partial とマークします。Sync を実行して調整・解消してください。
単一ホストの削除
ホスト自身のページ(Host › 設定 › ネットワーク › 仮想ネットワーク)の OVN デプロイメントから削除 を実行すると、そのホスト 1 台のみをファブリックから除外できます。Cockpit は Vapor を介してそのホスト上の OVN を無効化し、更新されたメンバーリストを他のすべてのホストへ再配布します。この場合も同様に確認が求められます。そのホスト上の論理スイッチに接続された VM インターフェースは通信できなくなります。
同期 (Sync)
データセンタータブの Sync は、1 回の処理で 3 つのことを実行します: 未同期の全メンバーへの設定の再適用、完全なメンバーリストの全メンバーへの再配布、そしてドリフトとステータスの再計算です。
2 つ目の処理は、単なる台帳管理ではありません。OVN のデータベースクライアントは現在のクラスターリーダーとのみ通信するため、リーダーシップが移った際にも動作し続けるには、各ホストがすべてのセントラルを把握している必要があります。したがって、メンバーシップの変更(セントラルの追加や削除)は、変更されたホストだけでなく、すべてのホストにプッシュされます。Sync は、障害発生後にその配布を強制するための手段です。
Sync は、セントラルがどのような状態であってもデータベースファイルを上書き・置換することはありません。その許可は、アクティベーション時にユーザーによって一度だけ与えられるものです。
無効化 (Deactivate)
データセンタータブの Deactivate は、すべてのメンバーをファブリックから除外し、Cockpit からデプロイメントを削除します。各ホストで何が起こるかはモードによって異なります。
| モード | 各ホストでの動作 |
|---|---|
| Vapor-native | シャーシが解放されます: ovn-controller が停止し、ホストはデータベースアドレスを忘れます。セントラル上のデータベースファイルはそのまま残されます — それらには論理構成全体が含まれており、削除の判断は Cockpit ではなくホストの所有者が行うべきものだからです。 |
| External | 同様にシャーシが解放されます。外部データベースには一切手を触れません。 |
| Kube-OVN | ホスト上には何も手を触れません。CNI がシャーシを所有しており、Cockpit は接続情報のみを破棄します。Pod はネットワークを維持します。 |
無効化後、ファブリックのスイッチは Cockpit のインベントリに一時的に残ります。一時的な読み取りエラーによって実際の状態が誤って削除されるのを防ぐため、ホストの OVN インベントリは 2 回連続 して非アクティブと報告された後にのみ削除されます。数分以内に表示から消去されます。
後から Vapor ネイティブのデータセンターを再アクティブ化する場合、事前チェックでセントラルの既存データベースが検出され、依然としてクラスターを形成しているためそのまま保持されます。論理構成もデータベースと一緒に復元されます。
デプロイメントが partial になった場合
partial は、ファンアウト処理が完了したものの、一部のホストで適用が完了しなかったことを意味します。各ホストのエラー内容を確認してください。失敗したチェックまたはステップが表示されます。一般的な原因と対処法は以下の通りです。
適用時にホストに接続できなかった。 接続を復旧させてから Sync を実行します。
参加しようとしたセントラルで「既存クラスターメンバーへの到達性」が失敗した。 最初のセントラルはブートストラップされましたが、他のセントラルが参加するためのポートが応答していません。これは通常、最初のセントラルのデータベースが実際には稼働していないことを意味します。そのホストの Host › 設定 › ネットワーク › 仮想ネットワーク および journalctl -u ovn-ovsdb-server-nb を確認してください。起動したら、Sync を実行して残りを参加させます。
「OVN クライアントツールの欠如」または「kube-ovn ノードではない」。 ホストは失敗ではなく除外(excluded)されています。メンバーシップを参照してください。
セントラルは適用されたが登録されなかった。 Vapor は設定を受け入れましたが、ホストがサウスバウンドデータベースに存在しません。ホスト上で ovn-controller が稼働していること、およびその ovn-remote がデプロイメントのサウスバウンドアドレスを指していることを確認してください。ホストの Vapor ページで両方を確認できます。
MTU の警告を承認した結果、VM がトラフィックを通過できない。 接続してアドレスを取得できるものの、小さなパケットを超えるサイズの通信が停止します。これは Geneve のヘッドルーム不足が原因です。各ホストのカプセル化インターフェースのアンダーレイ MTU を 1558 以上に引き上げるか、ゲストの MTU を 1442(1500 バイトアンダーレイの場合)に設定してください。
Cockpit より下層の問題(論理スイッチは存在するが転送されない、DHCP が応答しない、トンネルが確立しないなど)については、ホストレベルの診断を確認してください: Vapor: 仮想ネットワークのトラブルシューティング。特に、OVN のノースバウンドデータベースが設定を受け入れたものの ovn-controller がコンパイルを拒否した場合、そのエラーはホスト上の /var/log/ovn/ovn-controller.log にしか出力されません。
Cockpit が行うこと、行わないこと
責任の境界を明確にしておくことは有益であり、これは意図的に設計されています。
- Cockpit は、アクティベーション、状態の同期維持、メンバーシップの再配布、登録の検証、およびインベントリの表示を行います。
- Cockpit は、アクティベーション時の明示的な確認なしにデータベースファイルを置換することはなく、通常の同期中にセントラルのデータベースを再起動することもなく、Kube-OVN モードではホストに一切手を触れません。
- ネットワークオブジェクト自体(VPC、スイッチ、ルーター、ACL、ロードバランサー)の作成と編集は、Vapor ホストページで行われます。Cockpit はメンバーからそれらを読み取って使用します。