【NET技術.019】仮想化とクラウド
佐藤@IT雑貨屋です。
最近はもの凄い勢いでクラウド化が進んでいます。2008年頃にはSaaS等の話も少しづつ出て来てはいましたが、2018年頃からAmazonのAWSやMicrosoft Azureなど、クラウドサービスが出始めて来て、いまやそれが主流になりつつあります。
C/S(クライアント/サーバ)構想というのが昔にありました。それはデータをサーバで一元管理し、そのサーバにクライアントがアクセスをしてシステムが動作するというものです。各クライアントにはクライアント側のアプリケーションがインストールされ、サーバへのアクセスは主にイントラネットで行われていました。簡単に言えばデータの一元管理の下で、処理分散を行うというものです。
それまでは、データは各クライアントに分散していましたが、このC/S構想によりデータの一元管理が行われる様になりました。またインターネットの普及に伴い、従来はイントラネット、もしくは専用線などで構築されたものが、インターネットVPNでつながれる様になり、処理の分散・広域化は一気に進んでいったのです。
しかしこういったC/Sシステムはハードウェアの購入や維持管理には、それなりのコストが掛かります。その為にこういったシステムの導入は、容易なものではありませんでした。
しかし近年になり、仮想化技術が進歩し、Amazonは自社で利用していた仮想技術によるクラウドコンピューティングをAWS(Amazon Web Servie)として一般に提供を開始、その後、MicrosoftやGoogle等もこういった仮想技術を基にしたサービスを提供する事で、一気に仮想化とクラウドは世の中に広まったのです。
従来はサーバの購入や維持管理に掛かった費用も、仮想化されたサーバを利用する事で、利用したい時に利用したいスペックで、ハードウェアや場所を調達する事無く、安価に利用する事が出来る様になりました。この背景にはFTTH(光回線)の普及もあり、「クラウド」とは、IT業界でインターネット網を表す図形(雲:クラウド)から由来しています。つまりFTTHによるインターネット回線の先に、サーバ等の利用するサービスがあるというイメージを表現した言葉なのです。
ちょっと大雑把な説明となりましたが、ここから仮想化とクラウドについて説明をしていきます。
◆仮想化
仮想化には、サーバの仮想化、クライアント仮想化、仮想ネットワークなど、実に様々なものがあります。仮想ネットワークではSDN(後述)をも良い手ソフトウェアで動的に定義されます。SDNの代表的な技術にはOpenFlowがあります。
仮想化とは、コンピュータの物理的な構成と、それを利用する際の論理的な構成を自由に対応させる考えたかです。
仮想化技術はクラウドコンピューティングの基礎技術でもあります。仮想化を行う事で、物理的な制約がなくなり、自由に様々な環境を構築する事が出来る様になります。
・サーバ仮想化
サーバの仮想化では、ハードウェアである物理サーバと、仮想化ソフトウェアを使い、論理的なイメージである仮想サーバを構築します。
・クライアント仮想化
クライアントの仮想化では、仮想環境を構築するサーバ上で、PCの構成情報などについて仮想ソフトウェアを使って管理します。
・仮想ネットワーク
サーバやクライアントを仮想化すると、それに伴いネットワークも仮想化する必要があります。同じ物理サーバ内でそれぞれの仮想サーバの仮想NICへの通信が発生し、それを制御するために仮想スイッチなどの仮想ネットワークが必要になるからです。
◆SDN
SDN(Software Defined Networking)とは、ネットワークの構成や機能、性能などをソフトウェアだけで動的に設定する技術を言います。
これまでネットワークの構成を変更する場合には、ケーブルの接続を変えたり、新しいルータやスイッチを用意したりするなど、ネットワーク管理者が物理的に動いて作業をしなければならず、人的な移動などの稼働を必要としました。しかしSDNでは、ソフトウェアの設定のみでネットワークを構築できる事から、運用が非常に効率的に出来る様になります。
SDNはネットワークの仮想技術によって実現でき、後述するOpenFlowなどが代表的な方式です。このSDNはアプリケーション層、コントロール層、インフラストラクチャ層の三層で構成されています。
・インフラストラクチャ層
実際にデータ転送を行うネットワーク機器のレイヤ。これらの機器の制御には、後述するOpenFlowなどの標準プロトコルや、機器毎に定義されたAPI(Application Program Interface)を利用します。これをSouthbound APIと呼ぶ事もあります。
・コントロール層
機器を制御する中心部となるレイヤです。インフラストラクチャ層とアプリケーション層の違いを吸収する機能を持ち、アプリケーション層に提供します。アプリケーション層とやりとりするAPIの事をNorthbound APIと呼ぶ事もあります。
・アプリケーション層
コントロール層のAPI等を通して、ネットワークの様々な処理をプログラムする事ができます。
◆OpenFlow
OpenFlowは各フレームのもつMACアドレスやVLANタグ、IPアドレス、ポート番号などのような特徴をフローとして扱い、そのフローをベースにスイッチングを行い、経路を柔軟に制御できるようにするための標準化規格です。信頼性の高い通信を提供するため、通信にはTCPに加えてTLSを用い、セキュアチャネルと呼ばれる通信路を確立します。
OpenFlowの代表的な特徴に、制御用のネットワークとパケット処理用のネットワークが分離されている点があります。制御用のネットワークはコントロールプレーン、パケット処理用のネットワークはデータプレーンと呼ばれます。コントロールプレーンでは、OpenFlowコントローラと呼ばれる機器を用意し、経路制御などの管理機能を処理します。データプレーンではOpenFlowスイッチと呼ばれる機器がパケットのデータ転送を行います。コントロールプレーンとデータプレーンは分離させて別々によういする必要がありますが、物理的に分離させる必要はなく、仮想ネットワークを構築することで対応する事が出来ます。