JAWS-UG Summit2012にいってきた (2012-03-03)第二日目 その2
ここからはパターン実践編。仮想シナリオをもとにパターン適用していきます。
クラウドデザインパターン コンテンツ配信編 (Amazon 片山氏 @c9katayama)
- シナリオ
- 雲の写真を載せるブログサイト開始
- はじめは個人的に開始
- 動画や過去画像集も公開
- まさかの大人気
- まさかの海外展開
- ブログサイトの開始
- MovableTypeをEC2のインストール
- EIPでIPアドレスを振って、Route53でDNSレコードを管理
- スタティックパブリッシング(MTから静的コンテンツ作成)
- インスタンス1台で運用
- 動画・過去画像集を公開
- 課題
- サイズが大きく、ダウンロード負荷の高いコンテンツの配信
- EC2のスケールアップ・アウトが費用がかかる
- データ容量は未知数
- 課題
-
- そこで「WebStorageパターン」ですよ
- アクセス不可の高い動画や画像コンテンツをS3に逃すパターン
- S3のDNS名をCNAMEに登録して仕様
- S3のWEBサーバ機能を利用
- EC2を複数立てるより安価
- そこで「WebStorageパターン」ですよ
- まさかの大人気
- アクセス増加によりアクセスできない状況に
- EC2やELB導入は費用がかかる
- そこで「DirectHostingパターン」ですよ
- パターン適用
- MTで生成したファイルをすべてS3へ定期保存
- サイトのメインDNSをS3へ割り当て、訪問者はS3へ
- S3マウントのソリューション
- S3へデータコピーするOSSを利用する
- S3FSなど
- まさかの海外展開
- 課題
- 海外のマニアがサイト発見
- 海外の有名ニュースサイトへの掲載が決定
- 掲載までに海外の対応を行う
- 課題
-
- そこで「Cache Distributionパターン」ですよ
- ユーザに近い場所からの配信
- 世界各地のエッジサーバを利用し、オリジンサーバのコンテンツをキャッシング
- AmazonCloudFrontを利用
- そこで「Cache Distributionパターン」ですよ
-
- パターンの適用
- 3つのサブドメインを利用
- ブログコンテンツ(www)、動画・画像(data)、コンテンツ管理コメント投稿(mt)
- S3から配信するデータは、S3のファイルをCloudFrontへ展開
- メインコンテンツをS3+CloudFrontにしたので更新が遅い(最大1時間など)
- CloudFrontへの初回アクセスは遅い。更新後、バッチでクロールしておくなど
- パターンの適用
- 最終型
- コンテンツ=S3
- 画像・動画=CloudFront+S3
- Blog投稿=EC2
- 重要なのは、最初だけでなく周期的なカイゼン
クラウドデザインパターンEC編 (玉川氏)
- シナリオ
- 雲グッズ販売サイト開始
- ECサイトをとりあげ「可用性」「耐障害性」を高めるパターンを中心にQWSを使用した実装方法を解説
- FloatingIPパターン
- 課題
- 利用ソフトのバージョンアップが必要
- テスト環境でバージョンアップし、懸賞して、本番環境とのIPアドレス入れ替えを行う
- 解決
- EIPでサーバに静的IPを振って、切り替える。Route53を使えばDNSの伝播は一瞬
- Server Swappingパターン
- Multi-Serverパターン
- 課題:
- Webサーバが落ちてもシステム全体で稼働し続けるようにしたい
- Multi-Serverパターンを適用し、Webサーバを冗長化する
- 解決
- ロードバランサ(ELB)
- WEBサーバ(EC2)x2の冗長構造
- DBサーバ(RDS)
- の3層構造にする。
- 課題:
-
- パターンの適用
- DBデータをダンプする
- 作成したRDSのDBインスタンスにインポートする
- ECCudeのデータベースの接続情報をRDSに書き換える
- パターンの適用
-
-
- ヘルスチェックの設定
-
-
-
- ELB配下にEC2を追加
- 切り離しテストも可能
-
- DBReplicationパターンの適用
- 課題:
- DB部分のSPOF(単一障害点)を解消したい
- 対応
- RDSでマルチAZを設定。障害時に自動でスタンバイサーバのレプリカDBに切り替わる
- 課題:
- Multi-Datacenterパターンの適用
- 課題
- サーバレベルだけでなくデータセンタレベルの障害にも対応できるようにする
- 対応
- ロードバランサ以下のレイヤをマルチリージョンで設定する。
- EC2から異なるリージョンのRDSへ接続は可能(遅延はある3-5ms)
- 課題
- 最終型
- ELB(ロードバランサ)
- (異なるリージョン)のAZ(AbilityZone)にEC2-RDSを2台配置
- RDSはMultiAZとして、一台をスタンバイとし、2台のEC2はメインサーバに接続する
- その他適用可能なパターン
- Multi-Region
- DeepHelthCheck
デザインパターン キャンペーンサイト編(鈴木氏 cloudpack(iret社) @suz_lab)
- CloneServerパターン
- サーバのクローン
- 現状のシステムを変更することなく容易にスケールアウト
- マスタEC2がSPOF
- ファイルアップロードなどはマスタで
-
- マスタのAMIをEC2に展開。
- ファイルはマスタにアップし、rsyncで定期的にスレーブに同期
- マスタのAMIをEC2に展開。
- ScaleOutパターン
- NFS Sharingパターン
- NFSReplicaパターン
- 残る課題はDBがボトルネック
- Read Replicaパターン
- 読み取り専用のDBを作成
- 頻度の高い読み込みの複製
- DBの読み取りクエリの負荷分散
- データ解析用途で利用することも可能
- 非同期レプリケーションになることを注意
- 課題:アクセスは静的コンテンツがほとんどだった!
- URLRewritingパターン
- 静的コンテンツの退避
- 静的コンテンツのアクセスをS3/CF(CloudFront)に
- mod_ext_filterやNginxでURLの書き換え(WEBサーバ側で静的コンテンツのURLを書き換えてS3へ振る)
- CloudFrontの場合は、コンテンツがキャッシュ