サーバ仮想化

目次

仮想化とは

仮想化とは、サーバのCPUやメモリ、ストレージといった物理リソースを論理的に分割または統合して利用できるようにする技術のことです。サーバ仮想化を利用すると、1台の物理サーバを複数台のサーバのように見せかけ、それぞれにOSやアプリケーションを動作させられます。逆に複数の物理サーバを少数に集約することも可能です。例えば10台のサーバを2台にまとめ、その上で複数の仮想サーバを稼働させるといった利用方法が一般的です。

サーバ環境では「1台のサーバに1つのアプリケーション」を配置するのが基本です。複数アプリを同一OS上で動かすと不具合や障害の影響が広がるため、安定稼働の観点から分離が望ましいとされています。仮想化はこの制約を守りながら、物理リソースを効率よく使う仕組みを提供します。

サーバ仮想化のメリット

サーバ仮想化には大きく3つのメリットがあります。

①台数削減
物理サーバの台数を減らせるため、省電力化、省スペース化、保守費用削減につながります。

②リソース効率化
従来は負荷が高いサーバと低いサーバが混在していましたが、仮想化により異なる負荷パターンを持つシステムを1台の物理サーバに集約でき、ハードウェア資源を有効活用できます。

③カプセル化
仮想サーバは仮想化ソフト上で動作するため、古いOSでも新しいハードウェア上で動作可能であり、ハード交換によるドライバ非対応といった問題を回避できます。

仮想化ソフトの種類

サーバ仮想化を実現するソフトウェアには大きく2種類があります。

①ホストOS型
既存のホストOS上で仮想化ソフトを動かす方式で、導入が容易なのが利点です。しかし処理がホストOSを経由するためオーバーヘッドが大きく性能は低下します。代表的な製品にはVMware WorkstationやOracle VirtualBoxがあります。

②ハイパーバイザー型
ホストOSを介さず直接ハードウェアを制御するため、余計な処理がなく高性能であり現在の主流です。代表例はVMware ESX、Microsoft Hyper-V、Citrix XenServerです。

ハイパーバイザー型の2つの方式

ハイパーバイザー型はさらにモノリシック型とマイクロカーネル型に分かれます。

モノリシック型
ハイパーバイザーが専用のデバイスドライバを持ち、仮想NICなどを介してゲストOSにデバイスを提供します。ゲストOSは物理デバイスに直接アクセスせず、ハイパーバイザー経由で利用します。

マイクロカーネル型
は管理OSを介してデバイスを制御する方式で、ゲストOSは管理OSの提供する仮想デバイスを通じて物理デバイスを利用します。

仮想サーバのリソース割り当て

実際のリソースは物理サーバに存在しており、仮想サーバは仮想化ソフトを介してこれらにアクセスします。各仮想サーバには任意のリソースを割り当て可能で、例えば仮想サーバAにはメモリ4GB、仮想サーバBには8GBを割り当てるといった構成が可能です。ただし物理的な上限を超えて割り当てることはできないため、適切な管理が必要です。

サーバ仮想化はリソースの有効活用とシステムの柔軟性を両立させる基盤技術であり、企業インフラや試験学習において重要なテーマとなります。

仮想サーバのネットワーク接続

仮想サーバにはそれぞれ仮想NIC(vNIC)が割り当てられます。vNICは仮想スイッチに接続され、仮想スイッチが物理NICに接続します。そして物理NICが外部の物理スイッチに接続されることで、仮想サーバは外部ネットワークと通信できます。物理サーバのNICは複数の仮想サーバのトラフィックを集約するため、少なくとも1Gbpsが必要であり、サーバ数やアプリケーションによっては10Gbps NICを搭載することが推奨されます。

物理サーバのNICの使い分け

仮想サーバを収容する物理サーバには複数の物理NICを搭載し、用途ごとに使い分けるのが望ましいとされています。例えばVMwareでは以下のような分離を推奨しています。

  • VM用ポート:仮想サーバとクライアントが通信する際に利用。最も重要なサービスポート
  • VMotion用ポート:仮想サーバを別の物理サーバに移動する際に利用。大量の帯域を消費
  • ストレージ用ポート:ストレージと接続するために利用。帯域使用量が最大で重要度も高い
  • 管理用ポート:vCenterなどの管理サーバとの通信に利用。帯域は少ないが管理上必要

用途ごとにNICを分離することで、特定のトラフィックが帯域を独占して他の通信に影響を与えることを防ぎます。さらに仮想スイッチでVLANを設定し、仮想NICと物理NICを特定のVLANに割り当てることでネットワークを整理します。

物理サーバのNICの冗長化

1枚の物理NICが故障すると、その物理サーバ上のすべての仮想サーバが通信できなくなります。そのため物理NICの冗長化が必須です。冗長化は「チーミング」と呼ばれる技術で実現され、複数のNICをまとめて1つの論理NICとして扱います。チーミングにより障害対策と負荷分散を同時に行えます。

仮想環境におけるチーミング

仮想環境におけるチーミングには大きく2種類の方式があります。1つはハイパーバイザーの機能を利用する方法で、もう1つは物理NICのチーミング機能(リンクアグリゲーション)を利用する方法です。利用できる方式は仮想化ソフトによって異なります。

  • VMware ESX:ハイパーバイザー機能によるチーミング
  • VMware ESX / Microsoft Hyper-V / Citrix XenServer:物理NICのチーミング機能を利用

リンクアグリゲーションを使う場合、接続先のL2スイッチはスタック構成にすることが推奨です。ハイパーバイザー機能を使う場合も、IPアドレスベースの負荷分散を行うならスイッチ側でスタック構成にしておくのが望ましいです。

VMwareの負荷分散方式

VMware ESXのチーミングには3種類の負荷分散方式があります。

  • 送信元ポートベース(Port ID Based)
    仮想NICが接続されている仮想ポートIDに基づいて物理NICを割り当てます。デフォルトで利用され、負荷は軽め。
  • 送信元MACアドレスベース(Source MAC Based)
    仮想NICのMACアドレスを基に物理NICを決定します。Port ID Basedと似ていますが、物理NICの偏りが出る場合に有効です。
  • IPアドレスベース(IP Hash)
    通信の送信元と宛先IPアドレスの組み合わせで物理NICを決定します。1つの仮想NICでも複数の物理NICを利用できるため、最も高い負荷分散効果があります。ただしスイッチ側でIEEE 802.3ad(リンクアグリゲーション)を有効にし、スタック構成にしておく必要があります。

例えばストリーミングサーバのように不特定多数のクライアントと大量通信を行う場合には、IP Hash方式が最適です。

仮想化技術の1つであるコンテナ型

サーバ仮想化技術には「ハイパーバイザー型」「ホストOS型」がありますが、近年利用が広がっているのが「コンテナ型」です。いずれも1台の物理サーバ上に複数の独立した環境を作り出す点は共通していますが、仕組みと特徴が大きく異なります。ここでは代表的なハイパーバイザー型と比較しながら、コンテナ型の特徴を整理します。

ハイパーバイザー型とコンテナ型の仕組み

ハイパーバイザー型は、物理サーバにインストールしたハイパーバイザー(例:VMware ESX)がCPUやメモリといったハードウェアリソースを分割し、複数の仮想サーバ(仮想マシン)を生成する仕組みです。仮想サーバはそれぞれ独立してOSを持つため、完全に分離されたサーバとして動作します。

コンテナ型は、物理サーバ上のホストOSの中にコンテナ管理ソフト(例:Docker)を導入し、その上に「コンテナ」と呼ばれるアプリケーション実行環境を構築します。コンテナはホストOSのカーネルを共有して動作するため、ハードウェアリソースの消費を抑えつつ、独立した環境を作り出せます。

ハイパーバイザー型の特徴

メリットとしては、仮想サーバごとに異なるOSを稼働させられるため、自由度が高い点が挙げられます。例えばWindowsとLinuxを同じ物理サーバ上に共存させることが可能です。また完全に独立したサーバとして扱えるため、システムごとの分離性が強く、要件に応じた柔軟な設計ができます。

一方でデメリットとしては、仮想サーバごとにOSを持つため、起動や運用に多くのCPUやメモリを消費します。さらに複数のOSをそれぞれ管理しなければならず、運用コストが大きくなります。

コンテナ型の特徴

メリットはまずリソース効率です。OSを共有しているため軽量で、仮想サーバと比べて短時間で起動や停止ができます。またコンテナ管理ソフトがハードウェアやOSの違いを吸収するため、既に動作検証済みのコンテナであれば、別のサーバに移してもそのまま確実に動作します。この移植性(ポータビリティ)の高さは、開発から本番環境への展開を容易にし、クラウド環境との親和性も高めます。さらに個別OSの管理が不要なため、運用コストも抑えられます。

一方でデメリットは、異なるOSを動かせないという制約です。ホストOSがLinuxであればコンテナもLinuxベースに限られるため、柔軟性はハイパーバイザー型に劣ります。またホストOSに障害が発生すると、その上で稼働しているすべてのコンテナが影響を受けるため、安定性確保には注意が必要です。

まとめ

ハイパーバイザー型は「柔軟性が高く自由度は大きいがリソース消費と管理コストも大きい」方式であり、コンテナ型は「軽量で移植性が高く運用しやすいがOS依存性がある」方式です。要件によって適した技術は異なり、現在では両者を併用しながら使い分けるケースも多く見られます。

VXLANとは

VXLAN(Virtual eXtensible LAN)は、L3ネットワーク上に仮想的なL2ネットワークを構築するためのトンネリング技術です。VXLANではイーサネットフレームをVNI(VXLAN Network Identifier)でカプセル化し、UDP/IPパケットとして転送することで、物理的に離れた場所でも同一のL2ネットワークに所属しているかのように通信できます。IETFによってRFC7348として標準化されています。

従来のVLANでは識別子が12ビットで最大約4096しか作成できませんが、VXLANでは24ビットのVNIを利用することで最大約1600万のセグメントを構成可能です。そのため大規模データセンターやクラウド環境におけるマルチテナント対応に適しています。

VTEPとは

VXLANトンネルの入口と出口の役割を持つ装置またはインターフェースをVTEP(VXLAN Tunnel End Point)と呼びます。VTEPは以下の動作を行います。

  • 送信側VTEP
    受信したイーサネットフレームにVNIを付加し、UDP/IPでカプセル化してVXLANパケットを生成し、L3ネットワークに送出する。
  • 受信側VTEP
    受け取ったVXLANパケットをデカプセル化し、元のイーサネットフレームを取り出して宛先ホストへ転送する。

この仕組みにより、L3ネットワークを超えて仮想マシンやサーバを自由に配置することが可能になります。

VXLANパケットの構造

VXLANではイーサネットフレームをUDPでカプセル化します。外側のIPヘッダとUDPヘッダに加え、VXLANヘッダとしてVNIが挿入されます。そのため、従来のL2フレームをそのまま保持しつつ、L3ネットワーク上で転送することができます。

VXLANを利用するメリット

L3で分割したネットワークだけでも構築は可能ですが、仮想マシンを別セグメントに移動させる場合、IPアドレス変更や通信制約が発生してしまいます。VXLANを導入すると、異なる物理ネットワークに存在するL2セグメントをオーバーレイで接続できるため、VMをL3を超えて移動させても同じL2セグメントに属しているように扱うことができます。結果として、柔軟な仮想環境の運用が可能になります。

EVPN/VXLANとは

EVPN/VXLANは、VXLANのデータプレーンとEVPN(Ethernet VPN)のコントロールプレーンを組み合わせた方式です。VXLANがカプセル化によってL2オーバーレイネットワークを提供するのに対し、EVPNはBGPを用いてMACアドレスやIPアドレスの学習・配布を行います。

この仕組みにより、VXLANで問題になりやすいブロードキャストやARPリクエストのフラッディングを抑制し、効率的な大規模ネットワーク運用を可能にします。

EVPN/VXLANの主なメリットは次の通りです。

  • 大規模なL2オーバーレイを効率的に展開できる拡張性
  • アクティブ/アクティブで利用可能な冗長リンク(マルチホーミング)
  • BUMトラフィック(Broadcast、Unknown Unicast、Multicast)の抑制

EVPNの主要な用語

  • ES(Ethernet Segment)
    1つのマルチホームデバイスに接続された複数のリンクをまとめて表す概念
  • ESI(Ethernet Segment ID)
    ESを一意に識別する番号。同じESIを持つ複数のVTEPはマルチホーミング構成を実現できる
  • EVI(EVPN Instance)
    EVPNでのインスタンス定義。IP-VPNにおけるVRFに相当し、ルートターゲット(RT)を持つ

まとめ

VXLANは、従来のVLANの制約を超えて大規模なマルチテナント環境を構築するための技術です。さらにEVPNと組み合わせることで、効率的なMAC/IPの配布やBUMトラフィック抑制を実現し、データセンターやクラウド環境で柔軟かつ拡張性の高いL2オーバーレイネットワークを提供できます。

◆まとめスライド

目次