JAZUG CDP勉強会第二回クラウドデザインパターン超入門=「コンピューティングの分割、配置」 「オートスケーリング」
AWSクラウドデザインパターン(CDP) - Eコマース編 -
-
Upload
-ken-tamagawa-amazon-web-services -
Category
Technology
-
view
7.215 -
download
2
description
Transcript of AWSクラウドデザインパターン(CDP) - Eコマース編 -
AWSクラウドデザインパターン -Eコマース編-
自己紹介
名前 玉川憲
所属 アマゾンデータサービスジャパン株式会社
ID @KenTamagawa
好きなもの イカとミスチル
好きなAWSサービス AWS DynamoDB
やりたいこと
AWSクラウドを
より伝わりやすくしたい
既存ノウハウを伝えたい
(暗黙知→形式知化)
そこで
AWSクラウドデザインパターン[beta]
(略して、CDP)
AWS クラウドデザインパターンとは
AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。
www.facebook.com/awscdp
AWS クラウドデザインパターンとは
AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。
http://aws.clouddesignpattern.org
Wikiでノウハウを共有
例: Clone Serverパターン
仮想 サーバ
Web Web
ロードバランサ
マシン イメージ
Web
①サーバ起動
仮想 ディスク
マスタ
②ディスクを同期
CDPカテゴリ (as of 2012/03/03)
基本パターン Snapshot Stamp Scale Up Ondemand Disk 可用性を高める Multi-Server Multi-Datacenter Floating IP Deep Health Check 動的コンテンツを処理 Scale Out Clone Server NFS Sharding NFS Replica State Sharing URL Rewriting Rewrite Proxy Cache Proxy
静的コンテンツを処理 Web Storage Direct Hosting Private Distribution Cache Distribution Rename Distribution クラウドへデータをアップロード Write Proxy Storage Index Direct Object Upload リレーショナル・データベース DB Replication Read Replica Inmemory DB Cache Sharding Write
バッチ処理 Queuing Chain Priority Queue Job Observer Scheduled Autoscaling 運用保守 Bootstrap Cloud DI Stack Deployment Server Swapping Monitoring Integration Web Storage Archive ネットワーキング OnDemand NAT Backnet Functional Firewall Operational Firewall Multi Load Balancer WAF Proxy CloudHub
Ninja of Three
CDP、誰が作ったの?
Ninja of Three
このシナリオの前のシナリオ
雲の写真を載せるブログサイト開始
はじめは個人的に開始
動画や過去画像集も公開し始める
まさかの大人気
まさかの海外展開
デザイン推移
動画 人気
海外 最終
このシナリオの背景
まさかの 雲グッズ販売サイト開始
この実装シナリオの狙い
Eコマースサイトをとりあげ、
可用性
耐障害性
を高めるパターンを中心にAWSを使用した実装方法を解説
利用環境・ソフトウェア
EC-CUBEバージョン 2.11.4
Amazon Linux (64bit)
PHPバージョン PHP 5.3.8
DBバージョン MySQL 5.1.52
ec.cloudesignpattern.org
EC-CUBEバージョン 2.11.4
Amazon Linux (64bit)
PHPバージョン PHP 5.3.8
DBバージョン MySQL 5.1.52
初期のデザイン
EC-CUBE Apache MySQL
課題
課題: 利用ソフトのバージョンアップが必要
テスト環境でバージョンアップ、検証して、本番環境との入れ替えにFloating IPを利用
Floating IPパターンの適用後
EC2
テスト 環境
④EIPを付け替える
EC2
本番 環境
EIP
Amazon Route 53 ec.clouddesignpattern.org
EC2 AMI
①AMIを 取得する
②テスト環境用の EC2インスタンスを 立ち上げる
③ソフトウェアをアップデートしテストを行う
EIP「46.51.xxx.xxx」
課題
課題: サーバに障害が発生して、 速やかに復旧したい
以前取得したマシンイメージを元に仮想サーバを立てる
(壊れた)本番環境の最新データを持つディスクを移行して、復旧する
Server Swappingパターンの適用後
仮想 サーバ
仮想 サーバ
サーバに障害
マシン イメージ
サーバ起動
仮想ディスク
データ
仮想ディスク
データ
Server Swappingパターンの適用
仮想 サーバ
仮想 サーバ
サーバに障害
マシン イメージ
サーバ起動
仮想ディスク
データ
仮想ディスク
データ
緊急対応サーバで、EBSボリュームをマウントする # sudo mkdir /ebs # sudo mount /dev/sdf /ebs
「html」で新しくアタッチしたEBSボリュームを参照するようにシンボリックリンク作成 # sudo mv /var/www/html /var/www/html-org # sudo ln -s /ebs/var/www/html /var/www/html
MySQLのデータのディレクトリを退避させておき、新しくアタッチしたEBSボリュームを参照するようにシンボリックリンクを作成する # sudo mv /var/lib/mysql /var/lib/mysql-org # sudo ln -s /ebs/var/lib/mysql /var/lib/mysql
課題
課題: Webサーバが落ちても、システム全体で稼働し続けるようにしたい
Multi-Serverパターンを適用し、Webサーバを冗長化する
Multi-Serverパターンの適用後
EC2 インスタンス
冗長 構成
EC2 インスタンス
オリジ ナル
MySQL DB インスタンス
ロードバランサ
Amazon RDS(MySQL)とは
2009年に登場した設定と運用が容易なクラウド上でのRDBMSサービス
Webコンソールから、設定済みでサイズ変更可能なDBインスタンスを、ものの数分で起動
AWSが自動バックアップ、パッチ更新を管理
レプリケーション、リードレプリカも可能
現時点で、MySQLとOracle DBが選択可能
Oracleの場合、時間単位の従量課金 と、既存ライセンス持込みをサポート
RDSの作成
27
Multi-Serverパターンの適用
EC2 インスタンス
冗長 構成
EC2 インスタンス
オリジ ナル
MySQL DB インスタンス
ロードバランサ
DBのデータをダンプする
$ mysqldump -u ユーザー名 -pパスワード データベース名 > backups/backup.sql
作成したRDSのDBインスタンスにデータをインポート $ mysql -u eccube_db_user -peccube --database=eccube_db --host=eccubedbins.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com < backups/backup.sql
EC-CUBEのデータベースへの接続情報を書き換え “config/config.php” define ('DB_SERVER', 'eccubedbins.xxxxxxxxxx.ap-northeast-1.rds.amazonaws.com');
RDSのスナップショット取得
RDSでScale Upパターン
Multi-Serverパターンの適用後
EC2 インスタンス
冗長 構成
EC2 インスタンス
オリジ ナル
MySQL DB インスタンス
ロードバランサ
ロードバランサの起動
ロードバランサの起動
EC-CUBEでは、SSLをサポート。 ELBでも対処可能だが、今回はELBではSSLの処理はしないことに。
ヘルスチェックの設定
ELB配下にEC2を追加
AMIからEC2起動
ELB配下に追加
Multi-Serverパターンの適用後
EC2 インスタン
ス
冗長 構成
EC2 インスタン
ス
オリジ ナル
MySQL DB インスタン
ス
ロードバランサ サーバーわざと 停止させても動く??
課題
課題: DB部分のSPOFを解消したい
DB Replicationパターンを適用し、 DBをマルチ構成に切り替える
DB Replicationパターンの適用後
ゾーン1a
EC2 インスタンス
冗長 構成
EC2 インスタンス
オリジ ナル
ゾーン1b
同期
ロードバランサ
MySQL DB インスタンス
MySQL DB スタンバイ
マルチAZに変更
課題
課題: サーバレベルだけでなく、データセンタレベルの障害にも対応できるようにする
Multi-Datacenterパターンを適用し、 すべてのレイヤで冗長化を行う
Multi-Datacenterパターンの適用後
EC2
インスタンス
冗長
構成
EC2
インスタンス
オリジ
ナル
ロードバランサ
同期
ゾーン1a ゾーン1b
MySQL DB インスタンス
MySQL DB スタンバイ
デザイン推移
障害対応 障害対策
SPOF回避
最終
クラウドアーキテクティング原則
• できるだけサービスを利用
• 机上実験よりも実証実験
• スモールスタートからスケールアウト
• 変化に対し全レイヤで対処
• 故障のための設計(Design For Failure)
• 最初だけでなく周期的なカイゼン
その他 適用可能なパターン
Mutli-Regionパターン
Deep Health Checkパターン
Monitoring Integrationパターン
Stack Deploymentパターン
Wikiで編集できます!
今日のセッション
ミッション:
新しいCDPを
追加してみよう
目標: Ninja of “Thousand”
Next Step
ご清聴ありがとうございました @KenTamagawa
表千家