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

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

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

Webサーバの追加を手動で実現するための例

これらをWakameを使わずに,Webサーバの追加を手動で実行してみましょう。

最初のインスタンスはElasticFoxや,AWS Management Consoleを利用して最初のインスタンスを起動した状態から始めます。

Masterが起動するサーバ上から指示することを前提として記述するため,部分的にリモートで指示する手順もあります。

この程度の手動手順である場合は,実際にシステム管理者がそのサーバにログインして実行する方が効率的ですが,今回はWakameによる構成管理の視点でとらえていただければ幸いです。

コマンドラインからインスタンスを起動する

AMIを指定し,新しいインスタンスを起動します。

新しいインスタンスの起動に成功したかを確認し,引き続きSSH接続ができるかも調べる必要があります。

% ec2-run-instances ami-xxxxxxxx
RESERVATION     r-xxxxxxxx      123456789    default
INSTANCE        i-xxxxxxxx      ami-xxxxxxxx                    pending         0               m1.small        2009-06-17T12:27:59+0000        us-east-1c aki-xxxxxxxx    ari-xxxxxxxx

新しいインスタンスを起動すると,インスタンスID(i-xxxxxxxx)が返ってくるので,これを指定してインスタンスの状態をチェックします。

% ec2-describe-instances i-xxxxxxxx
RESERVATION     r-xxxxxxxx      123456789    default
INSTANCE        i-xxxxxxxx      ami-xxxxxxxx                    pending         0               m1.small        2009-06-17T12:27:59+0000        us-east-1c aki-xxxxxxxx    ari-xxxxxxxx

インスタンスが起動すると以下のように,ステータスがrunningになるほか,アクセスするためのIPアドレスも取得できます。

% ec2-describe-instances i-73376e1a
RESERVATION     r-xxxxxxxx      123456789    default
INSTANCE        i-xxxxxxxx      ami-xxxxxxxx    ec2-x-x-x-x.compute-1.amazonaws.com domU-x-x-x-x-x-A2.compute-1.internal       running   0
                m1.small        2009-06-17T12:27:59+0000        us-east-1c      aki-xxxxxxxx    ari-xxxxxxxx

さっそくSSHを試して接続できるかを確認してみてください。

接続ができない場合は,インスタンスの起動が完了していてもネットワーク系のサービスまで立ち上がっていないことを示しています。

% ssh ec2-x-x-x-x.compute-1.amazonaws.com
Webサーバを起動する

SSHコマンドを利用し,リモートコマンド実行をします。

SSHコマンドはあらかじめ秘密鍵認証を設定しておき,インタラクティブなパスワード問い合わせを無くしておく必要があります。

ここでも,正しくWebサーバが起動したかを確認する必要がありますので,pidの有無をもってプロセスの起動ができたことを確認します(本来であれば,サービスが開始していることを確認するのが良いでしょう⁠⁠。

% ssh ec2-x-x-x-x.compute-1.amazonaws.com /etc/init.d/apache2 start

以下のように,起動したサービスのPIDが存在するかを確認します。

% ssh ec2-x-x-x-x.compute-1.amazonaws.com pidof apache2
2954 2953 2952 2947 2946 2829
ロードバランサーの設定を変更する

Webサーバの起動までは確認できたところで,ロードバランサー(apacheのmod_proxy_balancerで代用します)にこの新しいWebサーバを利用するように設定しましょう。

新しい設定ファイル(new_httpd.conf)に書き換えて,ロードバランサーを再起動することにします。

設定する前に,新しいインスタンスのIPアドレスを取得します。

% host ec2-x-x-x-x.compute-1.amazonaws.com
ec2-x-x-x-x.compute-1.amazonaws.com has address 10.x.y.z

そのIPアドレスをもとに,mod_proxy_balancerの設定ファイルを用意します。

% vim /tmp/httpd.conf
(略) 
  <Proxy balancer://web>
    BalancerMember http://10.a.b.c:8000
    BalancerMember http://10.x.y.z:8000
  </Proxy>
(略) 

設定ファイルを転送します。

% scp /tmp/httpd.conf ec2-x-x-x-x.compute-1.amazonaws.com:/etc/apache2/httpd.conf

転送が完了したら,ロードバランサーを再起動します。

% ssh ec2-x-x-x-x.compute-1.amazonaws.com /etc/init.d/apache2 reload

Wakameがあればここまでの手順を管理できる

Wakameはこれらの手順を各サーバ上で適宜実行するための仕組みを持っています。

今回は,Wakameのデモ用にAMIを用意しましたので,これで一連の操作方法を見ていくことにします。

著者プロフィール

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

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

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


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

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

URLhttp://vcxzasdf.blogspot.com/


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

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

URLhttp://blog.hansode.org/