第7回「クラウドの構築と運用を自動化するクラウドオーケストレーション」
今まで紹介してきたように、サーバーの構築・運用を自動化するツールとしてPuppet、Chef、Ansibleなどがあります。これらのツールは基本サーバー1台1台を設定するためのツールですが、システムを構築・運用する際には、複数のサーバーを連携させて設定する必要があります。クラウドシステムを利用する場合、クラウドオーケストレーションと呼ばれる技術を利用して、クラウド上で動作する仮想システムの構築・運用を自動化することができます。
例えば、OSSのクラウド基盤OpenStackを利用してクラウドを構築した場合、OpenStackでオーケストレーションを実現するHeatを利用することにより、システム構築を自動化することができます。
今回は、クラウドオーケストレーションによる自動化の例として、OpenStackとHeatを用いたオーケストレーションについて紹介します。
クラウド上のシステム構築
OpenStack上では、マシンやNW、ストレージは仮想化されています。これらの仮想化されたリソースを利用する際に、リソースを定義・確保する順番が重要になってきます。
例えば、クラウド上にWeb3層システムの構築を手動で行う例を考えてみましょう。
図1 クラウド上のWeb3層システムの構築手順
大まかに説明すると、下記のような手順になります。
①データを格納するボリュームを作成します。
②①で確保したボリュームを利用したデータベースの仮想マシンを起動します。
③Webサーバーを起動します。
④Webサーバー上のアプリケーションが②で起動したデータベースのインスタンスを
参照するように設定します。
⑤ロードバランサーを作成します。
⑥Webサーバーをロードバランサーに登録します。
⑦ローバランサーがクラウド外のネットワークからアクセスできるようにネットワークの設定
を行います。
構築は、決められた手順で行う必要があり、また、サーバーの起動や設定などをまって次の手順を行う必要があるケースがあります。OpenStackのオーケストレーションツールであるHeatを利用すると、依存関係のある手順をテンプレートと呼ばれるシステム定義ファイルで自動化することができます。
このテンプレートを作成しておけば、同様な構成のシステムを構築するときに簡単に同じ構成でシステムを構築することができます。また、大地震などの災害などが発生したときに別のデータセンターでバックアップシステムを稼動させたいという場合でも、テンプレートから簡単にシステムを再構築することができます。
Heat利用すると、構築だけなく、サーバーでの障害発生時のVMの再起動や、システム負荷が増大したときのサーバーを増やすオートスケールなど、運用を自動化する機能も備えています。
図2 クラウドオーケストレーションによる運用の自動化イメージ
OpenStackとHeatで実現するクラウドオーケストレーション
さて、具体的にクラウドオーケストレーションを実現するツールの一つであるHeatについてご紹介します。Heatは、クラウド基盤ソフトウェアであるOpenStack上でオーケストレーションを実現するツールです。テンプレートと呼ばれるファイルにシステム構成を記載しておけば、そのテンプレートに従ってシステムを構築・運用してくれます。 その仕組みは、図3のようになっています。
図3 Heatの概要
構築(①~③)
テンプレートを読み込んだHeat(①)はOpenStackでリソースを管理するコンポーネント(Nova/Neutron/Cinderなど)にリソースの作成・設定指示(②)を出します。これを受け、これらのコンポーネントは指示されたリソースの作成、設定を(③)行います。
リソースは単に作成するだけでなく、他のサーバーの起動を待ち合わせて処理を行うこともできます。例えば、DBサーバーの起動が完了したら、Webサーバーを作成し、Webサーバーの作成が完了したらロードバランサーに登録するといったように、順序性のある指示が出せるようになっています。
運用(④~⑦)
構築されたシステムはCeilometerと呼ばれる監視コンポーネントで監視することができます(④)。例えば、Webサーバーの負荷を監視やDBサーバーの死活監視などを行うことができます。監視する際に、閾値を設けておいて、その閾値を越えたときアラームと呼ばれるメッセージをHeatに通知します(⑤)。Webサーバーの平均CPU使用率が80%を越えたときや、DBサーバーのレスポンスが3分以上ないとき、といった条件を設定し、通知を行います。
Heatは、Celilometerのアラームを受けて仮想システムの構成変更指示を出し、リソース管理コンポーネントはリソースの変更を行います。Webサーバーが高負荷時に増設したり、DBサーバーが無応答のときにDBサーバーを再起動したりと、運用を自動化することができます。
一回テンプレートを作成しておけば、同様のサーバー構成のシステムであれば、簡単に同じ構成でサーバーを構築できますし、クラウドに障害が発生してシステムがダウンした場合でも、データのバックアップを取っておけば、迅速にシステムを再構築して復旧することができます。
クラウド上にシステム構築する際には、是非クラウドオーケストレーションを使ってみてください。
Tweet