前のサーバはマイクラを始める前に構築したんですが、構築当初から2つのマイクラサーバ(今のAlicornとAvalon)を運営するつもりで設計していた訳ですが、マイクラサーバの運営1年目に入って次のフェーズを検討する上でリソースが足りなくなってきたので、サーバの構成の見直しを図りました。
構築後の全体の構成は図のような感じです。コンセプト的には、
今まで通り、サーバを仮想化して機能(リソース)を分割し、負荷分散。 ハードはそれなりにお金をかけているけど、ソフトウェア部分はタダ!(OSSを利用)ちなみにハードの部分も完全に入れ替えでは無く、過去のハードに追加する形を取ってるので、ゼロから作るよりもかなり安く済んでます。 [仮想化]各サーバの構成(OS部分)をなるべく同じにしてメンテナンス性の向上。監視機能が同じなので管理しやすくなってるのと、バックアップ/データシェアを統一の構造にしたので、バックアップ処理やデータ交換が楽になってます。 [CPU]Minecraftはシングルスレッドプログラムなので、CPUを増やしても意味が無いです。ただプラグインやOS処理を考えると基本的にはCPUを2つ割り当てれば十分です。ただ、昨今のCPUはハードウェアマルチスレッディング(Hyper Threadingとか)でCPU数を倍化してるので、1つのCoreに負荷がかかると共連れ的にもう一つのCoreの性能も落ちます。なので、Minecraftサーバへ割り当てるCPUは4つと考えてます。そう考えるとやはりCPU自体の速度では無く、Core数を増やす必要が出てくるので、今回はデュアルCPU構成にしました。物理CPU数=2、物理Core数=12、論理Core数=24(物理Core12×2スレッド)という数になってます。 [DISK]いわゆる円盤を使ったHDDに比べるとSSDは極端に故障率が低い(HDDは経験的に2~4年くらいで壊れてる気がする)ので、今回はミラーリングをやめました。ストライピングも物理ディスクの情報が見づらくなるのと故障率の高さから、基本的にRAID構成をやめてます。何より見た目上2本だった構成から、今回の構成変更&買い足しでディスクが6本になったので、パラレル処理性能が抜群に上がってます。ミラーをやめたから信頼性が下がるかというと、OS部分を仮想ディスクにしてジョブでバックアップしたりしてます。Minecraftはそもそも1時間毎にバックアップ/1日毎に外部保管してるので、壊れても最悪でも1日分巻き戻りで済むから、「我慢できるレベルの」信頼性低下になってる感じです。また、今回は仮想化ホスト以外は、LVM(LogicalVolumeManager)構成なので、ゲームを止めずにディスク間のデータ移動が可能です。さらにホットスワップ可能なベイにディスクを装填しているので、その気になればゲームを無停止でディスクの交換も出来るようになってます。 [NET]表ネットワーク(インターネットに繋がる側)と裏ネットワーク(管理用)とでネットワークを分離。気持ちパラレル処理で性能は上がるかもしれないけど、物理的には1本なのでさほどでは無いです。目的は分割することでデータ流量を見やすくすることかな。 Minecraft部分のディスクを、それぞれOS・Data・Dynmapに分けてます。Database(巻き戻し用のログ記録や、mcMMOなどの共有データ)も別サーバに分けてるし、DynmapのWebはWebサーバ側でデータをキャッシュして負荷軽減してます。この辺は元々からやってたことだけど、上記の[DISK]にも書いた通り、物理ディスクが分かれた事での並列処理の能力が上がってるので、この構成の恩恵がさらに高くなってる感じです。 日々のバックアップや定期再起動などはジョブコントローラで制御してます。前の構成だと物理ハードの再起動とかは出来なかったんだけど、今回はちゃんと出来るような構成にしてあります。なので、仮想サーバを全停止→OSイメージをバックアップ→物理ハードを再起動(リフレッシュ)ってのも出来ちゃいます。
という事で、ハード的には複雑になり、仮想サーバも増えましたが、管理面ではむしろ楽になった感じですね。
ちなみに自宅サーバなので、うるさいと困るからFANとかを自作して取り付けてたりもします。※FANは大きい程安くて静音性が高くなります。
とりあえず今回のリプレースでより高度な仮想化基盤が出来たので、次はゲーム環境の強化ですかね。
サーバスペック
CPU:Intel XEON E5-2620v2 2.1GHz x2 MEM:64GB HDD:2.5TB(512GBx4、215GBx2) […]