2010年6月19日
日本PostgreSQLユーザ会
株式会社サーバーワークス クラウドオペレーション部
柳瀬任章

PostgreSQL on Amazon EC2の可能性
アジェンダ

 自己紹介
 検証概要説明
 サーバー構成
 検証に使用したスクリプトについて
 障害発生、確認、復旧
 利用料金
 検証結果まとめ
自己紹介

柳瀬 任章(やなせ ひであき)
株式会社サーバーワークス
クラウドオペレーション部所属
インフラ担当
背景

 既存のWebサービスをAmazon EC2へ移
 行するにあたり、以下の条件をもとに検
 証作業を行いました
  pgpool-IIの運用ノウハウを生かしたい
  アプリケーション側に接続先DBの自動切り替
  え機能がない
検証の概要

 Amazon EC2上でPostgreSQLとpgpool-
 IIを運用する場合において、以下について
 レポートします
  構成案
  障害時の復旧時間
構成図(Amazon EC2)


                                                   PostgreSQLサーバー1号機
                     Webサーバー1号機



           ロードバランサ
                                   pgpool-IIサーバー




                     Webサーバー2号機                     PostreSQLサーバー2号機




                       監視サーバー


※注意
各サーバーはAmazon EC2上のUS-WESTリージョンで稼働            pgpool-IIサーバーAMI
各サーバーはグローバルIPとローカルIPの両方が割り当たっています
Webサーバー以下の通信はローカルIPを使用して通信します
上記構成はあくまで論理的なものであり、各サーバーがインターネットに接続されています
ソフトウェア

 CentOS 5.5
 PostgreSQL 8.4.4
 pgpool-II 2.3.3
 Ruby 1.8.5
 弊社製のrubyスクリプト
   pgpool-II監視スクリプト
   hostsファイル変更スクリプト
今回の構成にした理由

 Amazon EC2の特徴
  ローカルIPとグローバルIPは仮想サーバー起
   動時に自動設定される
  ローカルIPは自由に変更する事が出来ない
  仮想IPを使用する一般的な冗長構成は難しい
障害発生時の流れ



                                        PostgreSQLサーバー1号機
           Webサーバー1号機



 ロードバランサ
                        pgpool-IIサーバー




           Webサーバー2号機                    PostreSQLサーバー2号機




            監視サーバー



                                  pgpool-IIサーバーAMI
監視サーバーで起動させておくスクリプト

 pgpool-IIへの接続を行う
   成功した場合
     監視は成功したので、継続して監視をする
   失敗した場合
     新しいpgpool-IIサーバを起動して監視を再開
      成功した場合はサーバーの起動に成功したので、継続
       して監視をする
      失敗した場合はサーバのー起動に失敗したので、さら
       に新しいpgpool-IIサーバーを起動する
 スクリプトのURL
   http://github.com/serverworks/jpug-
  2010-summer-seminar
pgpool-IIサーバーで自動実行するスクリプト


 割り当てられたローカルIPを取得する
 監視サーバ, Webサーバー1号機, 2号機の
  各ホストについて、以下の処理を行う
  SSH接続して、/etc/hostsに含まれる
  pgpool-IIホストのIPアドレスを書き換える
 スクリプトのURL
 http://github.com/serverworks/jpug-
 2010-summer-seminar
障害発生



                 ①サーバー停止中
   ②サーバー停止開始時刻
障害確認




 ①サーバー停止確認時刻




②DB接続障害確認、新サーバー起動
復旧確認




①サーバー起動時刻
Webサーバーからの復旧確認




①DB接続復旧時刻
復旧までの時間

状態                       時刻
障害発生                     14:15:10
監視スクリプトが障害検知、新サーバー起動開始 14:18:31
新サーバー起動確認                14:19:47
新サーバーDB接続確認              14:20:20




 ダウンタイム:5分10秒
      スクリプト改善の余地あり
 サーバー起動開始からの復旧時間:1分49秒
1ヶ月の利用料金
                                              各サーバのディスクI/O
                                              6台分 7,260円
  11,340円
                           6,840円

2,586円
                                           PostgreSQLサーバー1号機
              Webサーバー1号機


                                                         6,840円
    ロードバランサ
                           pgpool-IIサーバー




              Webサーバー2号機                    PostreSQLサーバー2号機
  11,340円

                                                        6,840円
               監視サーバー
   6,840円
                                     pgpool-IIサーバーAMI
まとめ

 Amazon EC2でpgpool-IIを冗長化する場
  合、仮想IPを使用した冗長構成は難しい
 Amazon EC2ではサーバーをスクリプト
  から操作し、直ちに用意する事が出来る
 監視システムと連動させる事でpgpool-II
  サーバーの自動復旧は実現可能
Cloudworks

 Amazon EC2を日本語で運用出来ます
 http://www.cloudworks.jp
ご清聴ありがとうございました

PostgreSQL on Amazon EC2の可能性