"Wakame"で始めるクラウドコントロール

第2回 クラウド上でサーバ構成を管理するための考え方と仕掛け

この記事を読むのに必要な時間:およそ 4 分

作業を並列処理するための仕組み

ここまでで,MasterはAgentに対しアプリケーションのコントロールする指示を出せる仕組みがそろいました。あとは,指示を出す並列処理をどう実現するかが肝となります。

以下の図は,Masterの中で並列的に手続き処理が行われている様子を図示したものです。

図4 EventとActionの関係図

図4 EventとActionの関係図

Event

Masterは,このInstanceで発生している全ての出来事をEventという形で管理しています。次に述べるActionから,通知して欲しいイベントをあらかじめEventへ申請しておけば,Eventは該当するイベントが発生すると希望者のイベントキューへ配信するようになります。

Eventの例としては,以下のようなものがあります。

  • Clusterの状態が変わったとき(ClusterStatusChanged)
  • サービスが起動/終了したとき(ServiceOnline/ServiceOffline)
  • Agentが認識されたとき(AgentMonitored/AgentUnmonitored)
  • Agentが数秒ごとに定時連絡をしてきたとき(AgentPong)
Action

Wakameでは,システム管理者が行う作業をActionという形で記述することができます。Masterにはツリー構造状に連鎖したActionを手順として保持させます。

Action内部は基本的に直列処理となっており,直列で手順を書いていく中で,並列処理にしたい部分は,さらにActionを発生させることで実現することができます。また,Actionは自分に必要なイベントをEventに申請し,そのイベントの状態を監視することで,しかるべき状態になるまで待つような処理を入れることができます。

このようにして,ActionはInstance全体の調和をとりながら記述していくことが可能になっています。

作業の呼び出し方

Actionを起動する方法はいくつかあります。

  1. wakameadmコマンドによるMasterへのメッセージ送信
  2. Masterの内部に設定されたスケジューラ
  3. Agentから報告されたメッセージ

最初(1)のコマンドは,WakameのGetting Startedにも記載されているように,いつでも好きなタイミングでActionを起動する方法です。wakameadmコマンドが理解できるオプションを指定することで,任意のActionを起動できます。

次に(2)のスケジューラですが,内部的にはTimedSequenceと呼ばれているものです。時間を指定し,Clusterで示される各Instanceの数を指定するだけで,その時間になるとInstanceの数の帳尻を合わせるために,しかるべきActionを起動するものです。Proactive Scaling(計画的なスケールアウト)はこの機能で実現します。

最後に(3)ですが,Agentは仮想マシンの状態を定期的にMasterへ報告しており,この報告内容をきっかけに任意のActionを起動するという方法です。実は計画的なスケールアウトとは別に,WakameにはReactive Scaling(負荷の増加などをきっかけにしたスケールアウト)を実現するために必要な仕組みが備わっています。

次回予告

次回は,Webサーバをスケールアウトする設定方法を解説し,wakameadmコマンドからこうしたActionを実際に呼び出して動作を確認してみたいと思います。

著者プロフィール

山崎泰宏(やまざきやすひろ)

株式会社あくしゅ所属。Wakameをやろうと思いつくところを担当。物静かな技術者の代わりに話をする。

URLhttp://blog.livedoor.jp/sparklegate/


藤原勝弘(ふじわらまさひろ)

株式会社あくしゅ所属。Wakameのコア実装を担当。コンシューマ向けサービスの開発や,外資金融系の堅牢なデータセンタ業務経験もあるカバーレンジの広い多才なプログラマ。

URLhttp://vcxzasdf.blogspot.com/


吉田将士(よしだまさひと)

株式会社あくしゅ所属。WakameをDBスケールなどに応用する開発を担当。大規模なデータセンタの運用経験を持っており,サーバ管理手順の自動化に興味津々な筋トレプログラマ。

URLhttp://blog.hansode.org/