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

第3回 クラウド上でスケールアウトするシステムの作り方と実例

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

今回から2回に分けてWakameの基本的な使い方を説明します。前提の知識としては,Amazon Web Servicesのアカウント(AWSアカウント)をお持ちでAWS Management Console等を使い,仮想マシンの起動を行ったことがある方を対象としています。

Amazon EC2へのアクセスやAWSアカウントの準備については,過去の特集はじめてのAmazon EC2&S3 ~これからの新サービスの公開の形~を参考になさるか,以下のオンラインの記事を参考にしてください。

システムをスケールアウトさせるための考え方

まず,Amazon Auto Scalingがそうであるように,WakameもAMI(Amazon Machine Image)の単位でインスタンスを起動することになります。

システムを起動するために必要な全てのサービスを1つのAMIに詰め込み,そこにWakameのMasterとAgentをインストールしておきます。

図1 WakameのMasterとAgentをインストールされたAMIを起動したイメージ

図1 WakameのMasterとAgentをインストールされたAMIを起動したイメージ

単一AMIを複数起動し,設定を調整することでスケールアウトするようにしておく

Amazon EC2上でスケールアウトさせるための原則として以下の通りに運用することとしています。

  • インスタンスを起動する際には,同じ1つのAMIを元にする
  • Wakameは,そのインスタンス上に必要なサービスを起動する・しないを制御する
  • Wakameは,必要であればそのサービスの設定を書き換える

そのため,AMIにインストールされたサービスは,基本的にWakameや最低限必要なサービス以外は,OSの準備完了と同時に自動起動しないようにinit.dの設定をオフにしておきます。

代わりに,Wakameはスタートアップスクリプトを自ら制御しに行きます。

人手でやるのであれば,/etc/init.d以下のスタートアップスクリプトを順序良く実行していくことになります。

必要なときに自らインスタンスを起動することでスケールアウトする

Wakameのマスターが必要なタイミングでAmazon Web Servicesへ通信し,自分と同じAMIを自ら指定してインスタンスを起動します。

図2 Wakame Masterが自ら同じAMIでインスタンスを起動指示する

図2 Wakame Masterが自ら同じAMIでインスタンスを起動指示する

MasterからAmazon EC2のインスタンスを起動する際には,User Dataという領域を使って,インスタンスに初期値を与えることができます。

これによって,Agentが既に起動しているMasterと連携するために必要な情報を与えることができるのと同時に,Masterが複数起動してくることを防ぎます。

図3 次のインスタンスが起動してきたところ

図3 次のインスタンスが起動してきたところ

上図のところまで起動すると,あとはMasterからAgentに通信して,新たなインスタンス上に何を起動すべきかを指示できるようになります。

著者プロフィール

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

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

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


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

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

URLhttp://vcxzasdf.blogspot.com/


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

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

URLhttp://blog.hansode.org/