サーバー、ストレージ、ネットワーク、3つの領域それぞれで続く進化。Azure Stack HCIを構成する3つの仮想化機能の特徴
これまで、Windows Serverをベースにしたハイパーコンバージドインフラストラクチャ(HCI)として提供されてきたAzure Stack HCIは、Azureとの統合を視野に入れたプラットフォームとして生まれ変わりました。HCIはサーバーのコンピューティングノードとストレージ、ネットワークをSoftware Defined、つまり仮想化して柔軟に拡張、構成できることが大きな特徴です。
Azure Stack HCI Bootcamp 第2回「Azure Stack HCI を構成する技術要素とは?」では、MicrosoftでWorldwide Learning Azure Technical Trainerを務める小塚大介氏が、新生Azure Stack HCIが搭載するサーバー仮想化、ストレージ仮想化、ネットワーク仮想化の機能の特徴、ポイントを紹介しました。
▼Azure Stack HCI Bootcampに関する記事一覧
https://qiita.com/official-columns/tag/azure-stack-hci-bootcamp/
目次
多様な環境をサポートし、性能やセキュリティ向上も実現する「Hyper-V」
マイクロソフトが提供するサーバー仮想化機能、「Hyper-V」はAzure Stack HCIにも搭載されています。
もともとWindows Server 2008の一機能として登場したHyper-Vには、約12年の歴史の中でさまざまな機能が追加されてきました。こうした新機能はそのまま、新生Azure Stack HCIでも利用できるようになっています。
Hyper-VはWindows Server上でサーバーを仮想化する基盤としてだけでなく、クライアントOSであるWindows 10上で、またクラウドサービスのAzure上でも使われています。また、Windows Server 2016/Windows 10のリリース時には、仮想化機能を用いて外部からの攻撃を緩和する機能にHyper-Vが使われるようになりました。
Hyper-V上で動作する仮想マシンの種類も広がっています。「Windows ServerやWindowsだけでなく、RedHat Enterprise LinuxやUbuntu、SUSE、Oracle LinuxといったLinuxの仮想マシンも作れるようになっています。さらにHyper-Vの機能を使ってWindows上でDockerコンテナを動かすこともできるようになりました。」(小塚氏)
「PowerShell Direct」を利用すれば、ホストOSからゲストOSに対してダイレクトに接続してPowerShellを実行することができ、仮想マシンの管理をより効率的に行えます。
また、仮想マシンの性能を向上するための機能もいくつか追加されています。「Guest RDMA(Remote Direct Memory Access)」を使えば仮想マシンのネットワークI/Oをより高速化できますし、ホストOSのハードウェアを仮想マシンにダイレクトに公開する「Discrete Device Assignment(DDA)」によって、NVMe対応の高速なディスクやGPUを仮想マシンから使えるようになります。「こうした機能追加により、今までよりさらに高速に処理が行える仮想マシンを作れるようになってきました」と小塚氏は述べました。
さらに、前述の通り、Hyper-Vはセキュリティ強化にも活用されています。「Shielded VM」を利用すれば事前設定したホストOS以外での仮想マシンの起動を制限でき、「VM Encryption」ではBitLockerやDMCryptを使ってディスク暗号化を行い、仮に仮想ハードディスクのファイルを不正に持ち出されたとしても、悪用を防ぐことができます。
システムの可用性を高める観点では、Hyper-VとAzure Site Recoveryが連携してディザスタリカバリ環境を作ることも可能です。
このようにHyper-Vには環境の多様性やパフォーマンス向上、セキュリティの向上、そしてディザスタリカバリといったさまざまな観点で新機能が盛り込まれていますが、これらは新生Azure Stack HCIでももちろん利用可能です。
システム要件や特性に応じた選択が可能な「Storage Space Direct」
Azure Stack HCIでストレージ仮想化を実現するのは「Storage Space Direct」(S2D)機能です。
従来、仮想マシンに対して高可用性を備えた環境を構築する際には、専用の共有ストレージを使ってフェールオーバークラスターを組み合わせる必要がありました。しかし、Hyper-VやAzure Stack HCIの各ノードに搭載されているローカルディスクを束ね、冗長性を備えた分散ストレージを構築できるS2Dによって、それらが不要になりました。
S2Dでは、各ノードが搭載するSATA/SASで接続されているHDDやSDD、NVMeやパーシスタントメモリなどを組み合わせて利用できます。異なる特性を持つストレージを組み合わせる際に重要なのが「キャッシュ」の活用です。
「S2Dでは、性能は遅いけれども容量が大きく安価なHDDはデータを保存するために、一方でより高速なSSDやNVMeのディスクはread/writeのキャッシュとして使うことができます。キャッシュをうまく活用してこうした仕組みを作ることにより、大きな容量を確保してコストも抑えつつ、読み書きのパフォーマンスを上げることが可能です」(小塚氏)
こうしてS2Dを活用し、複数のディスクを組み合わせて作成したストレージからボリュームを切り出していくことで、クラスター共有ボリューム(CSV)、あるいは通常のデータの保存先として使えるようになります。
Azure Stack HCIの仮想ストレージでは、このボリュームを切り出す際に、「ミラー」や「デュアルパリティ」といった冗長化のオプションを指定できます。「ミラーは読み書きのパフォーマンスは高い一方で、容量効率は落ちます。一方デュアルパリティは容量効率は高いですが、読み書きのパフォーマンスは下がる傾向にあります。このようにそれぞれメリットとデメリットがあります」と小塚氏は説明しました。
S2Dならではの特徴として、ミラーとデュアルパリティのちょうど中間の性質を持つ「ミラーアクセラレーテッドパリティ」というオプションもあります。「ボリュームの中にミラーの領域とデュアルパリティの領域、両方を作っておいて、よく読み書きするデータはミラーの方、あまり使わないデータはパリティの方に自動的に配置することによって、コストパフォーマンスを高めていきます」(小塚氏)
こうした特徴を理解した上で、システム要件に合わせたオプションを選択することが大切です。
また、実はS2Dにおいてはネットワークも重要な要素となります。「分散ストレージを使う際にはネットワーク上でノード間の大量のデータ転送が行われます。ネットワークが切れてしまうとS2Dの機能も停止してしまう可能性があるため、ネットワークの冗長化がとても重要になります」(小塚氏)。Windows ServerやAzure Stack HCIに搭載されているSMBマルチチャネルやRDMAといった機能を活用して、冗長性と性能の両方を向上させるといった方法をぜひ知っておいてほしいと呼びかけました。
S2Dにはリブート時に便利な機能もあります。パッチ適用のタイミングなどでリブートをかける際には「縮退モード」となり、もしその最中に大量のデータが書き込まれた場合には再同期が必要となりますが、S2Dには「ステータス」という概念があり、もし縮退モードになった場合に通知し、再同期の必要があればその旨を表示してくれます。
なお、縮退モード後の再同期とデータの修復にどのくらいの時間が必要になるかは、システム負荷や運用形態、ストレージの性能やネットワークの帯域幅によって変わってきます。「これらを踏まえて運用方針やハードウェアのチョイスを変えていく必要があることを覚えておいてください」と小塚氏は述べました。
Azureの仮想ネットワーク機能をさらに強化したSDN
3つ目の要素であるネットワーク仮想化、いわゆるSDNの機能は、Azure Stack HCIにも搭載されています。
ただ、1つ重要なポイントがあります。「マイクロソフトが考えるSDNはオンプレミスだけでもなく、クラウドだけでもありません。オンプレミスであってもクラウドであっても同じように仮想ネットワークを作り、複数のサブネットやセグメントを設定して使えるようにしていければと考えています」(小塚氏)ということです。
物理的にオンプレミスであろうとクラウドであろうと関係なく1つの仮想ネットワークを作り、その上でサブネットを分けてセキュリティ制御をきめ細かく行うほか、ネットワーク通信の制御やフロー管理、ファイアウォール機能の提供、転送されるデータの暗号化、ピアリング、レガシーネットワークとの接続を実現するゲートウェイ、NATや負荷分散といった多様な機能を実現していくのが、マイクロソフトが提供するSDNです。
Azure Stack HCIでは、以前から提供されてきたSDN機能をさらに強化し、System Center Virtual Machine Manager(SCVMM)だけでなく、無償のWindows Admin Centerを使って制御できるようになりました。また、スタティックなルーティングだけでなく、BGPを用いた動的なルーティングもサポートし、ネットワーク経路の冗長化や障害発生時の通信継続が実現されます。
このAzure Stack HCIのSDNで重要な役割を果たすのが、文字通りSDNのさまざまな制御を行う「ネットワークコントローラ」です。SDNの核を担う機能であり、利用者側があれこれ考えなくても冗長化、高可用な環境を構築できるようになっています。
このネットワークコントローラにより、SDNによる仮想ネットワーク同士の分離だけではなく、ネットワークロードバランシングなども行うことができます。こうした設定は、Windows Admin CenterからAPI経由で行えます。
これらの仕組みは比較的新しい概念に基づく機能ですが、だからといって既存のネットワーク機器を一新しなければならないというわけではありません。あくまでネットワークコントローラはソフトウェアですべてをコントロールしていきます。ですので既存のネットワークスイッチをそのまま利用できるほか、既存のVLAN環境を維持したままAzure Stack HCIを導入し、サーバー負荷分散機能を使っていくことも可能です。NAT機能を活用すれば、パブリックIPアドレスを節約しつつ、複数のネットワークをVPNでつなぐ「S2S VPN」を作っていくこともできます。
SDNは、さまざまなセキュリティ機能も提供します。たとえばデータセンターファイアウォールによって通信元IPアドレスや宛先IPアドレス、プロトコル、ポート番号などを用いてアクセスコントロールルールを作成し、通信を制御することが可能です。また、通信ログ・監査ログを取得して調査する設定もあります。
もしすでにAzureをお使いの場合はお気づきかもしれませんが、こうした仮想ネットワークの管理や負荷分散機能、ネットワークのフィルタリング機能などは、Azureの仮想ネットワークとその関連サービスとかなり似ています。それらAzureと同等の機能をオンプレミス環境でも使えるようにするのがAzure Stack HCIのSDNとも言えるでしょう。
今後も進化を続けるAzure Stack HCIの仮想化機能
このように「Azure Stack HCI」はWindows Serverに提供されてきたサーバー仮想化、ストレージ仮想化、ネットワーク仮想化の機能をベースに構築されていますが、今後はMicrosoftがAzureの構築や運用で培った経験をもとに、HCIに必要な機能を「Azure Stack HCI」だけに追加していくことを予定しています。
その一例が、ハードウェアのリブート処理をスキップすることによって、Hyper-Vが動いているホストOSの再起動に要する時間を短縮する「カーネルソフトリブート」です。動画デモでは、通常のリブートは約4分かかるのに対し、カーネルソフトリブートは19秒で完了することが見て取れます。「仮想化の基盤であれば、この短縮はかなり大きいはずです」(小塚氏)
今後もさまざまな機能が追加され、進化を続けるAzure Stack HCIに、是非ご期待ください。
詳しい動画解説を見る
(Azure Stack HCI Bootcamp Japan 第2回)
文:高橋睦美