Proxmox VEでのKVM vSocketの設定(EA)

Prev Next

注: これは限られたリリースでのみ利用可能な早期利用 (EA) 機能です。 詳細については、Cato Networks担当者にご連絡いただくか、ea@catonetworks.comに電子メールを送信してください。

概観

この記事では、Proxmox Virtual Environment (Proxmox VE) で管理されているホストにKVM vSocketをデプロイする方法について説明します。 Proxmox VEはQEMU/KVMを使用しているため、vSocketのデプロイメントモデルは標準のLinux KVM (libvirt/QEMU) ホストと同じです。vSocketはQCOW2イメージとして配布され、cloud-initでブートストラップされます。 違いは管理レイヤーにあり、virt-install または virsh を使用する代わりに、ProxmoxのウェブUIから仮想マシンを作成して管理します。

KVM vSocketの一般的な要件、cloud-init user-data の設定、Cato Management Application (CMA)でのサイト作成フローについては、KVM vSocketサイトの設定を参照してください。

Proxmox VEにKVM vSocketをデプロイする主なステージは次の通りです。

  1. CMAでvSocketサイトを作成し、シリアル番号(S/N)をコピーします。
  2. QCOW2イメージをダウンロードして、cloud-initシードISOを生成します。
  3. QCOW2イメージとシードISOをProxmoxストレージにアップロードします。
  4. ProxmoxのウェブUIで、UEFIファームウェアとvirtioデバイスを使用してVMを作成します。
  5. VMにシリアルポートと追加のネットワークインタフェースを追加します。
  6. VMを開始し、vSocketがCMAに接続されていることを確認します。

Proxmox VEでのKVM vSocketのプロビジョニング準備

KVM vSocketを作成してCato Cloudに接続する準備のための前提条件は次の通りです。

  • KVM(ハードウェア仮想化)が有効になっているProxmox VEホスト、およびゲスト用のUEFI(OVMF)サポート。
  • ProxmoxホストCPUはHaswellクラスのアーキテクチャまたはそれ以降のものです。
  • Cato NetworksのリポジトリからダウンロードされたKVM vSocket用のQCOW2イメージ。
  • 事前にサイトのシリアル番号を使用して生成された cloud-init シード ISOです(cloud-init シード ISO の作成を参照)。
  • シードISOを生成するためのツール(例:mkisofsまたはgenisoimage)。
  • vSocketのWAN1インタフェース用のインターネット接続と公開DNSサービス。
  • WAN、LAN、およびオプションの管理インタフェースを関連するネットワークに接続するProxmoxブリッジ(例:vmbr0)。
  • vSocketに最大4つのネットワークインターフェース(NICs)を接続してください。 4個以上のNICを接続すると、vSocketに問題が発生する可能性があります.

注: ハードウェアNICパススルー(PCIパススルー)とSR-IOVはサポートされていません。

推奨VM設定

設定 推奨値
マシンタイプ q35
BIOS / ファームウェア OVMF (UEFI)、EFIディスクなし
CPUタイプ ホスト(Haswellクラスのアーキテクチャまたは新しいホストCPU)
vCPU 2以上
メモリ 4096 MB以上
主ディスク インポートされたQCOW2イメージ、VirtIOブロックバス(8 GBの薄型ストアバック)
Cloud-initメディア CD-ROMドライブとして接続されたシードISO
NICモデル VirtIO (準仮想化)
NICの数 2から4インタフェース

Proxmox VEでKVM vSocketをデプロイするためのベストプラクティス

  • Cato QCOW2イメージからvSocketを直接デプロイして、ハードウェアの互換性の問題を避け、必要なハードウェア設定が正しく適用されることを確認します。
  • オリジナルのQCOW2イメージの未使用のコピーを保持し、各vSocket VMに対して新しいコピーをインポートします。 cloud-initシードISOは最初の起動時にのみ実行されます。 構成が正しく適用されていない場合、部分的に初期化されたVMを修正するよりも、クリーンなイメージから再作成する方が通常は速いです。
  • 最初の起動前にVMのProxmoxスナップショットを取得し、ブートストラップ構成が正しくない場合は初期状態に戻せるようにします。
  • 各vSocket VM(HAペアの各メンバーを含む)に対して、関連するサイトのシリアル番号が含まれるユニークなシードISOを作成してください。
  • ネットワークおよびディスクデバイスの両方にvirtioを使用します。NICエミュレーションは不要です。
  • VMが完全に構成されるまで開始しないでください。 cloud-initシードISOは初回の起動時にのみ読まれます。

KVM vSocketサイトの作成

CMAでvSocket KVM接続タイプの新しいサイトを作成し、サイト設定 > ソケットからシリアル番号(S/N)をコピーします。 このシリアル番号(ハイフンを含む)をcloud-initのuser-dataファイルに入力する必要があります。

全手順については、KVM vSocketサイトの設定をご覧ください。

Proxmox VEでのvSocket VMの展開

ステップ1 – Proxmoxネットワークの準備

ProxmoxホストがvSocketに接続する各インタフェースにLinuxブリッジを持っていることを確認します。

  • WAN1 – インターネット接続と公開DNSサービスへのアクセスを持つブリッジ(例:vmbr0)。 これは必須インタフェースです。
  • LAN1 – vSocketの背後にあるLANセグメント用のブリッジ。 これは必須インタフェースです。
  • MGMT(オプション):vSocketへの管理アクセス用のブリッジ。
  • WAN2(オプション):2番目のWANリンク用のブリッジ。

ネットワークデバイスでVLANタグを使用して、同じブリッジを共有するLANセグメントを分けることができます。

HA展開では、両方のvSocketのLANインタフェースが同じブロードキャストドメイン(同じブリッジおよびVLAN)にある必要があります。

ステップ2 – cloud-initシードISOの作成

KVM vSocketはNoCloudシードISOを使用してcloud-initでブートストラップされます。 1つのファイルを含むディレクトリを作成します。

TMPDIR=$(mktemp -d)
touch $TMPDIR/user-data

user-data をサイト設定で満たします。 ファイルは、シンプルなTOMLフォーマット(key = value形式)を使用し、コメントがサポートされています。 シリアル番号は必須です。インターフェースごとのネットワーク設定はオプションです(インターフェースのデフォルトはDHCP)。

# 必須: CMAサイトからのシリアル番号(サイト設定 > ソケット)
serial = "XXXX-XXXX-XXXX-XXXX"

# オプションのインターフェースごとのネットワーク設定。
# 各インターフェースに対して[[network]]ブロックを繰り返します。名前はユニークで
# 実際のインターフェース(WAN1、WAN2、LAN1、...)と一致する必要があります。

[[network]]
name = "WAN1"                       # 必須
addressing_type = "Static"          # "Static"または"DHCP"
address = "192.168.50.201"          # Staticの場合は必須
netmask = "255.255.255.0"           # Staticの場合は必須
default_gw = "192.168.50.1"         # Staticの場合は必須
primary_dns = "192.168.50.1"        # Staticの場合は必須
secondary_dns = "8.8.4.4"           # オプション

# DHCPがデフォルトなので、このブロックはオプション/冗長です。
[[network]]
name = "WAN2"
addressing_type = "DHCP"

ファイルをcidataとラベル付けされたシードISOにパックします。

pushd $TMPDIR
mkisofs -output seed.iso -volid cidata -joliet -rock user-data
popd

このISOを使用するvSocket VMを識別する名前(例:seed-<site-name>.iso)を付けることで、VMを作成する際に正しいISOを選択できます。

ステップ3 – ファイルをProxmoxストレージにアップロード

  1. VMがホストされているノードのISOイメージストレージ(例えば、localストレージ、ISO Imagesセクション)にシードISOをアップロードします。
  2. ストレージのImportセクションにvSocket QCOW2イメージをアップロードします。 ストレージはImportコンテンツタイプが有効になっている必要があります。

各vSocket VMにはQCOW2イメージの新しいコピーを使用してください。

スクリーンショットのプレースホルダー – ProxmoxストレージにシードISOをアップロード中です。

スクリーンショットのプレースホルダー – QCOW2イメージのアップロードまたはインポート中です。

ステップ4 – VMの作成

ProxmoxのウェブUIでCreate VMをクリックし、ウィザードのタブを次のように構成します。

vSocket VMを作成するには:

  1. GeneralタブでNodeを選択し、その後vSocket VMのVM IDNameを入力します。 冗長化に追加 チェックボックスをクリアしたままにしてください(高可用性 (HA) デプロイメントを参照)。

  2. OSタブで。

    1. **Use CD/DVD disc image file (iso)**を選択します。
    2. StorageISO imageの部分で、このvSocket用に作成したシードISOを選択します。
    3. Guest OSの部分では、デフォルト値(TypeLinuxVersion6.x - 2.6 Kernel)を維持します。

    スクリーンショットのプレースホルダー – OSタブでクラウドインストールシードISOを選択中です。

  3. Systemタブで。

    1. BIOSに対して**OVMF (UEFI)**を選択します。
    2. Add EFI Diskチェックボックスのチェックを外します。 vSocketのイメージにはEFIディスクは必要ありません。
    3. Machineで、q35を選択します。
    4. デフォルトのSCSI Controller (VirtIO SCSI single)を保持します。

    スクリーンショットのプレースホルダー – UEFIファームウェアとAdd EFI Diskの選択解除。

  4. Disksタブで。

    1. デフォルトのディスク(virtio0)を削除します。
    2. Importをクリックし、Select ImageからvSocket QCOW2イメージを選択します。
    3. Bus/Deviceで、VirtIO Blockを選び、ディスクのTarget Storageを選択します。

    スクリーンショットプレースホルダー – デフォルトディスクの削除。

    スクリーンショットプレースホルダー – QCOW2イメージをVMディスクとしてインポート。

  5. CPUタブで、少なくとも2つのCoresを設定し、Typeにはhostを選択します。

    スクリーンショットのプレースホルダー – CPUコアとホストCPUタイプ。

  6. Memoryタブで、少なくとも4096MBを入力します。

  7. Networkタブで、最初のネットワークデバイス(net0)を構成します。 このインタフェースはvSocketのWAN1インタフェースです。

    1. Bridgeで、インターネットに接続されたブリッジを選択します。
    2. Modelで、**VirtIO (paravirtualized)**を選択します。
    3. オプションで、Firewallのチェックボックスのチェックを外します。
  8. Confirmタブで、Start after created が選択されていないことを確認し、Finish をクリックします。

重要! VMが完全に構成されるまで開始しないでください。 cloud-initシードISOは初回の起動時にのみ読まれます。

ステップ5 – シリアルポートと残りのインターフェースの追加

VMが作成された後、VMのハードウェアセクションから残りのハードウェアを追加します。

VMハードウェア構成を完了するには:

  1. Add > Serial Portをクリックし、シリアルポート0(serial0)を追加します。 シリアルポートはvSocketへのコンソールアクセスに使用されます。
  2. Add > Network Deviceをクリックし、LAN1インターフェースを追加します。
    1. Bridgeで、LANブリッジを選択します。
    2. Modelで、**VirtIO (paravirtualized)**を選択します。
    3. オプションで、VLAN Tagを入力して、同じブリッジを使用するLANセグメントを分けます。
  3. 各追加インターフェース(管理またはWAN2)に対して前のステップを繰り返し、合計で4つのインターフェースまで追加できます。

ネットワークデバイスは順番に基づいてvSocketインタフェースにマップされます。net0 はWAN1、net1 はLAN1、それ以降のデバイスはオプションのインターフェースです。

スクリーンショットプレースホルダー – シリアルポートの追加。

スクリーンショットプレースホルダー – 追加のネットワークデバイスの追加。

スクリーンショットプレースホルダー – vSocket VMの完了したハードウェアリスト。

ステップ6 –(推奨)スナップショットを取得

初回起動前に、VMのSnapshotsセクションでTake Snapshotをクリックし、初期状態のスナップショットを作成します(例:pristine)。 初回起動構成が正しくない場合、VMを再作成する代わりにこのスナップショットに戻ることができます。

スクリーンショットプレースホルダー – 初期VM状態のスナップショットの取得。

ステップ7 – VMの開始

VMを開始します。 初回の起動時に、vSocketはシードISOからの設定を読み取り、Cato Cloudへの登録を開始します。

vSocketをCMAに接続する

CMAはvSocketを自動的に検出し、シリアル番号(cloud-inituser-dataから取得)を使用してサイトに接続します。 登録するには、WAN1インターフェースがインターネット接続と公開DNSへのアクセスを持ち、Cato CloudおよびCMAに到達できるようにする必要があります。

  • WAN1がDHCP経由で動的IPアドレスを受け取ると、vSocketは自動的にCato Cloudへの登録を開始します。
  • DHCPが利用できない場合、cloud-inituser-dataでWAN1の静的IPアドレスを設定します(ステップ2を参照)。
  • デフォルトでは、WAN2インターフェースは無効化されており、vSocketは登録にのみWAN1を使用します。

ブートプロセスと登録を追跡するために、Proxmox web UIのVM内のConsoleセクションを使用します。 vSocketは、起動出力をシリアルコンソールに送信するため、この出力を見るには、ハードウェア > 表示 > グラフィックカードシリアルターミナル0に設定します。

冗長化の展開

HAは物理的なHAペアのように振る舞い、2つのKVM vSocket間でVRRPを使用します。 これはProxmoxクラスタHA機能(HAに追加オプション)とは別であり、別のノードでVMを再起動し、vSocketのHAには使用されません。

  • 各QCOW2イメージのコピーとそれぞれのシードISOを持つ2つのvSocket VMを展開します(各々にプライマリまたはセカンダリソケットのシリアル番号を付けて)。
  • 両方のVMのLANインタフェースは、VRRPが動作するように同じブロードキャストドメイン(同じブリッジとVLANタグ)内にある必要があります。 VMが異なるProxmoxノードにある場合、LANブリッジは同じレイヤー2セグメントに接続されている必要があります。
  • CMAでサイトにセカンダリソケットを追加します。 2つのメンバーはHAペアを形成し、状態と健全性を交換し、製品のHA設計に従ってフェイルオーバーします。
  • HAの健全性と状態はCMAで視覚化できます。

追加のvSocket VMの展開

同じProxmoxホストまたはクラスタ上で複数のvSocket VMを実行するには:

  • 各VM用にクリーンなQCOW2イメージをインポートします。
  • 関連サイトのシリアル番号を持つ新しいシードISOを生成します。
  • ユニークなVM名とVM IDを使用します。
  • 分離が必要な場合は、別々のLANブリッジまたはVLANタグを使用します。

vSocket VM設定の変更

新しい設定がサポートされた値を使用する場合、VM設定を変更できます。 変更を有効にするためにvSocket VMを再起動します。

次のVM設定を変更できます:

  • CPU
  • メモリ
  • ネットワーキング、例えばネットワークインタフェースの追加または削除

トラブルシューティング

VMが起動しましたが、vSocketは登録されていません。

  • シードISOがCD-ROMとして接続されていることを確認してください。
  • ISOにuser-dataファイルが含まれていることを確認してください。
  • serialの値がCMA内のサイトのシリアル番号と一致していることを確認してください。
  • WAN1がインターネットと公開DNSサービスにアクセスできることを確認してください。
  • 最初のネットワークデバイス(net0)が意図したWANブリッジに接続されていることを確認してください。

cloud-init構成への変更が無視される

vSocketブートストラップは最初のブートのみ行われます。 VMが初期化された後でuser-dataを変更した場合、その変更は既存のブートディスクに適用されません。 初期状態のスナップショットにロールバックするか、QCOW2イメージのクリーンコピーと新しいシードISOでVMを再作成してください。

コンソール出力はありません

  • シリアルポート(serial0)がVMに追加されていることを確認してください。
  • ウェブUIコンソールでシリアル出力を表示するには、ハードウェア > ディスプレイ > グラフィックカードシリアル端末0 に設定します。

ネットワークが期待通りに動作しない

  • 各ネットワークデバイスが接続されているブリッジを確認してください。
  • VM設定でネットワークデバイスの順序(net0はWAN1、net1はLAN1)を確認してください。
  • user-dataファイルの[[network]]セクションがDHCPまたは静的設定を使用していることを確認してください。

関連リソース記事