専用サーバーサービスが共用サーバーやVPSサービスと大きく異なる点として、サーバー上で仮想マシンを動かせる点がある。これは最近増えている利用形態であり、オープンソースのツール群も整ってきている。エクスプレスG2シリーズ」に「OpenStack」という仮想化環境管理ツールを導入し、専用サーバーをいわゆるプライベートクラウドのように利用するための手順を紹介する。プライベートクラウドとは数年前から、「クラウド」と呼ばれる技術がブームとなっている。クラウドの定義はさまざまだが、一般的には「自分が所有していないサーバーにインターネット経由で接続して何らかのサービスを利用する」ものがクラウドとされている。Service(IaaS)」などと呼ばれている。AppEngineはPaaS型、AmazonのEC2はIaaS型のサービスだ。クラウドサービスでは使用した時間やリソース単位で「使った分だけの課金」が行われることが多く、また利用状況に応じて柔軟に構成を変更できるのが特徴だ。運用・管理を自動化するためのAPIも提供されており、使い方によって管理・運用コストを下げられる点が人気の理由である。サーバーが物理的にどこにあるのか利用者からは分からず、またその管理はサービスを提供する事業者が行うため、サービスを安心して利用できるかどうかは事業者次第になる。企業によってはコンプライアンスの観点からサーバーの設置場所やその管理方法に対して一定の条件を満たすことが求められる場合もあり、これらがクラウド導入の足かせとなることがある。そこで最近注目されているのが「プライベートクラウド」と呼ばれる、自分で管理しているサーバー群を使って自前のクラウド環境を実現してしまう技術だ。クラウドのメリットの1つである「サーバーの管理を事業者に任せられる」点はなくなってしまうものの、柔軟にサーバーの構成を変更できる点や運用・管理をAPIを使って自動化できるというメリットはプライベートクラウドでも享受できる。近年ではプライベートクラウドを実現するための技術開発が非常に盛んである。その中でも、注目されておりよく比較されるものとして以下の3つがある。OpenStackCloudStackEucalyptusOpenStackは、米国のホスティング事業者であるRackSpaceと米航空宇宙局(NASA)が2010年にスタートした、オープンソースのクラウドインフラプラットフォーム開発プロジェクトだ。Foundation」が発足、現在ではこの団体が開発を主導している。OpenStackのコミュニティにはCitrixやDell、NTTデータ、AMD、Intel、Canonicalなど192の企業が参加しており、Canonicalなどの企業がOpenStackベースのクラウドサービスを提供している。2で、Pythonで実装されている。CloudStackは米国のベンチャー企業であるCloud.comが開発していたクラウドインフラプラットフォームだ。Systemsが2011年にCloud.comを買収、その後オープンソース版とエンタープライズ版を統合してGPLv3で提供するようになった。CloudStack」となった。現在は「インキュベーション(独立支援)段階というステータスでASFの正式プロジェクト化に向けた整理が進められている。Eucalyptusはカリフォルニア大学サンタバーバラ校(UCSB)によって開発が始められたクラウドインフラプラットフォームである。EC2とAPI互換がある点が特徴だ。Systemsが設立され、現在は同社によって開発が進められている。3.1では両者が1本化され、GPLv3でリリースされた。実装はCおよびJavaで行われている。歴史が長いこともあり、多くの採用実績がある。Cloudのコア技術として採用されていた。OpenStackおよびCloudStack、Eucalyptusはどれも基本的な構成レベルでは大きな違いはないものの、コンポーネント構成や細かい機能などにおいて違いがあるため、どれを選択すべきかは悩むところである。HatもOpenStackのサポートを表明するなど、ややOpenStackが盛り上がっているようだ。そこで今回はクラウドインフラとしてOpenStackを選択し、さくらの専用サーバを使い小規模なプライベートクラウド環境を構築していく例を紹介していく。OpenStackのバージョンとコードネームOpenStackの現在の最新バージョンは2012年4月にリリースされた2012.1(コード名「Essex」だ。本記事ではこのEssexを使用して解説を行っている。バージョンによっては提供されているパッケージや構成が異なる場合があるので注意してほしい。過去にリリースされたバージョンとそのコードネームは表1のようになっている。0.9.0OpenStackのアーキテクチャOpenStackを利用するには、まずOpenStackのアーキテクチャについて理解しておく必要がある。パブリッククラウド環境の管理・運用には、仮想環境で使用するカーネルイメージやディスクイメージの管理やストレージの管理、APIの提供、クラウド環境の作成や設定、削除といった操作を行うユーザーの管理といった機能が必要だ。OpenStackではそれぞれ異なるコンポーネント(サーバー)でこれらを提供し、各コンポーネント間はHTTPベースのプロトコルで通信を行う、というアーキテクチャが取られている。OpenStackの主要なコンポーネントとその名称(コード名)は表2のとおりだ。オブジェクトストレージを提供する「keystone」はOpenStackの管理や設定に使用するユーザーの認証や管理を行うコンポーネントだ。どのコンポーネントがどのサーバーで動作しているのか、そのエンドポイント(そのコンポーネントにアクセスするためのURL)に関する情報もkeystoneが管理している。keystoneで管理されるリソースはグループ化することができ、このグループは「テナント(Tenant)」と呼ばれる。それぞれのユーザーには「ロール(Role)」と呼ばれる情報が与えられる。Roleにはそのユーザーがどのような操作を行えるかといった情報が格納されており、ユーザーごとに異なるロールを割り当てることで、それぞれのユーザーが実行できる操作を制限できる。「nova」は仮想マシンの作成や起動といった操作およびネットワークやストレージといった仮想マシンが利用するリソースの管理を行うコンポーネントだ。novaはOpenStackの中核をなすコンポーネントで、それぞれの機能はさらにサブコンポーネントに分割されて実装されている(表3)。仮想マシンのコンソールにJavaベースのクライアントで接続するためのインターフェイスを提供する「glance」は仮想マシンが使用するカーネルイメージやディスクイメージを管理するコンポーネントだ。仮想マシンの作成時、novaはglanceにアクセスして使用するイメージを取得する。OpenStackでプライベートクラウドを構築する際、最低限必要なのはkeystoneとnova、glanceの3コンポーネントで、残りの「swift」および「horizon」はオプションのコンポーネントとなる。swiftはクラウドストレージを構築するためのコンポーネントで、データを複数のサーバー/ストレージに分散させて保存し冗長性を保つ仕組みが備えられている。API経由で実行される。horizonはOpenStackの各コンポーネントを操作できる管理用ダッシュボードを提供するコンポーネントだ。ダッシュボードにはWebブラウザ経由でアクセスできる。OpenStackの最小構成OpenStackは前述のようにその機能が複数のコンポーネントに分割されている。それぞれのコンポーネントは同じサーバーで実行させることもできるし、異なるサーバーで実行させることもできる。通常は仮想マシンを実行させる計算用ノードと、OpenStackの管理を行う制御用ノードは分けるのが一般的である。ドキュメントによるとそれぞれの推奨要件は表4のようになっている。1Gbps×2制御用ノードについては、CPUはクアッドコアCPUを搭載したサーバーであれば十分とのこと。32ビットCPUでも動作するだろうとのことだが、i386版のパッケージは公式には提供されていない。計算用ノードについては、64ビット環境の仮想マシンを実行させるために64ビットCPUを搭載したマシンが推奨されている。メモリについては、テスト環境としては2GBが最小構成とのこと。ドキュメントではメモリは32GBとされているが、作成する仮想マシンインスタンスの構成によっても変わってくるため、これより少ないメモリ容量でも問題ない。OpenStackの各コンポーネントが使用するサービスkeystoneおよびglance、novaはその管理情報を格納するためにデータベースを使用する。novaはノード間でメッセージをやり取りするためにメッセージキューを使用している。そのほか、仮想マシンを実行するための仮想化機能や、セッションキャッシュを行うためのキャッシュサービスといったサービスも必要とする(表5)。OpenStackの利用時にはこれらのコンポーネントが利用できるようインストールや設定を行っておく必要がある。