4×4 BOXで作る、Proxmoxクラスター1

どうも今日は、Infrabbit 古賀です。
クラウドクラウドと叫ばれ、仮想基盤仮想基盤と騒ぎ立てられ、オンプレミスから離れて久しい方も少なからずいらっしゃるのではないかと思います。

さて、そんなクラウドだの仮想基盤だのと言われましても、しょせん根っこはコンピューター、どうあがいても実機が存在するわけです。クラウドが使えればいい、とか抽象化された後の仮想ハードウェアが触れれば十分、という方も多くはなってきているでしょうが、我々インフラ屋はともすればそういうわけにもいきません。

やれIP-SANが調子が悪いだの、FiberChannelの案件だの、ストレージリプレースしたいんだけど、だの、ESXiノードをどーのこーのという話は決して今でもなくなってはいません。まして、OSから上の話にしても、VMアーカイブで納品してくれよとか、普通にリクエストされるわけですね。

なので、インフラを取り扱うSIerには結構な確率でVMWareが棲んでいます。もうオンプレミスとは袂を分かったのだ!と声高に宣言でもしていない限り、少なくとも仮想基盤の何かしらがいたりすることはままあります。たとえそれがVirtualBoxであったとしても。

さて、そんなわけでまだまだ元気いっぱいの仮想基盤分野ですが、やはりどうやっても商用製品は高額です。ハイパーバイザが無償なXen Serverにしても、管理基盤は有償ですし、まして仮想基盤の雄、VMWareともなればEssensialsですらちょっといいお値段します。ましてEnterpriseともなれば、毎年のサポート費用だけで結構な金額です。

インフラエンジニアというからには、そういう面も普段から触りまくって、壊しまくって、作り直しまくって、スキル磨きたいでしょうけれど、おいそれとおもちゃにしてよい仮想基盤はなかなか世の中転がっていたりはしないものです。

そこで、オープンソースベースの仮想基盤ソリューションを利用して、仮想基盤を構成するスタックがいったいどういうもので、どう動いていて、どんな事したら何が起きるのか、という自己学習的ハンズオンが出来る環境、というものを作ったりします。もちろん、それはESXiではありませんし、Xenでもありませんが、根っこの考え方だとか、モノの動かし方、という点はよく似ているのです。

トヨタ車のエンジンとホンダ車のエンジンは別物ですけれど、エンジン、という仕組みまで立ち返るとやってることはだいたい似通ってきます。そういう話ですね。この根っこの部分、というのがいわゆる仮想基盤の基本の仕掛けで、実はそんなに種類はありません。

例えば、Hyper-VはWindows Serverにおける仮想マシン機構ですが、こいつの正体はXen Serverであり、Citrix Xenとほぼ同一人物です。Linuxの仮想基盤機構ではKVMが代表的ですが、これはAWSさんの採用している仮想基盤機構です。あとはみなさんご存じのESXiですね。さくらさんがESXi採用でしたでしょうか。うろ覚えなのですが。

エンジンは実はみんなだいたいこのへんのものが多いです。BSDなどはまたちょっといろいろあるんですが、最近ぶいぶい言わせているのはこの辺の方々でしょう。

で、エンジンは同じなんですが、その上にかぶせる各種ツールだとか、周辺機構だとか、管理システムだとか、そういうものをエクステリア的にかぶせた結果が、AWSだったり、GCPだったり、Azureだったりするわけです。VMWareもvCenterとセットになるとvSphereという扱いですね。これがいわゆる仮想基盤ソリューション、というものになります。

なので実は、仮想基盤、というものを学ぶのにおいて、ソリューションへの理解とは、アプリケーションの習熟であり、メカニズムや基本ロジックの理解ではありません。

これを理解したい、と望む場合、仮想基盤というものをつくったりこわしたりなおしたりどうにもならなくなってフォーマットしなおしたりする、かつてオンプレミスで何度も繰り返したあの悪夢を、楽しむ必要がある場合があるのです。

前置きが長くなりました。つまり、そういうものを作る、ということです。でもESXi買ってくるとか無理ですね。会社に言っておもちゃにしたいからVMWareのEnterprise買ってくれ。って言って簡単に買ってくれる会社はまずありません。そこでオープンソースです。

そういうオープンソースな仮想基盤ソリューション、というものはいくつか存在しています。例えばOpenStackなどもそうですね。vSphereレベルではなく、これはクラウドサービスレベルまでを構築するスタックなのでかなりゴツいです。かっこいいんですが、ハードウェアへの要求が結構きつい。IPMIとかマネジメントポートがあること前提の作りで、PXEブートでノードを起動したりします。PXEブートはまだ何とかなるんですが、マネジメントポート付きのサーバは基本全員超やかましい子しかいないので、部屋に置きたくありません。かといって自作でマネジメントポート付けるとか狂気の沙汰です(マネジメントポートは物理ハードウェアを直接操作する仕掛けなので)。

今回ご紹介するのはProxmox。LinuxのKVMを中心に組み立てた、Debianベースの仮想基盤ソリューションで、VMWareのEnterpriseに近い機構を持ちます。アフィニティ関連がどうなのかちょっとわかんないですが。

正体は単純で、KVM+OpenvSwitch+Ceph、クラスタ間調停をCorosyncで行う、といった感じのソリューションシステムです。

まずご用意いただくのは、適当なサーバを最小で3台。どこのご家庭でもその辺に転がってると思います。VT-xとか仮想機構サポートのCPUが載っていることを確認しましょう。今時の子ならみんな持っています。

次に、できればあると嬉しいのはiSCSIを喋れるストレージ。適当なNAS BOXで構わないと思います。InfrabbitではHDD12台積んだストレージが暇そうにしているので、こいつを使います。もちろん、ないならないで構いません。Cephを入れればよいので。

あと、まあどこのご家庭にもかならずあるので心配していませんが、L2マネージドのできる大規模スイッチ。欲を言えばSPFとかスタッカブルとかあるといいですね。もうどこのご家庭もVLANとか当たり前だと思うので、これはさすがにあると思います。

VLANは冗談です。とはいえ、あれば大変助かるのも事実。とりあえずだいぶおやすくはなっているので、1Gbpsの24ポートマネージドスイッチくらいはインフラ目指すなら一つ持っていてもいいんじゃないでしょうか。できれば複数持ってスパニングツリーの挙動とかLACPとか、遊んでみるといいと思いますが、インフラ屋というかネットワーク屋に片足突っ込む格好になるので(どっちも知識的には要るんですが)、主軸をどちらに置くか、というのはあります。ただ、まあインフラの人間ならスイッチはだいたいわかりますし、L3スイッチも当然触る機会があることが多いですね。BGPとかもAWS触るなら当然のように必要ですから、L3スイッチもいくつかあると実によいです。ネットワークはネットワークで、とっても勉強が必要な領域なので。やってること単純なくせに、くみ上げると複雑怪奇、とはこれのことだと思います。

まあそれはLinuxなんかのOSもそうですし、ELTスタックとかK8sも結局のところそうなんですけれどね。ソフトウェアだけの世界はコンソール見ていればなんとなくわかってくるのに対して、ネットワークはそこに物理が噛むので余計にややこしいのです。

完全な余談になっていますが、インフラ屋目指そう、と思う方はまあおうちに一台二台はマネージドスイッチおいて、VLAN切りまくって、ご家族に「急にネットワークつながらなくなったけど何したんだ!!!」って怒られるべきです。案件で大失敗やらかす前に、ね。

最後に、まあ少なくない台数のPCをかわるがわる(最初だけ)操作するので、KVMがあるとちょっと楽です。なければ頑張ってモニタとマウスとキーボード繋ぎ変えて作業しましょう。めんどくさい。

 

さて。今回ご用意したのは4×4 BOX V1000Mというベアボーンキットです。変態マザーボードで名を馳せる、ASRockさんとこの工業向けスモールPCで、NUCなんかのサイズですね。CPUはRyzen V1605B、Embedded CPUなので取り外しはできません。基盤べた付け。メモリもストレージもないのでそれは追加する必要がありますが。

今は新しく4800Uなんかの型も出ており、こちらのほうが性能はよいです。Ryzen7 4800U載っていますので、8Core 16Threadで動きます。仮想基盤にはもってこいなので、半導体価格が下がってきたらそのうちノードとして追加購入したいな、とは思っています。だってRyzen7載ってるんだよ!? 買うでしょ! M.2も2280使えるようになってるし。無理やり感半端ないけど。正直買わない理由がわからないレベルですね。ファンありとはいえ、V1000はかなり静かなので、4800Uもそこまでうるさくないだろう、と思っています。あとARM系も欲しいんですけどね。

とりあえずうちでは、V1000ベアボーンに128GB M.2 2242 SSDと、2.5インチ1TB SSDをSATAでつないで内蔵、メモリも16GBx2で32GBいっぱいまで突っ込んであります。

何がいいって、ほかの小型静音PCにくらべて、ネットワークが有線x2と無線x1出ている、ということです。2.5Gとか10Gのスイッチはまだマネージドで買おうとするとえらい目に合うので、1Gだらけなのですが、ポート死亡とか考えるとトランク組みたいなぁとか、ネットワーク分けたいなぁ、とかはわりとインフラ屋は自然な思考なのです。だって障害のときに寒いデータセンターに都度向かうとかいやじゃないですか、それもケーブル一本差し替えるためだけに。自宅のシステムなのに何を心配しているのか、という感じですが、基本思考がその辺をさまようわけです。

で、このベアボーンを6台用意しました。ついでに16ポートのL2プラスを用意。マネージドは24ポートがすでにもう二個あるのと、16ポートのマネージって少ないので、もうとりあえずVLAN切れればそれでいいや、って感じでプラスに落ち着きました。8ポート*2だとなんか無駄だし。アップリンクで使いすぎる。

PROXMOXのインストールは簡単です。ESXiと大差ないんじゃないだろうか。

ISOダウンロードして、USBメモリに焼いて、突っ込んでブート。あとはLinuxのインストールが出来るならその作業の1/10くらいの質問に答えるだけです。タイムゾーン、ネットワーク設定、HDDのパーティショニング方針、rootパス。おしまい。

すいません、ESXiより楽ですわ。

 

だいたい準備が終わっていれば、10分くらいでこんな画面に至ることが出来ます。

エラーとか出てるのは気にしないでください、もともと作ってたストレージ壊したりしてただけなので。これでもうESXiと1ノードだけ存在するvCenterが出来上がった感じです。証明書とかなにもやっていませんので、httpsの接続時にごちゃごちゃブラウザにいらないおせっかいを焼かれますが。

長くなってきたので、ここらでいったん切ります。