お家に仮想基盤を作った話① [HCIと3Tier]

お久しぶりです。おしごとつらい

社会人2年目からはまとまった時間が取れず文章を書く気力がほぼ皆無でした。
やはり労働は悪
典型的なJTCなのでアウトプットの機会がほぼなく、流石にまずい気がするので
今後は色々とアウトプットしていこうと思います。(続かない)

仮想基盤とは


出典:VMWare IT価値創造塾
わかりやすく言うと、複数のコンピュータを集約化させる方法です。
これにより、CPUやメモリなどのリソースを共有化でき、無駄なく使用することができます。

サーバを増やすことで仮想マシン台数を増やせる


出典:新卒 SE 社員が贈る vSphere のキソ!第3回
これにより、ユーザが増えればサーバを増やすことで仮想マシンの個数を増やせますし、
より多いスペックが必要なら設定を変えるだけで可能です。

障害時・メンテナンス時にも


出典:新卒 SE 社員が贈る vSphere のキソ!第3回
更に仮想マシン単体を”起動中のまま”他のサーバで移動できたりします。
そのため、仮想マシンの利用者に周知することなくサーバのメンテナンスなどもできます。
(流石にサーバの突然停止などは仮想マシンの再起動がおきたりしますが…)

お家でもほしくない?

ほしいよなぁ?

HCIと3Tier、お家に導入するならどっち?

まず3TierかHCIどちらで構築するか考える必要があります。
お家に導入するのであれば、実はHCIがお手軽だったります。
しかしながら、安定さや汎用性を求めるのであれば後述の理由から
個人的には3Tierかなと考えます。

HCI (ハイパーコンバージドインフラ)

HCIにはいくつか定義がある気がしますが、
私個人としては「サーバだけで構築する仮想化基盤」と考えています。
ソフトウェアとしは「Nutanix」や「VMWare vSAN」などがそれにあたります。
(NetAppHCIとかHPE SimpliVityとかもあるけど)
サーバだけで、というと少々語弊があるかもしれませんが、割りとそのレベルです。
複数のサーバを1つのL2スイッチにつなげ、各機器にOSを入れてクラスタを組む
それだけで、複数のサーバ間で冗長の取れたストレージが生成されます。
たとえサーバが停止しても、他のサーバで仮想マシンを再起動することができます。
3Tierではストレージが停止した場合はどのサーバでも仮想マシンが起動できないため、この点はかなり強力です。
もちろん、各サーバ間でライブマイグレーションも可能です。

HCIのデメリット

一方、HCIは各サーバである程度の冗長性を確保しているため、
想定されている台数以上の停止には非常に弱いです。
想定以上の場合はデータの冗長性以上の損失を起こしてしまい、データ破損に繋がります。
また、各サーバ間でしっかりと連携をしてしまっているために、
他サーバのトラブルに引っ張られ、システム全体が不調になることもあります。
サーバに接続されているHDDやSSDなどのディクスも、
基本的にOSが各ディスク管理しているため、OSが死ねばそのディスクも全滅します。
更に、サーバ間の接続が一般的なEthernetにも関わらず、
ディスクアクセスやライブマイグレーション時のメモリ転送、
インターネット通信に使用されるため、最低10Gbpsと言われています。

3Tier

3Tierはかなり前から利用されていた仮想化基盤方式です。
昔からHCIの基本となるものは研究されていましたが、
CPUの性能などからHDDの制御などのSWに任せるのは非常に大きな負荷となってしまい
起動できる仮想マシンが大幅に減ってしまいます。
(IvyBridge世代のXeonでもvSANを有効にすると半分ぐらいCPU使用率を持っていかれます)
そのため、「サーバ」「ネットワーク」「ストレージ」それぞれ専用の機材を用意し
自分のところは自前の計算装置で処理してそれらを連携させる、という方式になります。
OSとしては「ESXi」や「Hyper-V」「KVM」などが該当します。
(が、これらがNutanixのハイパーバイザーとして使えるのでちょっと説明がややこしい)

サーバ


みんな大好きIAサーバ(最近はEPYCもアツい)
仮想基盤用OSを入れるHDD領域(USBメモリでもいい)で起動だけする。
あとは「ストレージ」に接続(FCやiSCSI、NFS)してそこにある仮想マシンを起動する

ネットワーク


仮想マシンからネットワークにアクセスするときに使ったり、
仮想マシンをサーバ間で移動するときにも使用します。
(vMotionやライブマイグレーションという)
↑は起動中の場合、サーバのメモリから別サーバのメモリに転送するので、
転送速度が物を言う(10Gbpsフルで使うなどもザラ)
一部ではストレージの通信にも利用します。
とにかく早いに越したことはないですが、1Gbpsのスイッチでも構築できちゃいます。

ストレージにはFibre Channelという専用の規格を使うこともあります。
光ファイバーを利用し、ストレージ専用のネットワークを構築します。
外部ストレージへの無駄のない接続を実現しています。
iSCSIなどのEthernetを使うストレージ転送方式に比べ、
ストレージ専用として設計されたため、無駄がなく高速です。
しかしながら、完全にEnterprise向けなので価格がハチャメチャに高いです。
他にもIB(InfiniBand)などもありますが、もう過去の技術なので飛ばします

ストレージ


最後に必要なのがストレージです。
HDDやSSDなどのディクスを搭載し、サーバなどにデータ領域を用意します。
ストレージ内では複数のディクスを搭載し、1個や2個壊れても問題ない
設計がほとんどです。
(RAID6+スペアなど)
また、複数の仮想マシンが同時に配置され同時アクセスが多発するため、
最近ではFlashCacheなどの高速化領域が用意されたり、
HDDとSSDのハイブリット構成が主流です。
より金銭的に問題ないなら全てSSDのオールフラッシュも用意されています。
そしてこのストレージですが、ハチャメチャに高額ななのがほとんど。
というのも、サーバやスイッチは停止しても問題ない構成がほとんどですが、
ストレージが全断するのは考えられていない構成がほとんどです。
そのため、ストレージ内部で2台コントローラーを搭載して冗長したり、
などもありめちゃくちゃ高額となっています。
サーバ3 ネットワーク2 ストレージ5ぐらいの価格です。

HCIと3Tier、お家に導入するならどっち?

Q「えっ、3Tierのがコスト高くない?」
A「はい。
ただ、導入するサーバが中古のため性能がそこまで高くなかったり
ESXiの導入の検証など、そういった低レベル分野のことをするのであれば、
よりシンプルな3Tierを今回は選択しています。

OSについて

これは単純に自分のナレッジ的に経験の多いESXiにしました。
皆さんVMUGは最高ですよ

とりあえず今回はここまでにして、次回はネットワーク機材選定の話をします。