Wakameで始めるAWS

   株式会社あくしゅ
     山崎泰宏
山崎泰宏の自己紹介
新しもの好きな
小さい会社やってます
Virtual Sound Horror House - 1999
Virtual Sound Horror House - 1999
Paco - 2001
Paco - 2001
Paco - 2001
Viewer   仮想空間
『なんか、Webの世界もVRっぽいな』
Browser   Web
そこで2000年に
コミュニテゖプラットフォームを
作りましたが…
見事スケーラビリティに屈した
2000年当時は何が課題だったか
• 物理サーバを調達できなかった
 – 学生だったので買うのは一大決心だった
  • (それでも5台までは何とかした…)
 – 研究室に置くところが無かった!
• スケールアウトのノウハウが無かった
 – 作ったソフトウェゕが
   ボトルネックとなって分散させられない
置く場所を借りたら良い
従来のハウジングデータセンタ
従来のホスティングデータセンタ
負荷が高いので、
サーバ追加したいんですけど…



  はい!
  1週間かかります♪
設定ミスっちゃったので、
電源入れ直したいんですけど…



  はい!
  1万円かかります♪
どうやらサーバのHDDが
故障したみたいなんですけど…



  はい!
  セットアップから
  やり直してください♪
僕たちは何かにおびえながら
サーバの中に閉じ込められて
暮らしていたようなものです。
そうこうしていたら
IaaS型クラウドが出てきた
僕たちはそれの何に歓喜したか
仮想化されているところ
     …だろうか?
VPSなら他にもあります!
所有から利用へ
 …だろうか?
それはリースの話しです!
従量課金になったから
    …だろうか?
かつては時間割制でした!
では一体何が…
Web APIによる自動応答があるからです
負荷が高いので、
      サーバ追加したいんですけど…



Web API
          はい!
          数分でやります♪
設定ミスっちゃったので、
      電源入れ直したいんですけど…



Web API
          はい!
          無料でやります♪
どうやらサーバのHDDが
      故障したみたいなんですけど…



Web API
          はい!
          過去の複製を起動します♪
これは運用が劇的に変わる




  しかも、良い方向に。
あなたが神か…
ここまでのまとめ
• Amazon Web Servicesは-
  – 仮想マシンを巧みに利用した
    ホステゖングサービス
  – Web APIを提供し、
    顧客に自由とスピードを与えた
    • 言い方を変えると、
      セルフサービス化をした
    • 従量課金制はWeb APIのスピードを殺さない手法
正確にはブラウザなどの
クライアントソフトウェアから
    Web APIに指示が行く
例) Elasticfox / S3Fox   (Firefox Plugin)




       Elasticfox

                    S3Fox
Web APIと通信する様子も確認可
…と言うことは、
マウスに触れずサーバを起動するとか
色々と全自動化する仕組みが…
…できた!



2009年4月22日に最初のリリース。
Wakameはデータセンタを
高レベルでコントロールするもの
1.管理すべきマシン全てに゗ンストールし、
  手順を与えることでそれを自動的に実行する。
  システム管理者の代わりに働く!

2.応用としてシステムの
  スケールゕウトが可能になる。
  Amazon EC2と組み合わせてご利用いただくと効果抜群!

3.Ruby+AMQPの構成で動く
  オープンソースソフトウェゕ。
  どなたでも無償である限り無料でご利用可能!
Wakameは人間が管理するより素早く
     サーバ台数を自動で増やす

初期状態   (1) マシン確保   (2) サービス起動     (3) 接続
 ロード      ロード         ロード           ロード
バランサ     バランサ        バランサ          バランサ


 Web    Web         Web    Web    Web    Web
サーバ    サーバ         サーバ    サーバ    サーバ    サーバ


 DB        DB          DB            DB
サーバ       サーバ         サーバ           サーバ


 Wakameは、これらを数分で完了させます
逆順で減らすこともできる
減らすことがメリットになる
                             事業目標で求められる
サ        大手企業的なゕプローチの        サーバ数
ー
バ        サーバ数
数

                        事業の過程で求められる
                        理想的なサーバ数

     キ
潤    ャ                  不要なサーバ数
沢    ン
な    ペ
初    ー
期    ン
費    中
用
     (




     流
     入      キャンペーン後の効果(定着)
     )




                                 時間
どのくらい簡単になるのか
Rails(mod_passenger)用の
  マシンを10台にしたい時

# wakameadm propagate_service ¥
  Apache_APP 10

 コマンド1行で、後は見ているだけでOKです。
MySQL(Slave)用の
   マシンを5台にしたい時

# wakameadm propagate_service ¥
  MySQL_Slave 5

MySQLのMaster DBからReplicationが始まります。
Load
                    Balancer

               Static    Passenger   Passenger   Passen

                Load      MySQL
              Balancer    Master

SQL   MySQL   MySQL
ave   Slave   Slave
クリエイティブな時間にしろ、って




  小島さんも言っているわけだし
標準で対応しているプロダクト
• 組込済
 –   Apache2 (Load Balancer/Asset/Application)
 –   Nginx (Asset/Application)
 –   MySQL (Master/Slave)
 –   memcached
 –   Elastic Load Balancing
 –   Elastic IP
• 現在対応中
 – MongoDB (Multi Master - Sharding)
• 自分で拡張することも可能
 – start/stopなどの゗ベントに応じたコントロール
 – init.d相当のことを書くだけなのでシンプル
Wakameはシステム管理者として
どのような振る舞いをするのか
全体像の概要
                                 Amazon
                                   S3
                                 Storage
                                 Machine
                                 Amazon
                                  Image
                                 Machine
                                   File
                                  Image

                                 Master



                                 Agent
               Amazon EC2
               Server + Xen
                Server + Xen     Others
                  Server + Xen
                                 (Web+DB+
                                   etc.)
                 Web API
Elasticfoxなど
Wakameの原理(1/7)

                             Storage
                             Machine
                              Image
                               File

                             Master

                             Wakame
                             Agent


           Server + Xen
            Server + Xen     Others
              Server + Xen
                             (Web+DB+
                               etc.)
             Web API
マシン起動
Wakameの原理(2/7)
 Machine
  Image
   File
                          Storage

 Master                   Machine
                           Image
                            File

 Agent                    Master


 Others
 (Web+DB+                 Agent
   etc.)


        Server + Xen
         Server + Xen     Others
           Server + Xen
                          (Web+DB+
                            etc.)
            Web API
Wakameの原理(3/7)
         Machine
          Image
           File
                                  Storage

         Master                   Machine
                                   Image
サービス起動
                                    File
指示
         Agent                    Master
                     サービス起動
         Others
         (Web+DB+                 Agent
           etc.)


                Server + Xen
                 Server + Xen     Others
                   Server + Xen
                                  (Web+DB+
                                    etc.)
                    Web API
Wakameの原理(4/7)
        Machine
         Image
          File
スケールゕウト計画の指示                       Storage

          Master                   Machine
                                    Image
                                     File

          Agent                    Master


          Others
          (Web+DB+                 Agent
            etc.)


                 Server + Xen
                  Server + Xen     Others
                    Server + Xen
                                   (Web+DB+
                                     etc.)
                     Web API
Wakameの原理(5/7)
        Machine
         Image
          File
                                 Storage

        Master                   Machine
                                  Image
                                   File

        Agent                    Master

マシン起動
        Others
        (Web+DB+                 Agent
          etc.)


               Server + Xen
                Server + Xen     Others
                  Server + Xen
                                 (Web+DB+
                                   etc.)
                   Web API
Wakameの原理(6/7)
 Machine              Machine
  Image                Image
   File                 File
                                 Storage

 Master               Master     Machine
                                  Image
                                   File

 Agent                Agent      Master


 Others               Others
 (Web+DB+             (Web+DB+   Agent
   etc.)                etc.)


        Server + Xen
         Server + Xen            Others
           Server + Xen
                                 (Web+DB+
                                   etc.)
            Web API
Wakameの原理(7/7)
        Machine              Machine
         Image                Image
          File                 File
                                                 Storage

        Master          Master                   Machine
                                                  Image
                    サービス起動
                                                   File
                    指示
        Agent                Agent               Master
                                        サービス起動
        Others               Others
        (Web+DB+             (Web+DB+            Agent
          etc.)                etc.)


               Server + Xen
                Server + Xen                     Others
                  Server + Xen
                                                 (Web+DB+
                                                   etc.)
 勝手に               Web API
増えた!
デモンストレーション
• 概要
 – サーバ数を指定すると、
   自動的にWebサーバが増強されるデモです
 – 増えたWebサーバにゕクセスが分散している
   ことを確認します
初期状態
Machine
 Image
  File
                         Storage

Master                   Machine
                          Image
                           File

Agent                    Master


Others
(Web+DB+                 Agent
  etc.)


       Server + Xen
        Server + Xen     Others
          Server + Xen
                         (Web+DB+
                           etc.)
           Web API
SSH接続して詳細を確認する
            Machine       root@ip-10-251-xx-xx:~# top

             Image        top - 08:48:02 up 2 min, 1 user, load average: 0.04, 0.07, 0.03
              File        …(snip)…
                           PID USER     PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
                                                                           Storage
wakameadm                 1237 root     15 0 28648 13m 2108 R 0.0 0.8 0:00.07 wakame-agent
                          1254 wakame 15 0 47416 32m 2228 R 0.0 1.9 0:00.44 wakame-master
            Master                                                         Machine
                          root@ip-10-251-xx-xx:~# ./wakameadm status        Image
                          Cluster : Wakame::Service::WebCluster (0)          File
                           Wakame::Service::Apache_LB : <min=1, max=1>
                           Wakame::Service::Apache_WWW : <min=1, max=1>
            Agent          Wakame::Service::Apache_APP : <min=1, max=5>Master
                           Wakame::Service::MySQL_Master : <min=1, max=1>

                          Agents :
                           i-f603649f : 10.251.xx.xx, 67.202.xx.xxx load=0.06, 3 sec(s) (1)
            Others
            (Web+DB+                                                         Agent
              etc.)


                   Server + Xen
                    Server + Xen                                             Others
                      Server + Xen
                                                                            (Web+DB+
                                                                              etc.)
                       Web API
デモの進行
• 次に計画的スケールを実施します
 – Webサーバを1台から5台にスケールゕウトします
 – Webサーバを5台から1台に減らします
• ブラウザで動作確認をします

LB                  LB

Web     Web   Web   Web   Web   Web
Wakame v.s. Auto Scaling
• Auto Scalingは基本的に
  ゗ンスタンスの起動と終了を
  コントロールする
 – Reactive Scaling(負荷に反応する)
 – 簡単で良い!
• Wakameは、Linuxプロセスとして動く為、
  もっと積極的に管理したい人向け
 – 主にProactive Scaling(計画的に行動する)
Wakameは何故
 Proactive Scalingにしたのか?
• Reactiveは、簡単だがシビア
  – 負荷の閾値調整が大変
    • 緩めれば、必要無い台数増えてしまう。
    • 締めつければ、必要な時に増えなくなってしまう。
  – 予算が見積もりづらい
• Proactive ScalingはReactiveもカバー
  – トリガを自由に定義できる
    • 時間をトリガにして計画的スケーリング
    • 負荷をトリガにしてReactiveな挙動に見せかける
Wakameの得意な仕事
• CPU負荷/トラフゖックと関係のない
  スケールゕウト
 – バッチ処理など


• スケールゕウト/゗ンに対する+αの処理
 – 監視との連動
 – L7的には通信可能でも、すぐLBに加えず、
   もう少しゕプリが準備できるまで待つ
 – サーバ終了前のログ退避手順の実行
 – MySQLのレプリケーション手順の実行
積極的に管理する例
• 東芝様のフゔームウェゕ配信にWakameが
  使われている (from 日経SYSTEMS)
 – http://itpro.nikkeibp.co.jp/article/NEWS/20100226/345120/


• 某広告集配信サービス
 – ユーザ単位に配信すべき広告をバッチ処理
     • Queue(Amazon SQS)からpopしてひたすら処理す
       るので、CPU負荷は一定のまま
     • Queueにある程度溜まり始めたら増やしたい
開発者への余波
今までと違う「当たり前」の世界
今使っているサーバを
必死にメンテナンスする必要は
もうない
ec2-run-instances




  さっさと新しいマシンを用意して
ec2-terminate-instances




   捨てるのが当たり前
これらが
たった数分の間に起こる時代
新時代の開発者は
この事実を使いこなす
まとめ
• AWSを使うと、運用が劇的に変わる
 – 人間よりも遙かに素早い応答
  • Web APIこそIaaS型クラウドの神髄
 – プログラマブルゆえの運用全自動化
  • Wakameのような複雑なオートスケール
  • 構成が変化することを前提としたシステム開発を
 – 必要なときに必要なだけ
  • マシンの使い捨てで形作られるワークスタ゗ル
• Wakameで素敵なAWSラ゗フを。
『世界のクラウドソリューションへ!』




                 82
まだまだ楽しくやんよ!



 axsh co., LTD.




                  83

InfoTalk - Wakame