OpenStackをはじめOSSクラウドが盛り上がりを見せる中、オーケストレーションやImmutable Infrastructureといったキーワードに注目が集まっています。本稿では、クラウドオーケストレーションを体験するために、OpenStackの環境を用意するところからオーケストレーション機能を使ってWebアプリケーションを立ち上げるところまで、一通りの手順を紹介しつつ解説したいと思います。
クラウド基盤ソフトウェア「OpenStack」とは
OpenStackは、OpenStack Foundationの運営のもと開発されているオープンソースのクラウド基盤ソフトウェアです。2010年にRackSpace社とNASAが中心となりスタートしたプロジェクトで、公式サイトによると、世界140か国、17,000人以上の開発者や研究者がコミュニティに参加しており、400近い企業や団体が支援しています。
国内では、Yahoo! Japan、GREE、NEC、GMOインターネットなどが導入事例を公開しているほか、日本OpenStackユーザ会がドキュメントの翻訳や勉強会の開催といった普及活動を行っています。
OpenStackのアーキテクチャ
OpenStackは複数のコンポーネントで構成されており、各コンポーネントが特定の機能を提供しています。利用目的に応じて必要な機能だけをインストールしたり、複数のサーバに分散配置するなど、柔軟な構成をとることができます。
2014年4月にリリースされたIcehouse版で提供されているコンポーネントは以下のとおりです。クラウドとしての基本的な機能は備わっており、監視などの付加的な機能も拡充されつつあります。
コンポーネント | コンポーネントの機能 |
---|---|
Horizon | Webダッシュボード機能 |
Nova | 仮想マシンインスタンスの管理機能 |
Neutron | 仮想ネットワークを提供する機能 |
Swift | オブジェクトストレージ機能 |
Cinder | ブロックストレージ機能 |
Keystone | 各コンポーネントを利用する際の認証機能 |
Glance | 仮想マシンイメージの管理機能 |
Ceilometer | 課金やスケーリングのためのリソース監視機能 |
Heat | オーケストレーション機能 |
Trove | データベース機能 |
以下の図は、公式のCloud Administrator Guideに掲載されているOpenStackのアーキテクチャ図です(図は2013年10月にリリースされたHavana版のものです)。各コンポーネントは独立していて、分散配置が可能です。各コンポーネント間の連携はREST APIやAMQPを利用して非同期に行われます。
クラウドオーケストレーションとは
クラウドオーケストレーションとは、クラウド上のリソース配置や設定、依存関係などを定義し、システムの構築や運用を自動化する仕組みです。クラウドオーケストレーションを活用することで、クラウド上に一挙にシステムを構築したり、整合性のとれた環境をいくつも用意したりすることができます。
クラウドオーケストレーションを実現するソフトウェアとしては、AWS CloudFormationが有名ですが、国内でもSCSKのPrimeCloud Controllerや弊社(TIS)のCloudConductorといったオープンソースのオーケストレーションソフトウェアが公開されています。
OpenStackのオーケストレーション機能「Heat」
HeatはOpenStackのオーケストレーション機能で、スタック(ひとまとめのリソース構成)を定義したテンプレートファイルを利用して、OpenStack上にシステムを自動構築します。HeatはAWS CloudFormationを意識して開発されており、テンプレートはOpenStackネイティブのHOT形式に加え、AWS CloudFormationのテンプレート形式でも記述できます。リソースにも互換性があり、AWS CloudFomation用に作成されたテンプレートを最小限の変更で利用することができます。
その他、HeatにはAWS CloudFormationと同様に以下のような特徴があります。
- リソースの依存関係を記述できるので、「先にサーバを起動してからボリュームを接続する」といった構築の順序関係を制御できます。
- PuppetやChefといった構成管理ツールと連携することで、インスタンス内部の設定変更やミドルウェアのインストールなども自動化できます。
- テンプレートを変更して再度適用すると、差分を検出してスタックの構成を変更できます。
- テンプレートの中で他のテンプレートを呼び出せるため、複数のテンプレートを組み合わせた構築が可能です。
- OpenStackのメータリングサービスであるCeilometerと連携することでオートスケールを実現できます。