GMKtec ミニPCでProxmoxクラスターを構築

Table of Contents

先日、GMKtecのミニPC(M7 Ryzen 7 PRO 6850H)を購入して、既存のProxmoxサーバと組み合わせて2台構成のクラスターを構築しました。

今回はその過程を、購入したミニPCのハードウェアの紹介から、Proxmoxのインストール、クラスター構築、そして既存VMのライブマイグレーションまで紹介しようと思います。

1. 新規ハードウェアの紹介

今回購入したのは、GMKtecのM7 Ryzen 7 PRO 6850Hです。 楽天市場でセールがやっていたので購入しました。(セールで買うのがデフォルトみたいな感じですが)

スペックは大体こんな感じです:

  • CPU: AMD Ryzen 7 PRO 6850H (8コア/16スレッド)
  • RAM: 32GB DDR5
  • Storage: 1TB NVMe SSD
  • Network: 2.5Gb Ethernet × 2

それでは早速開封していきましょう。

GMKtec M7の箱

コンパクトなパッケージに入っています。箱はちょっと凹んでいましたが、中身は綺麗です。付属品は電源アダプタとHDMI/USBケーブル類。

GMKtec M7の開封

筐体を開けてボードを確認してみました。

GMKtec M7のボード

コンパクトにまとまっていて、NVMeスロットが2つ(1つは空きスロット)、SO-DIMMスロットが2つ(16GB x2)あります。 SSDは最大4TBまで、メモリは最大64GBまで増設可能らしいので、足りなくなったら換装もできます。

ではProxmoxをインストール、、、といきたい所ですが、その前にBIOS設定だけ少しいじります。

BIOSのパフォーマンス設定

CPU Power Modeを “Performance” に設定して、電力効率や静音よりもパフォーマンスを優先する構成にしました。

2. Proxmoxのインストール

続いて、Proxmox VEをインストールしていきます。

執筆時点の最新バージョンは 9.0 でしたが、既存のProxmox Nodeが8.4で動いていたため、合わせて8.4をインストールします。 Proxmoxの公式ドキュメントを参考にして、こちらのページ からProxmox VE 8.4のISOイメージをダウンロードしました。

次に、Zennの記事を参考にして、balenaEtcherを使用してISOイメージをUSBメモリに書き込みます。

balenaEtcherでのISO書き込み

書き込んだUSBメモリをミニPCに刺して、Proxmoxインストーラーを起動します。

Proxmoxインストーラー起動画面

ひとまず memtest を実行しておきます。

memtest実行中
memtest完了

memtestが無事完了し、メモリに初期不良がないことを確認できました。

インストーラーでネットワーク設定やディスク設定を行い、Proxmoxをインストールします。

Proxmoxのネットワーク設定
Proxmox起動完了

無事にProxmoxが起動しました。 これで、同じLANに接続しているPCからHTTPSでProxmoxのWebインターフェースにアクセスできるようになります。

3. Proxmoxクラスターの構築

今回は既存のProxmox Node(pve01)と、今回追加する新規のNode(pve02)で2台構成のクラスターを構築します。

(VMネットワーク、管理ネットワークと書いてあるのはProxmox上のk8sクラスタで構築する予定のOpenStackの話なので、今回は気にしなくて大丈夫です。)

Before:

クラスター構成のbefore

AFTER:

クラスター構成のafter

3.1 既存 Node でのクラスター作成

まず、既存Node側でクラスターを作成します。 Proxmox Webインターフェースから「Datacenter」→「Cluster」→「Create Cluster」を選択し、Cluster Nameと使用するネットワークインターフェースを指定してクラスターを作成します。

クラスター作成画面
(クラスター作成時にスクリーンショットを撮り忘れたため、新規Node側でCreate Clusterを開いた画面を表示しています。)

クラスター作成が完了したら、「Cluster」→「Join Information」から新規Nodeを参加させるための情報を取得します。

Join Information画面

Join Information は base64 エンコーディングされた文字列のようだったので、デコードしてみると以下のような JSON でした。

{
  "ipAddress": "192.168.1.12",
  "fingerprint": "97:58:69:80:2C:42:08:67:F4:94:F7:C4:09:28:9E:FD:D5:69:23:EC:C7:57:76:3B:8D:C6:17:9A:A8:FA:43:29",
  "peerLinks": {
    "0": "192.168.1.12"
  },
  "ring_addr": [
    "192.168.1.12"
  ],
  "totem": {
    "cluster_name": "wakapi",
    "ip_version": "ipv4-6",
    "config_version": "2",
    "interface": {
      "0": {
        "linknumber": "0"
      }
    },
    "version": "2",
    "secauth": "on",
    "link_mode": "passive"
  }
}

既存Nodeのネットワークインターフェース情報や検証用のフィンガープリント、またクラスター内通信の設定などが含まれているのが分かります。

3.2 新規 Node の Join

新規Node側で「Cluster」→「Join Cluster」を開き、取得したJoin情報をペーストします。

Join Cluster画面

既存Nodeのrootユーザーパスワードやネットワークインターフェースを設定してJoinを実行します。

Joinが完了するとクラスターに2台のNodeが表示されており、クラスターが正常に構築されていることが確認できます。 画面左側のタブにも、2台のNodeが表示されています。

Join完了画面

4. ライブマイグレーション

せっかくクラスターが構築できたので、既存Nodeから新規NodeへVMのライブマイグレーションを試してみました。

ライブマイグレーションはVMを稼働させたまま別のNodeに移行する機能で、サービスをほとんど停止することなく筐体間でNodeを移動することができます。

ライブマイグレーション実行 その1
ライブマイグレーション実行 その2
ライブマイグレーション実行 その3

マイグレーションは数分で完了し、VMが新規Node上で動作することを確認できました。

マイグレーション中に対象VMにpingを打ち続けていましたが、3回だけパケットロスが発生していました。

5. まとめ

今回は、GMKtec M7を使った2台構成のProxmoxクラスター構築を行いました。 Proxmoxはインストールからクラスターの構築、マイグレーションまで直感的なUIで簡単に操作することができ、やっぱり非常に扱いやすいなと感じました。

今後は、Proxmox上のk8sクラスターでOpenStackを構築するなど、さらに色々と試してみようと思います。

最後まで読んでいただき、ありがとうございました。