page icon

Xeon E5-2682 v4 + Hyper-Vで仮想化基盤を構築した話

 

もっと柔軟にサーバを作りたい

個人的に使うサーバ機能のセルフホスティングや友人向けに外部へ公開するゲームサーバ、Botなどを運用するにあたり自宅サーバを所有している。今までOS直インストールにソフト直インストールという方式を採っていたが次のような問題点があった
  • 新しい環境のセットアップに伴う初期化、環境再構築がとても面倒
  • 必要な時に必要なスペックだけ寄せるのが金銭的に困難
これらの問題を「直インストール運用の自宅サーバを仮想化基盤にする」ことで解消するべく計画を開始

新サーバ機の構成

転がってたパーツをかき集め安ケースに組み込んだ初代サーバ
転がってたパーツをかき集め安ケースに組み込んだ初代サーバ
これまで使用していたサーバ機はよくある古いデスクトップ機をそのまんまサーバ運用に転用するもので、そのマシンは6C6Tのi5-8400とメモリ16GBを持つ構成である
仮想化においてはCPUのコア数もメモリもガン積みした方がいいのでスペックの増強を検討
アリエクで調達した謎マザーとCPU+メモリセット
アリエクで調達した謎マザーとCPU+メモリセット
CPUはサーバ用途に限って言えば高い周波数を持つ必要はないため古い世代のXeonに目をつけ、アリエクの海を探索した結果Xeon E5-2682 v4(16C32T)を入手。今回買った商品はマザーボードとメモリ(32GBでECC)もセットで13,000円ちょっとでとても安い
LSI SAS 9207-8i
LSI SAS 9207-8i
他にもHBAカードを取り寄せ。ケースに標準搭載されているHBAカードを今まで使用していなかった(といううか使えなかった)が、本物の心臓Xeonが備わることもあり、ガチ化(?)のためについでに使えるようにする
残りはその辺に転がってるパーツをかき集めて組み上げ
2UラックケースSilverStone RM21-308に一通り収めた図
2UラックケースSilverStone RM21-308に一通り収めた図
CPU:Xeon E5-2682 V4
今回の主役みたいなもの。だいぶ古いけど2024年現在で14nmなら現役だと思っている
メモリ:32GB ECC
マザーボード買ったら付属でついてきたやつ。空きスロットはまだ2スロットある(のちに32GB足されて4本×16GBの合計64GB化)
ホストOS用ストレージ:Crucial MX500(1TB)
旧メイン機から剝ぎ取った。そこそこ使ったけどマイクロンなので信用している
ゲストOS用ストレージ:SUNEAST SE900(1TB)
その辺に転がってた。信頼性は謎
HBAカード:LSI SAS 9207-8i
HDDはその辺に転がっていたもの。本格運用するならWDの赤いやつとか調達したい

組み立て風景

Xeon E5-2682 V4の上に載る300円クーラーとメモリ
Xeon E5-2682 V4の上に載る300円クーラーとメモリ
マザーボードのセットにAMDの純正クーラーが装備できるマウンタが付属するということで、使ってないRyzen 5 3600のリテールクーラーを利用するのが当初の計画であった
いざつけようとすると手持ちのプッシュピン式のCPUクーラーは装着できないことが判明。LGA1151に対応したCPUクーラーを秋葉原最終処分場で調達しことなきを得る
旧メイン機から剥ぎ取られたNVIDIA RTX A2000
旧メイン機から剥ぎ取られたNVIDIA RTX A2000
一通り組み上げて電源ONしようとしたところで、マザーに映像出力用のポートが何もないことに気がつき急遽A2000を動員。無事映像が出力されたのでホストOSとなるWindows Server 2022(評価版)をセットアップ
そこにXeonがあることを示すCPU-Zとタスクマネージャ(メモリ利用率が高いのは運用開始後であるため)
そこにXeonがあることを示すCPU-Zとタスクマネージャ(メモリ利用率が高いのは運用開始後であるため)
無事にインストールが済んだのでHyper-V、ゲストOS、別マシンのリバースプロキシ、ネットワーク周りなど設定を作る

新構成のつなぎ込み

ネットワーク系

雑な概念図。赤色が引き込み時に意識する要素で緑色が出すとき意識する要素
雑な概念図。赤色が引き込み時に意識する要素で緑色が出すとき意識する要素
  1. ドメインとIPアドレスの紐づけ
    1. サーバでDDNSクライアントを用意する。プロパイダが払い出すIPアドレスが変更されたとき、自動的にDNSレコードを更新する
  1. 外からのリクエストをVMまで導く
    1. まずNATでリクエストの種類に応じて転送先のアドレスを振り分ける。Web系ならリバースプロキシ、それ以外ならVM直送
    2. リバースプロキシへ送られたWeb系のリクエストにはそれぞれにサブドメインを割り当てて別々のVMへ振り分ける
  1. VMからの応答を外へ出す
    1. 基本的にDDNSクライアントが通知するグローバルIPアドレスと同じ送信元アドレスとなるようルーティングする(PPPoEとIPoEを併用する環境であるため)

VMの作成と設定

ホストOSのHyper-Vで稼働している4台のVM。安定している
ホストOSのHyper-Vで稼働している4台のVM。安定している
  1. VMを作成して起動する
    1. コア数・メモリ容量・仮想ディスクを割り当てる。8コア16/256GBとか、2コア2/64GBなど
    2. 好きなOSのイメージを用意する。LinuxとかWindowsとか
  1. 起動したVMで環境を作る
    1. OS側でポート開放やIPアドレスの設定などをする
    2. 必要なフレームワーク入れたりアプリを導入する
  1. 遊ぶ

ばーちゃらいぜーしょんすごい

下から仮想化基盤と化した2Uラック、プロキシの大役を引き受けたThinkCenter、RTX1210とその他
下から仮想化基盤と化した2Uラック、プロキシの大役を引き受けたThinkCenter、RTX1210とその他
今回の改修で任意の性能のサーバを作れるようになり無駄なく柔軟に複数のサーバを持てるようになった。VM単位で環境を用意できるようになったので削除も複製も新環境の構築も楽になったしで良いことしかない
懸念していた仮想化によるパフォーマンスの低下も全く感じない。今回の環境更新で一番影響が大きそうなゲームサーバ(Minecraft spigot server)も、利用者からは依然と変わらず遊べているとのことで一安心である
ちなみに消費電力はワットチェッカーで計測したところ80W~90W程度で推移している。月当たりの電気代に換算すると2,000円ちょいなので複数台のサーバを動かしていると思えばまあ安い