CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
先日、「SDN/クラウドプログラムコンテスト」というイベントに審査委員として参加してきました。最優秀賞は、ネットワーク関連の研究所に所属するプロフェッショナルのグループが受賞しましたが、筆者は神戸情報大学院大学の学生チームを特別賞に推薦させていただきました。当日の表彰式の様子は、沖縄オープンラボラトリのFaceBookで公開されています。
この学生チームの作品は、Linux KVMの環境で、Vyattaをロードバランサとした負荷分散構成のWebサーバーをオートスケールさせるというものです。オートスケールの仕組みそのものは、特別に新規性のあるものではありません。しかしながら、負荷の計測、仮想マシンの自動構築、スケールインで停止した仮想マシンのプーリング(負荷が下がって不要になった仮想マシンはすぐに破棄するのではなく、サスペンド状態で再利用可能にしておく)など、実用的なオートスケールに必要な技術要素を的確に洗い出して、ライブデモを成功させる所まで、きちんと実装していた点に感銘を受けました。クラウドは、サーバ仮想化を中心とするインフラ技術を学ぶには最適の教材だと、改めて感じさせられる発表でした。
さて、今回は「オートスケール繋がり」ということで、OpenStackのオーケストレーション機能を提供する「Heat」を紹介します。Heatは、Amazon Web Services(AWS)のCloudFormationをモデルにしたツールで、OpenStackが提供するクラウド上で、複数の仮想マシンインスタンスからなる環境を自動構築することができます。さらに、Heatを利用してオートスケールを実現することも可能です。
具体例として、OpenStackのクラウド上に、図1の環境を自動構築することを考えてみましょう。フロントエンドのWebアプリケーションサーバ(ここでは、Ruby on Railsのアプリケーションを想定)とバックエンドのデータベースサーバ(ここでは、PostgreSQLサーバを想定)からなる、典型的な構成例です。
図1 Heatで自動構築できる環境の例
OpenStackには、カスタマイズ・スクリプトという機能があり、仮想マシンインスタンスを起動する際に任意のスクリプトを送り込んで、ゲストOS起動時に、これを自動実行することができます。PostgreSQLをインストールしてDBサーバを構築したり、Ruby on Railsのアプリケーションを自動セットアップするだけであれば、カスタマイズ・スクリプトで自動化することができます。
しかしながら、複数の仮想マシンインスタンスを連携させる部分で問題が発生します。たとえば、図1のVM#2において、アプリケーションを導入した後に、データベース上にテーブルを作成するなどの処理は、VM#1の構築が完了して、データベースに接続可能になった後に実施する必要があります。それでは、データベースサーバの構築が完了したことは、どのようにして検知すればよいのでしょうか? あるいは、VM#2からデータベースに接続する際は、VM#1に割り当てられたプライベートIPを指定する必要があります。ところが、このプライベートIPは、仮想マシンインスタンスを実際に起動するまで決まりませんので、VM#2に送り込むカスタマイズ・スクリプトに事前に埋め込むことができません。
このような問題は、Heatを利用すると解決できます。Heatの仕組みの概要は、図2のようになります。
図2 Heatのアーキテクチャー
Heatでは、複数の仮想マシンインスタンスからなる環境を「スタック」と呼んでおり、スタックの構築に必要な情報をJSON形式の「テンプレートファイル」にまとめて記述します。テンプレートファイルの中では、仮想マシンインスタンスのプライベートIPなど、環境構築時に動的に決まる情報をマクロ変数で埋め込んだり、カスタマイズ・スクリプトの中から、必要な環境設定が終わったことをHeatに通知することができます。
先ほどの例では、VM#1のカスタマイズ・スクリプトからデータベース構築完了の通知を受けた後に、VM#2の構築を開始したり、VM#1のプライベートIPをVM#2のカスタマイズ・スクリプトに埋め込むなどの処理が可能になります。このような処理を記載したテンプレートファイルをAPI経由で「Heatエンジン」に送り込むと、後は、Heatエンジンが自動で環境構築を行います。
テンプレートファイルの実例については、筆者のBlog記事「RDO(Havana)でHeatを試す」を参考にしてください。実際に、Heatを利用できる環境の構築手順も記載しています。
本文では説明しませんでしたが、Heatでは、一度構築したスタックを後から構成変更することも可能です。テンプレートを修正して、再度、Heatエンジンに送り込むと、現在のスタックの状態との差分を検出して、追加の構築作業を行います。仮想マシンインスタンスを追加するだけではなく、既存の仮想マシンインスタンスを削除することもできます。
これを利用すると、アクセスの負荷に応じて、仮想マシンインスタンスを追加/削除するオートスケールを実現することができます。負荷を測定して、それをHeatエンジンに伝える仕組みが必要になりますが、この部分については、OpenStackのメータリングツールであるCeilometerと連携させる方向で開発が進んでいるようです。
少し先の話になりますが、3月上旬に開催される「オープンソースカンファレンス 2014 Tokyo/Spring」では、Heatのライブデモを実施する予定です。興味のある方は、ぜひご参加ください(*1)。
さて、今週末は、OpenStackの定例イベント「OpenStack Day 2014」に参加してきます。次回は、このイベントからの話題をお届けしたいと思います。
*1)「クラウドオーケストレーション『OpenStack Heat』に迫る!」
「オープンソースカンファレンス 2014 Tokyo/Spring」で発表予定の資料です。
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes