AWS/GCPのクラウド技術を支える仮想技術について

AWS/GCPのクラウド技術を支える仮想技術について

最近注目されているAWS(AmazonWebService)、Docker、Kubernetesを学習する前に仮想化技術について学習したのでざっくりとまとめていきます。

サーバーの仮想化とは

1台のサーバー上で複数OSを同時動作させることで、複数の業務システムの処理を可能にする技術です。物理的には1台のハードウェア(PC)ではあるものの、複数のサーバー(論理サーバー)が稼働する仮想的サーバー環境を構築でき、多くのアプリケーションにサーバーリソース(サーバー本体、外部記録装置など)を割り当てることができます。これによって、ひとつの業務システムがサーバーを独占してしまうような無駄がなくなり、サーバーリソースをより有効に活用することができます。
サーバーのハードウェア性能の向上に伴い、サーバー仮想化技術を用いることで、多くの業務処理を行えるようになるだけでなく、既存の複数のサーバーを1台の高性能サーバーに統合することも可能になります。

少し冗長な説明になってしまいましたが、端的に言うと仮想化を実現するソフトウェア(MacだとVirtualBox、WindowsだとVMwareなどが有名)で物理的には一台のハードウェアにも関わらず複数の独立したサーバーとして機能させる技術になります。

サーバー仮想化を実現させるソフトは「ハイパーバイザー」と呼ばれている。

上の画像で例をあげるとWindowsやMacのパソコンが物理環境のハードウェアにあたり、仮想化基礎(仮想化ソフト)がVirtualBoxやVMwareになります。

VirtualBoxでは仮想化されたハードウェアというのはファイル群(ディレクトリもしくはフォルダのこと)のことであり、目に見える実体を持ったハードではない。

左サイドバーにあるのが仮想化されたハードウェアでLinuxOSとして動く

サーバー仮想化の例

構成1

 DBやWebなどのソフトウェアは一台のハードウェア(以下、ハード)にインストールをして稼働させることは可能ですが、そのハードに障害が起きてマシンを停止した場合にはそのハード上で稼働しているサービス(DB/Webサービス)を全て停止することになる。
また、悪意のある第三者にホストが侵入されroot権限を奪われた場合、全てのサービスに対して改竄などの不正行為が行われる可能性がある。
このために、次の構成2に比べてセキュリティは弱くなる。

構成2

 1台のハードでありながら、仮想化技術を使い各サーバーを独立させて稼働している。
仮想化を実現するハイパーバイザー(VirtualBoxやVMware)上に仮想マシンを構築しその上にゲストOS(CentOSやUbuntuなど)を稼働させます。
ゲストOSは仮想マシンごとに異なるOSを利用することが可能であり、そのゲストOSに対してDBやWebサーバーソフトフェアをインストールして利用することが可能。

仮想化技術を用いれば、MacOSにWindowsを載せることが出来るしその逆も可能になる。(実際にやっている人はあまり見たことありませんが)

ハイパーバイザー

ハイパーバイザーは、その上で仮想マシンを稼働させるソフトウェア。
典型的なハイパーバイザーには2種類のタイプがある。

1.ベアメタル型
 ハイパーバイザーが直接ハードウェア上で動作し、全てのOSはそのハイパーバイザー上で動作する方式。 Xenがこの方式

2.ホスト型
 ハードウェア上でOS(ホストOS)が動作し、その上でハイパーバイザーが動作する方式。
VMwarePlayerやVirtualBoxがこの方式

画像引用URL

https://japan.zdnet.com/article/20416942/

クラウドによる仮想環境

 クラウドでは、ハイパーバイザーによる仮想環境の上で多数のVM(仮想マシン)インスタンス(AWSで言えばEC2インスタンス)を稼働させることができる。
クラウドのVMインスタンスは容易に作成と削除ができるので、負荷の状況に応じて手動あるいは自動でインスタンスの個数を増減することで処理能力を調整ができる。(AWSのELBやAutoScalingを用いる)

AWSでは、ハイパーバイザーとしてXenが使われており、最近ではKVMも導入がされたみたいです。
Googleが提供するクラウドのGCPではハイパーバイザーとしてKVMが使われている。

AWSやGCPなどのクラウド技術を使うにしてもそれを支えているのは仮想化技術です。
クラウド技術だけを学ぶのではなく基盤となる技術を学習できてよかったですし、AZと呼ばれるAWSのデータセンターが存在する限りオンプレミスの知識も必要になってくると思うのでまだまだインフラについて学習すべきことが多いなと感じます。