VMwareご乱心、からの代替技術としてNUTANIXを真面目に考えてみた
はじめに
みなさま、VMware製品を仕事で使われていますでしょうか? 私が関わるオンプレミスシステム基盤の仮想化基盤はほぼ100%、VMware製品を利用しています。中でもVMware vSphereが多いです。他にVMware NSX-Tが少々と、vSAN、vRealizeをたまに、最近はvCD(vCloud Director)を少し見かけるくらいです(vCDはまもなく終売になる)。
以下の記事が詳しいです。
そんなVMwareですが、つい先日VMwareショックともいえる事件が起こりました。それはブロードコムによるVMware社の買収です。ただ、VMwareの買収は今回が初というわけではなく、EMCに買われ、そのEMCがDellに買われ次々と社名が変わったという歴史があります。とはいうものの当時の買収劇はエンジニアからすると会社名が変わったくらいで実業務にほぼ影響はほぼありませんでした(ベンダの営業さんの名刺が VMware ⇒ EMC ⇒ DellEMC に変遷したと感じる程度)。
しかし、今回のブロードコムによる買収は私たち製品を調達して導入するエンジニアにも無視できない影響がありました。
ブロードコムによるVMware社買収の影響とは、端的に言うとむちゃくちゃライセンス料が高くなったことです。それにより同じ製品を調達する上でコストが大きく上昇しました。その値上げについての主たる原因が以下です。
- ハードウェアベンダによるOEM版の販売(買切り)がなくなり、サブスクリプション販売のみとなった
- プロセッサライセンスがコアライセンスに変更
- SKU(Stock Keeping Unit)の集中
- 購入会社の規模によって自動的に上位のSKUが選択される
場合よってはライセンス料が20倍になることもあるようです。例えばNSX-Tの機能を使う要件がないのに、本製品を買う会社の規模によっては勝手に機能がついてきてそれ相応のプライスになります(私が関わる案件ではほぼ確実に大企業向けのSKUが選択されます)。
参考までに大企業向けには以下のみが販売されます。
- VCF (VMware Cloud Foundation) ※ハブリッドクラウド向け
- VVF (VMware vSphere Foundation)
::: note
近しい事例としてOracle Databaseが挙げられます。7-8年ほど前、Oracle社がDatabase製品のSKUのひとつであるStandard Editionを廃しStandard Edition 2にライセンスを変更したときも機能追加がなされた上で、プロセッサあたりの単価が3倍になりました。その時もちょっとした騒ぎになりましたが、Oracle離れには至りませんでした。今回はそのときの比ではない実質値上げ幅です。
:::
ブロードコムによる買収については以下の記事が詳しいです。
今回の値上げによりVMware製品に頼り切りだった仮想化ソフトウェアを他製品に乗り換えようという動きが出てきました。今回の記事では私なりに調べた代替製品でやりたいことができるのかを取り上げていきます。今後エンジニアとして仮想化基盤を擁するシステム基盤の提案をする際の自身の商材として考えておかなければならないということもあります。
なお、仮想化基盤のVMwareから移行の候補としては一般的に以下が挙げられます。
- Linux KVM
- Microsoft Hyper-V
- HCI (NUTANIX)
::: note warn
他にも著名なものでOracle VirtualBoxなども挙げられますが、ホストOS型仮想化ソフトウェアになるためベアメタル型ハイパーバイザ仮想化ソフトウェアであるVMware vShereの移行先として適切ではないため除外しています。
:::
その中でも特に今後注目されると思われるHCI (Hyper-Converged Infrastructure)の雄であるNUTANIXによる代替が可能かどうかを以下の軸で語ります。
- 仮想化基盤に求められること
- ミッションクリティカルシステムの運用要件に耐えられる実装であること
- VMware製品で実現されていたこと
- NUTANIXは代替製品となり得るか
仮想化基盤で求められること
仮想化基盤で求められる主な機能は以下です。
- ハードウェアの共有によるハードウェア資源利用の効率化
- 複数機能の影響分離
- 機能配置の柔軟化
ハードウェア資源の利用効率化
少し抽象的なので具体で説明します。
私たちがサービスをユーザに提供する際、それを載せるシステム基盤を作ります(ITインフラとも呼ばれます)。システム基盤上にはサービスを提供するために複数の機能を組み合わせて実装をします。
1つのサービスを提供するためにわざわざ複数の機能に分けるかといえば、開発と運用を容易にするためです。
例えば、ECサイトでは構成する機能を以下に分けることができます。
- ログイン認証
- ユーザ登録、変更、削除
- 顧客情報管理
- 買い物リストの表示
- 製品データベース管理
- 在庫管理
- 買い物かごの管理
- 決済
- 売上利益管理・集計
- クレジットカード会社との連携
- おすすめ製品の表示・管理
- 配送管理
- 配送会社連携
- ポイント管理
- クーポン管理
- 問い合わせフォーム
- 問い合わせ管理
※上記はほんの一例です。大規模ECサイトともなれば実際はもっと細分化されていることでしょう。
上記を単一のアプリケーション、単一のサーバで実行することも原理上は可能ですが、以下の理由により通常は機能ごとにアプリケーションや構成要素が分割されます。
- アプリケーション障害の影響範囲が全体に波及することを防ぎたい
- 一部の機能の削除、入れ替えで機能間の影響を分離したい
- (場合によって)処理のタイミングが機能によって異なること
- 処理の負荷が機能によって異なること
- そもそも上記の機能を実現するためにフルスクラッチのアプリケーションのみならずミドルウェアなどのアプリケーション外の機能に頼ることがあること
上記のことから中規模以上のシステムではほぼ必ずと言っていいほど機能ごとに要素が分割されます。そしてそれらの機能はそれぞれ別のサーバ上に実装されます(各機能間の影響を分離する、サイジングをしやすくするというメリットも享受できます)。そのため、1つのサービス(システム)の中に複数サーバが稼働することになります。なんなら1サービスの中で、サブシステムとして更にシステムが分割されることもあります。
システム監視、ジョブ管理、ログ管理、セキュリティ管理、バックアップ管理、リリース管理に代表される運用系サーバも業務サーバとほぼ必ずと言っていいほど、業務機能が実行されるサーバと分離されます。
これらのサーバ群をすべて物理的なサーバに分けて構築するとそれなりのサーバ台数が必要です。CPUコア数、メモリ容量などの構成はある程度限定されたパターンしかなく、完全に自由に組み合わせられるわけではありません(更にプロセッサやメモリの世代ごとにパターンが変遷します)。
例えば、以下のような条件でパターン化されます。
- CPUはプロセッサのコア数単位でしか増やせない
- メモリはモジュール単位でしか増やせない
- メモリの搭載枚数/搭載位置によってシステム全体のメモリの帯域が変わる
- プロセッサ数によってサーバに搭載できるPCIe(PCI-Express拡張)カードの枚数が変わる
上記のことから実際の性能要件とハードウェア資源が乖離することはままあります(ソフトウェア要件は1コアなのに2コアからのCPUしかないなど)。そうした状況からハードウェア資源の分割損が発生し、必要スペック以上の買い物が必要になります。そしてサーバ台数が増えるほど場所も、電力も、そしてそれらの冷却に必要な設備もが必要になります。その悩みに応えたのがサーバ仮想化技術となります。
サーバ仮想化技術が提供する仮想化基盤は1つの物理サーバ(仮想基盤サーバ)上に仮想マシンを複数稼働させることで、ハードウェア資源の隙間を効率よく利用することができます。仮想化技術が流行り始めた時代ではあまり言葉にされていなかったですが、今でいう環境にサスティナブルな技術と言えます。そうした仮想化技術により、仮想化基盤上に仮想マシンを柔軟に配置することが出来ます。
::: note
オーバーコミットを利用すれば実際のハードウェア資源以上の性能を持った仮想マシン群を構成できます。システム基盤は常にハードウェア限界のリソースを利用している訳ではなく、ある仮想マシンのリソースが暇な時に空いたリソースを他の仮想マシンが利用できます。当然、リソースを同時に必要とする両仮想マシンが忙しくなると、利用タイミングが仮想マシン同士で重なったハードウェアリソースを奪い合い、パフォーマンスダウンが発生する可能性は否定できないです。そうした技術でギリギリまでハードウェアリソースを使い切ることができます。開発環境などの本番環境と比較してさほど重要ではない環境ではコスト削減のためにあえてオーバーコミットを採用し、コストダウンをはかることがあります。
:::
複数機能の影響分離
こちらは、機能や要素が事前に分離していれば、特定の箇所に障害が起きても影響が分離している境界でとどまるよ、という話です。これは停止が許されていないミッションクリティカルシステムにおいて重要なメリットと言えます。
機能配置の柔軟化
こちらは、機能が複数に分かれていることでそれらの配置を柔軟に行えることを指します。機能配置の柔軟化のメリットは、場合によってロケーションに分けたり、機能グループごとサブシステムごとに責任を分界する、処理のタイミングを分ける、処理間を非同期にするなど論物両面の柔軟性を実現します。
なぜVMwareが選ばれているのか
先述した通り仮想化技術を提供する製品はいくつかあり、もう少しシェアが他社製品に分散していても良さそうですが、私が調べた限り2021年時点でVMwareのサーバ仮想化ソフトウェアのシェアは70%を超えています。2017年は80%を超えていました。昨今はパブリッククラウドでVMware以外の仮想化ソフトウェアの採用が進んでいますが、オンプレミスだけに限定すればもっとシェアは高いと思われます。
私見ですが、VMwareが選ばれている理由を以下に挙げます。
- ベアメタル型ハイパーバイザであり、仮想化によるオーバーヘッドがCPUにおいては1%以下であること
- 汎用OS製品の追加機能ではないこと
- 既存シェアが多く世の中にノウハウが大量に蓄積されていること、エンジニア人口が多いこと
- 豊富なSKUにより低価格で使い始められること
- ミッションクリティカル基盤に必要な機能が一通り揃っていること
ベアメタル型のハイパーバイザであること
こちらは仮想化レイヤを実現するソフトウェア(カーネル)が軽量であること、ハードウェアを直接叩けることを指します。黎明期の仮想化ソフトウェアは通常のホストOSの上にハードウェアを抽象化するソフトウェアが動作していました。これをホストOS型仮想化と呼びます。この方式は昨今のOSはいずれも複雑化しており重量級のOSが多重の動作をしてしまうこと、また、それらがほぼ完全にソフトウェアによって動作していたことで仮想化によるオーバーヘッドが非常に大きく、実際に仮想マシンに使えるハードウェアリソースが限られていました。
ベアメタル型のハイパーバイザの仮想基盤は主に以下の機能によって仮想化によるオーバーヘッドを極小化することを実現しました。
- ほぼ仮想化機能に特化してカーネルが軽量であること
- CPUによる仮想化支援の利用によるシステムコール、ドライバのハンドリングが行え、仮想化処理の多くがハードウェアにオフロードできること
以下のサイトが参考になります。
汎用OSの追加機能でないこと
実はLinuxのKVMやWindows ServerのHyper-Vもベアメタル型のハイパーバイザ型でありそれらの製品とVMwareとで大きな差別要素にはなりません。が、しかし(少々言い過ぎだが、)これらの製品が忌避される理由は、KVMなら仮想マシン上の(他社製品である)Windows、Hyper-Vなら仮想マシン上の(OSSである)Linuxのサポートや問題が蔑ろにされるのではないかという感覚的なものが大いにあると思います。VMwareはそうした自社の汎用OS製品を有していないことから仮想化対象のOSを公平に扱ってくれるだろうという安心感があります。何より汎用OS付属の仮想化ソフトウェア製品の管理用として動いているLinuxやWindowsがフルスペックのOSであるため一定のハードウェアリソースを必要とします(管理機能のオーバーヘッドが大きい)。
参考までに、Windows ServerにおけるHyper-V導入前と導入後とでハイパーバイザの構成の違いが読み取れるサイトは以下です。
※Hyper-V Serverという軽量版があるが、MicrosoftのCLI主体で扱いやすさがオミットされている感はあります。
こちらも参考ですが、KVMの仮想化機能については以下のサイトが詳しく説明しています。
既存シェアが多くノウハウが蓄積されている、エンジニア人口が多い
システム開発をする際に地味に悩むのがエンジニアの確保です。数あるインフラ技術の中でVMware技術者は仮想化ソフトウェア製品に限らずインフラ領域においてエンジニア人口が多い方といえます。そうしたエンジニアの集まりやすさもソフトウェア選定に少なからず影響します。鶏が先か卵が先かという要素はありますが、システム開発のリスクを少しでも減らすためにエンジニアを確保しやすい製品を選ぶことはままあります。
諸説あると思いますが、私はVMwareエンジニアの人口増加には無料版のESXiが要因としてあると考えます。もう一つの要素としてVMwareの既存シェアが圧倒的だったというところにあると考えます。対して機能が変わらないのにあえて他の製品を選ぶということをしないですよね。また、VMwareは機能の面においても多様性がありました。
*Hyper-VやKVMも無料使えますが、早期からのシェア確保と無償で機能が試せることのかけ算で現在の地位を確立したものと考えます。
豊富なSKU
VMwareはvSphereを始めとした豊富なSKUを備えていました。vSphereの中だけでもかつてはEssential、Standard、Enterprise、Enterprise Plusといったエディションに分かれていました。エディションによってできることが異なり、ユーザは要件に合わせて極力安価なエディションを選ぶことができました。また、SDN (Software-Deisigned Network)やvSAN (Virtual Storage Area Network)などといった高度な仮想化機能は別製品として扱われ、必要がなければそれらの製品を買わないことも選択できました。
そうしてユーザは機能要件に合わせて必要最低限の構成とコストを見極めつつVMware製品による仮想化機能のメリットを享受できました。
※NSXやvSANなどの高度な機能を使わずvSphere製品だけで仮想化基盤を作っているシステムは存外に多い。
ミッションクリティカルに必要な機能
ミッションクリティカルなシステムを開発する際、私たちインフラエンジニアが考える軸は以下となります。
- 可用性
- 拡張性
- 性能性
- 運用性
- 保守性
- セキュリティ
ほぼ非機能要求グレードで語られるべき軸と同じですが、仮想化基盤は数ある製品機能の中でもハードウェアに近いレイヤにあります。物理に近いレイヤは基盤全体を支える屋台骨であり、そのレイヤで問題が起こった際の影響が広範に渡りやすいです。その結果、非機能要件で気にすべき項目もそれに応じて広範にわたります。
次項ではVMwareの観点でいかに上記を満たしていたのか見ていきましょう。
非機能要求グレードについては以下が詳しいです。非機能要求グレードはインフラ設計をする上でMECE(Mutually Exclusive and Collectively Exhaustive:ダブりなく、漏れなくの意、ミーシーと読むコンサル用語)に要件を整理することが出来る私たちインフラエンジニアにとって羅針盤になるものです。インフラエンジニア必携のものですので概要だけでも押さえておきたいです。
ミッションクリティカルシステムにおける至上命題は止めないこと、止めてしまってもその時間が極少であることです。それらは以下の言葉で表されます。
- 稼働率 →高いほどいい。
- 耐久性 →高いほどいい。
- RTO(Recovery Time Objective: 復旧目標時間) →短いほどいい。
- RPO(Recovery Point Objective: 復旧目標時点) →障害発生時と差分ない、あるいは短いほどいい。また、連続していてどこにでも戻れるということも良い指標とされる。
VMware製品は様々な機能で上記を実現します。詳細は次項以降で述べることとしましょう。
VMwareで実現していたこと
VMware製品は複数の機能で構成されているのは先述したとおりですが、ここでは改めてVMware製品で提供されている機能について説明していきましょう。
可用性
vShere HAを利用します。これは物理サーバが故障などでダウンした際にその上に載っている仮想マシンを別仮想マシン上で再起動させるものです。クラスタウェアによるフェイルオーバと同様、一定のダウンタイムが発生しますが、自動的に仮想マシンを復帰して業務継続性を高めてくれます。結果稼働率が上がります。
また、RDM (Raw Device Mapping) を利用することにより、複数物理サーバ間でLUN (Logical Unit Number: ストレージ装置から提供されるサーバが認識できるDISKの単位) を共有することができます。基本的にはVMwareでストレージを利用する際はVMFS (Virtual Machine File System) を構成したデータストア上にvmdk (Virtual Machine Disk: VMwareで扱う仮想DISKファイル形式) を配置して、仮想DISKとして仮想マシンに渡します。仮想DISKをvmdkにすることは可搬性の観点ではメリットがありますが、当該DISKがVMware専用のファイルシステムであるVMFS上で構成されるため、ストレージ装置のレプリケーションなどのストレージ専用の機能を利用することができません。また複数物理サーバ同士の共有も原理上はできますが、VMFSと仮想DISKを構成していること、複数サーバからのアクセスを矛盾なく制御するため多少のIOオーバヘッドが発生します。
RDMを利用すると、ストレージから渡されたLUNをそのまま参照・書き込みできるようになり、ストレージから見た場合、物理サーバ用のLUNと区別がつかないため、ストレージレプリケーションなどの機能が利用できるようになります。当該DISKに対してスナップショット機能が利用できないことがデメリットでしょうか。
ストレージレプリケーション機能はデータの耐久性を高めます。
運用性・保守性
vMotionを利用します。これは仮想マシンを一切止めずに別の仮想基盤サーバ上に移動をしてくれる技術です。一般的にライブマイグレーションと呼ばれます。vMotion用の通信機能を利用し、仮想マシンのメモリ内容を移動先の仮想基盤サーバに転送を続け、その差分がわずかな時間になった瞬間に新たな仮想基盤サーバ上の仮想マシンに切り替えます。ユーザからすると仮想マシンが瞬間移動したように感じます。
この機能はダウンタイムなしで移動元仮想基盤サーバをフリーにでき、同サーバのファームウェアアップデートなど物理的な停止を必要とするメンテナンスをサービスの影響なしで行うことが出来ます。これにより稼働率を維持することができます。
他にもDistribution vSwitchを利用することで仮想スイッチの運用性が向上します。具体的にいうと複数仮想基盤サーバにまたがった大きなスイッチを構成して本来は仮想基盤サーバごとに構成が必要だったスイッチ設定をまとめて行うことができます。仮想化基盤サーバが大量にあるシステムの管理の手間を削減します。
バックアップについてはVADP(VMware vSphere Storage APIs - Data Protection)プロトコルを利用して、仮想マシンのシステムDISKを無停止でバックアップを取ることができます。内部の動作としてはスナップショット機能で当該vmdkを静的な状態にしてそれをVADP連動が可能なバックアップ製品に転送します。バックアップが完了次第、スナップショットのデータを統合して、vmdkを通常状態に戻します。スナップショットの機能を利用するため、VADPによるバックアップはRDMに対しては実行できません。バックアップはRTOやRPOに貢献します。
また、EMCのAvamarの技術を用いて圧縮や重複排除も実現できます。かなり古い記事ですが以下がわかりやすいです。
障害発生時の通知は主にSNMPで行います。SNMPの拡張MIBを持っており、種々の状態をSNMPTrapにより通知することが出来ます。手前味噌ですが、SNMPについては以下の記事をご覧ください。一部SNMP機能におけるシステム監視の考え方に触れています。※自分の記事の宣伝です。
性能性
**DRS(vSphere Distributed Resource Scheduler)**により、特定の仮想基盤サーバに負荷が集中した際に動的にリソースを移動させることができます。超大規模なプライベートクラウドで利用する機能なため、私はあまり利用をしているシステムに遭遇していないです。
以下のサイトが詳しいです。
移行性
Storage vMotionを利用します。2つのストレージ間を仮想マシンの停止なしに移動ができます。当該仮想基盤サーバが移動元、移動先どちらのストレージも見えている状態で利用できます。
他にも、vmdkを他の形式に変換したり、OVF (Open Virtulization Format) 、OVA (Open Virtulization Aechive) を利用して仮想マシンをイメージ化することができ、そのイメージを他仮想基盤に移送することができます。移行性と少し違うかもしれませんが、VMクローンを利用してある程度作り込んだ仮想マシンを大量にデプロイすることができ、それを利用すると大幅な構築作業の効率化を実現することができます。Ansibleなどの自動化ツールと組み合わせると生産性向上の強力無比なツールとなるでしょう。
セキュリティ
セキュリティと一口に言っても脅威によって対策は多岐にわたるのがセキュリティです。vSphereの機能を使う分には、VMware自身の機能で上位レイヤのセキュリティ対策を行うことはありません。vCenter SeverとESXi間の通信が公開鍵証明書による暗号化通信が行われている、ESXiサーバ自身の管理用通信にファイアウォール機能が有効になっている、各仮想基盤サーバを直接操作させないロックダウン機能、SSH接続無効化機能などが挙げられるでしょうか。仮想化基盤自身を要塞化しているという機能になります。
後述するNSXでは仮想ネットワークレイヤのセキュリティ機能が提供されます。
拡張性
ネットワーク分野ではNSXを使用します。NSXはSDNを提供します。オーバーレイネットワークによる巨大な仮想ネットワークを構成します。同ネットワークには抽象化されたロードバランサによる負荷分散、分散仮想ファイアウォールによるマイクロセグメンテーションなどソフトウェアによる高度なネットワーク機能を提供します。物理的にはL2スイッチ、L3スイッチなどで仮想化基盤を繋いでおくだけで、先述した高度なネットワーク機能を使うことができます。
以下のサイトがわかりやすいです。
ストレージ分野ではvSANを利用します。vSANは高度なストレージ機能をソフトウェアで提供します。内蔵DISKを持つ仮想化基盤を並べておいて、その内蔵DISKをvSANの機能で巨大なストレージプールとしてみなします。ストレージ装置の持つ可用性、拡張性、レプリケーションを始めとした拡張機能をソフトウェアで提供します。
vSANを利用しない場合ストレージレイヤで高度な管理機能を利用する場合は別途ストレージ製品が必要になりますが、案外多くのシステムはストレージ装置によるストレージ管理高度化を選ぶようです。よってvSANの利用率はそれほど大きくありません。
vSANについては以下のサイトがわかりやすいです。
NSXは高度なネットワーク機器、vSANは高度なストレージ装置を不要のものとし物理構成要素をシンプルにします。仮想化基盤上で動くリソースが増大し、スケールしたい場合は、仮想化基盤を要する物理サーバを増やして、必要に応じてL2スイッチやL3スイッチを増やしていくだけとなり、これは拡張性におけるシンプルさを実現します。これは後述するHCIの特徴と同様のメリットになります。
ここまでは、私たちがVMware製品で享受してきた機能について語ってきました。次項からはNUTANIXで同等のことができるか見ていきます。
NUTANIXとは何か
NUTANIXはHCI機能を提供するアプライアンス製品となります(自身で導入するインストールパッケージも提供されていますが、ここでは一般的にエンタープライズ向けに利用されるアプライアンス製品だけを語ります)。物理的には4~10数本内蔵ストレージが搭載できるIA (Intel Architectureの略で最も普及率が高い)サーバとなっており、その実態はVMwareが動作する仮想化基盤で利用されるサーバとさほど変わりません。
アプライアンスとあって以下の特徴があります。
- NUTANIXの機能はIAサーバに導入ずみである
- ハードウェアを含めて垂直統合でサポートされる
- Cisco社、HPE社、Dell社、Lenovo社、富士通社などが自社のサーバにライセンスを受けて販売をしている
以下のサイトでOEM先のベンダが紹介されています。意外と多いですね。私の身近ではHPE製とdell製を採用しているところを見かけたことがあります。
上記の特徴のため、エンジニア的にはソフトウェアの導入の手間がなく、またドライバやファームウェアの相性などにもベンダが事前に検証した構成でしか提供されないため悩まされることがありません。更にNUTANIXにはPrismと呼ばれるモダンな管理コンソールが提供され、設定の手間も大きく軽減されています。
誤解を恐れず述べますと、GUI上でポチポチと設定すれば、スケーラブルなプライベートクラウドを構築することができます。もちろん、起動させるまでの電源の用意や最低限のネットワーク接続は必要ですが。
NUTANIXの概要については以下が詳しいです。NUTANIXのほぼ全てのことが書いてある謎のサイトです。書いてあることが少々難解で読み解くのに時間がかかるが辞書的に使い方に向いています。
HCIの特徴
ハイパーコンバージド・インフラストラクチャー(Hyper-Converged Infrastructure)の略で、サーバ仮想化基盤をシンプルに構成できるプラットフォーム製品となります。従来のシステム基盤のように別途ストレージ装置や複雑な物理ネットワーク構成を不要とし、それらの機能をソフトウェアで実現します。
ハードウェア構成としてはIAサーバをシンプルに並べるだけでよいのです。
HCIについては以下の記事が詳しいです。
NUTANIXを構成するもの
NUTANIXの基本機能は主に以下のコンポーネントで構成されています。
- AOS(Acropolis・Prism)
- Nutanix AHV
- CVM(Controller VM)
AOS
NUTANIXの仮想化基盤を提供する主要ソフトウェアでNUTANIXのOSとも言えるものです。内部コンポーネントとしてAcropolisとPrismを持ちます。AcropolisはOSとしての主要機能を提供し、Prismは高度なユーザインタフェースを提供します。これらはすべての仮想基盤サーバ上で稼働し、単一障害点を持ちません。
このAOSですが、積極的に新機能が導入されるSTS(Short Term Support)と、新機能の導入は消極的ですが、サポート期間の長いLTS(Long Term Support)があります。エンタープライズシステムでは後者のLTSが採用されます。
VMwareでいうとvCenter ServerとESXiのハイパーバイザ機能が組み合わさったようなものでしょうか。AOSはvCenterと異なり、単一の仮想マシンではなく全ての仮想基盤サーバに展開され、単一障害点を持たないことが特徴です。
なお、複数クラスタを扱う場合は別途、Prism Centralを導入します。通常のPrismは区別されてPrism Elementと呼びます。Prism Elementは先述した通りCVMに内包されますが、Prism Centralは仮想アプライアンスがデプロイされます。
AOSについては以下のサイトが詳しいです。
Prism ElementとPrism Centralの関係性については以下の記事が詳しいです。
Nuitanix AHV
Nutanix社が開発した仮想化機能を提供するコンポーネントです。ハイパーバイザに相当します。NUTANIXでは複数の仮想化ソフトウェアを選択することができますが、NUTANIXとの高い親和性を持っているのがこのAHVとなります。ベースとなっているのはKVMであると言われ、KVMに不足している高可用性機能、負荷分散、セキュリティ機能が追加されています。
AHVについては以下が詳しいです。
CVM
PrismとAcropolisが持つ機能の多くはこのCVMに組み込まれています。AOSはこのCVMを構成するソフトウェアとして稼働します。各サーバでCVMがHCIの分散ストレージや仮想化基盤の管理単位であるNutanixクラスタを構成します。NUTANIXは、このCVMによって仮想化の一部機能を抽象化することで仮想化ソフトウェアとしてAHV以外を選択することができます。
CVMについては以下が詳しいです。また、以下のサイトはNUTANIXの基本概念を理解する一助となります。
上記の基本機能以外は以下に一覧化されています。こちらをご覧になるとNUTANIXの多機能ぶりが伺えるでしょう。
NUTANIXでの要件の適合を見ていく
可用性
仮想基盤サーバの障害における可用性はAHVによって提供されます。vShere HAと同様に仮想基盤サーバの障害時に他仮想基盤サーバへの仮想マシンの再起動、アフィニティによる仮想マシンの稼働サーバのコントロールが可能です。アフィニティを利用しない場合、ベストエフォートで残った仮想基盤サーバ上無作為に仮想マシンが再起動される動作も同様です。また、アンチアフィニティも利用でき、同じサーバ種の仮想マシンを同一仮想基盤サーバで動作させないということもできます。でオーバーコミットをしていない、かつ1台分の仮想サーバのリソース余剰があれば、アフィニティを利用していなくても全ての仮想マシンの再起動がされるはずです。
VMwareの可用性の項で説明したストレージ可用性については、後述するDSFに譲ります。
運用性・保守性
vMotionと同様にライブマイグレーションが行えます。また、移動元と移動先の仮想基盤サーバのプロセッサ世代が異なる場合もそれをマスクする機能を同様に備えています。vMotionより機能が落ちる点としてはNutanixクラスタを超えたライブマイグレーションが行えない点です。vMotionはクロスセンターvMotionなど、クラスタに縛られないライブマイグレーションが可能です。通常運用時にあまり使う機会はないですが。
vSphereと同様にスナップショットを取ることができます。特にLinuxで整合性スナップショットを実行するにはvSphereでいうVMwareToolsのようなNGT (Nutanix Guest Tools) を導入することで利用できます。このツールはAHV環境で動作させるためのデバイスドライバ、シャットダウンアシスト、sysprep時のパラメタ連携を実現します。
NGTについては以下のサイトがわかりやすいです。
::: note
NutanixのスナップショットはvSphereと異なり、バックアップとして利用することも可能としており、ストレージ枯渇問題、性能問題が発生しないとしています。スナップショットを利用したDRレプリケーションも提供します。
:::
以下のサイトが詳しいです。
バックアップはローカルバックアップとレプリケーション機能が標準で提供されます。3rdパーティ製のバックアップ製品との連携も可能です。なお、3rdパーティ製のバックアップ製品の選定はNUTANIX用で考えるのではなく、利用するハイパーバイザに合わせて選択します。具体的にはAHVを利用する場合と、vShereを利用するとで対応するバックアップ製品が異なるということです。バックアップ機能はNUTANIX自身で多くの機能を持っており、ここで正確にすべて語ることが難しいです。ここは明確にVMwareと比較して優位な点であるといえます。
バックアップについては以下のサイトが詳しいです。
障害監視についてはPrismのもつモニタリング機能を利用します。VMwareと同様、外部のシステム監視マネージャと連携する場合はSNMPTrapを利用します。クラスタの健全性については、NCC (Nutanix Cluster Check) ツールが定期的に実行されます。
また、サポートなどとやりとりする際はPluseという診断データをNutanix社の製品サポートに送信するヘルスモニタリング機能を備えています(環境固有情報は除外されます)。
性能性
DRSと似た機能としてADS(Acropolis Dynamic Scheduling)が提供されます。NUTANIXではこれは自動的に有効になっています。ADSはVMwareのDRSと同様、高負荷になった仮想基盤サーバ上の仮想マシンをライブマイグレーションによってリソースの空きのある仮想基盤サーバ上にオンラインで移動させて、仮想基盤サーバ間のリソース利用の平準化をはかります。
移行性
移行性というと、以下の最低3パターン考えられます。
- 他社製品からNUTANIX
- NUTANIXから他社製品
- NUTANIXからNUTANIX
いずれもNUTANIX Moveという機能で実現できます。さすがに無停止で移行というわけにはいかないようです。
もちろん、スナップショットクローンを利用した、構築生産性向上も狙えます。
セキュリティ
vSphere製品と同様ロックダウンとSSH接続抑止機能を有します。また、ストレージの暗号化も標準のData-at-Rest Encryptionによって実現します。また、には、セキュリティ構成管理自動化 (SCMA: Security Configuration Management Automation)と呼ばれるフレームワークが組み込まれ、CVMとAHVが継続的に監視され、セキュリティベースラインに則り不用意な変更を検知・自動修復することが出来ます。
拡張性
NUTANIXは標準でSDNとvSANの機能を有しています。そのため、いうまでもなくNSXやvSANと同様の拡張容易性を持っています。
SDNに相当する機能として、 Nutanix Flow を利用します。Flowは多機能で以下の機能を提供します。
- アプリケーション通信の可視化
- マイクロセグメンテーション
- サービスチェーン機能
- Nutanix Calmとの連携
上記のうち、よく利用するのはマイクロセグメンテーションではないでしょうか。Flowではカテゴリとセキュリティポリシを組み合わせて、マイクロセグメンテーションに必要なルールを定義できます。カテゴリがあることで仮想マシンやアプリケーションひとつひとつの組み合わせごとにルールを書く必要がなく定義数を減らすことが出来ます。
vSANに相当する機能として、DSF (Distribution Storage Fabric) という機能を利用します。CVMによってクラスタ単位で共有して利用できるストレージプールが提供されます。このストレージプールはNutanixクラスタに所属する全ての仮想基盤サーバの内蔵DISKで構成されます。その上にストレージコンテナが構成されます。これはvSphereにおけるデータストアに相当します。
データは各仮想基盤サーバ上に自動的に冗長化補完され、特定の仮想基盤サーバやCVMが故障してもデータが失われることはありません。通常はパフォーマンス確保のため、仮想マシンが動作している仮想基盤サーバ上のDISKを読み込みますが、CVM障害時などで仮想マシンが稼働する仮想基盤サーバとデータが格納されている仮想基盤に相違が発生した場合、サーバ間のCVM同士を通して他仮想基盤サーバに残ったデータを読み取ります。また、リバランス機能も有しており、移動先の仮想基盤サーバにデータがない場合、自動的にレプリケーションされローカル読み込みになるようパフォーマンスの回復をはかります。
DSFデータレプリケーションはブロックとラックという単位で冗長化先の仮想基盤サーバのグルーピングができ、障害範囲の管理ができます。
DSFはストレージ機能の要となり、主に以下のストレージ装置が備える高度な管理機能を提供します。
- 高可用性
- 重複排除
- 自動リカバリ
- 圧縮
- イレイジャーコーディング
- 自動階層化
DSFについては以下が詳しいです。
NUTANIXで気になるところ
ノード障害時のIO性能
先述したCVM故障時の仮想マシンとローカルデータの相違状態で、DISK読み込み性能が落ちる点でしょうか。また、ストレージ性能を単体サーバで提供できる性能を大幅に必要とするシチュエーションでストレージ製品のような柔軟なスケーラビリティは期待できません。
エンジニアがいない、あるいは少ない
これはノウハウも含めてですが、NUTANIXエンジニアはVMwareエンジニアと比較して少ないです。Prismを通した管理性の高いGUIが用意されているとはいえ、仮想化機能に加え、SDNやvSANの理解も必要不可欠です。
とはまだ多少の希少性があるため、エンジニアとしては自分を高く売る良い市場が広がったといえましょう。私はこれをエンジニアとして好機だと考えます。コンテナ技術を提供するKubernatesと比較して最低限使いこなすための学習コストは低いと思われます。
コストの観点で代替になるのか
安価なストレージ装置、ネットワーク機器、最低限のVMwareライセンスで構成された安価なシステムの大体になるか、NUTANIXアプライアンスサーバがそれに匹敵するか、というと疑問ではあります。とはいえ、大規模システムかつ大企業向けのVMwareライセンスを支払うよりはサーバ代込みで安価になるのではないでしょうか。
高度なネットワーク機能は外部に頼る必要がある
VMware NSXの持つ、負荷分散装置やWAFなどの機能は備えていないため、同様の機能がシステムで必要な場合、仮想アプライアンスやSaaSあるいは物理機器を別途用意する必要があり、HCIの柔軟なスケーラビリティを阻害する恐れがあります。ただ、こちらはNSXを元々利用していないシステムについては大きな問題にはならないでしょう。
おわりに
VMwareで提供されている機能の中でもミッションクリティカルシステムで利用する機能を中心に、NUTANIXでそれを満たすことができるのかという観点で見てきました。大分長文になってしまいました。NUTANIXは非常に多機能でここに書いていることは本のごく一部です。今回はオンプレミスからの移行の話のためクラウドに関する機能は一切触れていません。
VMware製品の代替として一部気になる部分はあるものの、概ね近い要件を満たしているのではないでしょうか。あとは実際に構成を組んで費用比較をしてみること、特に性能周りの制約およびNSXで提供される高度なネットワーク機能の利用で外部機能に依存する点がご自身のサービスで耐えられるか検証 (PoC: Proof of Concept) を実施した上で採用を検討してみてはいかがでしょうか。NUTANIXの理解は道半ばですが、今後の提案に活用できるよう精進して参ります。
最後に私がこの記事を書くにあたって参考にさせていただいた記事や書籍を紹介して終わります。Nutanix Bibleと併せて読んでいくと理解が進みます。
以上
Discussion