Mais conteúdo relacionado Semelhante a 初心者向けWebinar スケーラブルWebアプリケーションの構築 (20) Mais de Amazon Web Services Japan (20) 初心者向けWebinar スケーラブルWebアプリケーションの構築12. Amazon EC2(Elastic Compute Cloud)
1任意のゾーンに
分散配置可能
リージョン
アベイラビリティ
ゾーン A
EC2
アベイラビリティ
ゾーン B
EC2
EC2
• 数分で起動可能な仮想サーバ
• 1時間ごとの従量課金で利用可能
• スケールアップ/ダウン、アウト/イ
ンが即座に可能
• Windows, Linuxなどx86-64アーキ
テクチャのOS利用可能
– Windowsライセンスも従量課金
• OS以上はお客様の自由
– お手持ちのソフトをそのまま利用
13. Amazon Machine Image(AMI)
• ソフトウェア構成(オペレーティングシステム、アプリ
ケーションサーバ、アプリケーションなど)を記録した
テンプレート
• AMIから、EC2インスタンス(仮想サーバ)を起動
AMI
instance
instances
1つのAMIから、複数の異なるタイプの
インスタンスを起動可能
14. Amazon EBS(Elastic Block Store)ボリューム
EC2インスタンスに仮想外付けされた
ブロックレベルのストレージ
サイズは1GB単位で~1TBまで
(近い将来16TBまで利用可能になる予定)
サイズ/期間/IOで課金される
複数EBSを1 EC2インスタンスにアタッチ可能
1つのEBSを同時に複数のEC2インスタンスにattach
不可
データは永続的に保存される
アベイラビリティゾーン(AZ) に存在
他のEC2インスタンスに付け替え可能
Region
Availability Zone - a
EBS EBS EBS
Availability Zone - b
EBS
EBS
Amazon Simple
Storage Service (S3)
EBS
Snapshot
EC2 EC2
15. Amazon EBS スナップショット
Amazon S3に保存された EBSボリュームの
ポイントインタイムバックアップコピー
EBSスナップショットは増分バックアップ
(最後に作成されてから、変更のあるブ
ロックのみ保存される)
EBSスナップショットからEBSボリューム
を同じリージョン内で作成可能
リージョン間でコピー可能
Region
Availability Zone - a
EBS EBS EBS
Availability Zone - b
EBS
EBS
Amazon Simple
Storage Service (S3)
EBS
Snapshot
EC2 EC2
16. Amazon S3(Simple Storage Service)
低コスト
アップロード無料
格納料金 1GB/月3.3円 (100円換算、2014/11/04時点)
耐久性
99.999999999%の耐久性
3か所以上への自動複製保存
インテグリティチェックおよび自動復旧
データを
自動複製
リージョン
EC2
Availability Zone
セキュリティ
データ転送はすべてSSL通信
同一リージョン内のみでの保管
サーバサイド暗号化オプション(AES256)
柔軟性
格納容量無制限
多くの3rdベンダー製品がサポート
17. ~ AWSクラウド上のロードバランシングサービス ~
ELBで実現できるシステム
スケーラブル : 複数のEC2インスタンスに負荷分散
高い可用性 : 複数のアベイラビリティゾーンにある複数のEC2インスタンス
の中から正常なEC2インスタンスにのみ振り分け
ELB自身の特徴
スケーラブル : ELB自体も負荷に応じてキャパシティを自動増減
安価な従量課金 : 従量課金で利用可能
運用管理が楽 : マネージドサービスなので管理が不要
豊富な連携機能 : Auto Scaling, Route 53, Cloud Formation… などと連携
Amazon Elastic Load Balancing (ELB)
EC2
EC2
20. Amazon ElastiCache
• 構築
– キャッシュクラスタを数クリックで起動
– EC2、RDSと同様、初期費用無し、時間単位の従量
課金
• 移行
– 2種類のエンジン(memcached, redis)をサポート
– 既存アプリケーションの変更不要(memcached,
redisを利用中のアプリケーションの場合)
• 運用
– 可用性を向上させる機能
– モニタリング、自動障害検出、復旧、拡張、パッチ
管理機能を提供
メモリ内キャッシュをマネージドで提供するサービス
→キャッシュに読み込まれたオブジェクトを保存し、性能負荷を軽減する
21. Amazon DynamoDB
• NoSQL as a Service
• 超高速・予測可能な一貫したパフォーマンス
• シームレスなスケーラビリティ、そして低コスト
運用管理必要なし
低レイテンシ、SSD
プロビジョンスループット
無限に使えるストレージ
23. Amazon Route 53
• 拡張性と可用性に優れたDNS権威サービス
• ヘルスチェック機能を持つ
Users DNS
Resolver
Route 53
www.example.com
はどこ?
知らないので権威
サーバに尋ねます
1.2.3.4 1.2.3.4
53
30. WordPressに最適なインスタンスタイプの選択
• 初期のインスタンスタイプ
– T2インスタンス
• 新規プロジェクトにて、最適なインスタンスタイプを見積もる必要がある場合、
コスト効率の良い選択肢
• トラフィックの量が少ないWebサイト(高いCPU使用率を必要としない)
– M3インスタンス
• バランスが取れており、T2インスタンスよりも多くのCPU、メモリ、ネット
ワークキャパシティを提供
• より多くの需要のあるWebサイト向け
• 起動後の垂直方向のスケーリング(スケールアップ)
– EBSベースのインスタンスを使用している場合は、インスタンスを停止 → インスタ
ンスタイプの変更 → 起動することで、インスタンスタイプを変更可能
33. WordPressのインストール方法の例
• SSHログイン後、以下を実行
sudo yum install httpd24 php55 php55-mysqlnd mysql-server
wget http://ja.wordpress.org/latest-ja.tar.gz
sudo tar zxvf latest.tar.gz -C /var/www/html
sudo service mysqld start
mysql -u root
mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY
'mypassword';
mysql> CREATE DATABASE wordpress;
sudo service httpd start
36. WordPress 1台構成の場合
• Amazon EBSボリュームのデータは複数のサー
バにレプリケーションされており、通常のハー
ドディスクに比べてAFR(年間故障率)が低い。
• が、常にバックアップを取得することを推奨
– オペレーションミスによるデータ喪失からの復旧も考慮する
instance
volume
• WordPressアプリケーションコード
• wp-contentsフォルダ以下のプラグイ
ンやテーマ、アップロードファイル
• /var/lib/mysql以下のデータベースのコ
ンテンツ
38. IPアドレスとDNS
• Elastic IPを使うことで、EC2インスタンスのPublic IPを固定するこ
とが可能
• EC2インスタンスの障害時には、Elastic IPを置き換え用の新規EC2
インスタンスに割り当てることで、同じPublic IPでアクセスが可能
• Route 53 DNSサービスにカスタムドメインを登録することで、名
前解決が可能
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-route53
41. 静的コンテンツをAmazon S3から配信
• WordPressウェブサイトは、静的および動的コンテンツ
を配信する必要がある。
– 静的コンテンツ
• 画像、JavaScript、スタイルシートなど
– 動的コンテンツ
• サーバサイドでWordPress PHPコードによって生成されるコンテンツ
【データベースからロードされる属性値など)
• 静的コンテンツをAmazon S3から配信することで、
WordPress Webサーバの負荷の低減が可能
– WordPress Webサーバは動的コンテンツ生成のみを処理すれば良くなるため
Amazon S3 Blackbelt Tech Webinar資料
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belttechwebinar2014s3public
42. Amazon S3からの静的コンテンツ配信について
• S3にファイルをアップロードすると、ファイルごとにURIが割り当て
られる。
– https://s3-ap-northeast-1.amazonaws.com/<バケット名>/<ファイル名>(東京リージョンの例)
– デフォルトでは、上記URIへのアクセスはDeniedとなるが、アクセス権限を変更することでアクセス可能
• さらに、S3のWebsite Hosting機能を有効にすると、バケット名に対
応したサブドメインでアクセス可能
– http://<バケット名>.s3-website-ap-northeast-1.amazonaws.com/<ファイル名>
• 以下のレコードをDNSに登録することで、任意のドメインでS3のファ
イルへHTTPでアクセスが可能
– Name: (例)example.com
– Type: CNAME
– Record: <バケット名>.s3-website-ap-northeast-1.amazonaws.com
43. 静的コンテンツをS3から配信する形に変更するには?
• 変更前 • 変更後
Users
Web
サーバ
<img src=“/img/product.png” /> <img src=
“http://static.example.com/img/product.png” />
NFS
サーバ
Web
サーバ
png
png
S3
http://example.com/index.php http://example.com/index.php
動的コンテンツ用
静的コンテンツ用
http://static.example.com/img/product.jpg
48. WordPressとMemcachedの連携
• W3 Total Cacheプラグインを使うことで、
Memcachedと連携が可能
• 以下2パターン
– WordPress Webサーバ上にMemcachedをインストール
(別のEC2インスタンスも可)
– Amazon ElastiCacheの活用
• マネージドサービスのため、簡単にデプロイ、運用、スケーリングが可能
• ElastiCacheのMemcached版を使うと、特にカスタマイズを行うことなく
WordPress Memcachedプラグインを利用可能
https://wordpress.org/plugins/w3-total-cache/
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache
Amazon
ElastiCache
52. データベースの移行
• MySQL DB移行先の例
– EC2インスタンス上に構築したMySQL DB
– Amazon RDS MySQL (推奨)
• WordPress Webサーバの設定変更
– wp-config.phpにて、ローカルホストのDBからリモートのDBへ接続先を変更
する
DB on
instance
RDS DB
instance
53. Amazon RDSを使うメリット
• DBの管理負荷の低減
– 自動パッチ適用
– 自動バックアップ
– ポイントインタイムリカバリ
– Multi-AZ構成による自動フェイルオーバー(後述)
– 1 APIコールでDBのコンピュートリソースやストレージキャパシティをスケー
ル可能
• お客様のアプリケーション開発やビジネスへの注力が可
能
55. データベース層の可用性
• RDS Multi-AZ
– DBインスタンスの可用性・冗長性を実現可能
– RDS Multi-AZを有効にすると、プライマリDBインスタンスに加えて、自動的
にスタンバイDBインスタンスを異なるAZに作成する
– DBインスタンスに対する更新は、同時にスタンバイ側にレプリケーションされ
る
– プライマリDB側の障害時には、スタンバイDB側に自動フェイルオーバーされ
る
• ElastiCache(Memcached)
– Memcachedノードが障害時には、自動的に新規ノードが再配置される
– Memcached Cacheクラスターに属するノード数を複数にすることで、異なる
AZにまたがって配置が可能
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-elasticache
61. Webアプリケーションでよく使われるデータの種類と
その格納先
• ユーザーセッション
– WordPress CoreはセッションをCookieで管理
– PHPセッションを活用するWordPressプラグインをインストールしている場合は、
Amazon DynamoDBがその格納先として最適
• AWS SDK for PHPにDynamoDB Session Handlerが含まれている。
• ユーザーが生成したデータやアップロードデータ
– デフォルトではWordPressのWebサーバ上に配置される。
– これらをS3に格納して配信することで、Web層をステートレスにすることが可能
Amazon
DynamoDB
Amazon S3
http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-amazon-dynamodb
https://aws.amazon.com/jp/blogs/aws/scalable-session-handling-in-php-using-amazon-dynamodb/
63. データベース層のスケーリング
• より大きなインスタンスタイプへ変更可能
• Provisioned IOPSによりDisk IOパフォーマンスを向上可能
• WordPressは参照が非常に多いため、MySQLレプリケー
ションあるいはRDSリードレプリカが有効
– が、デフォルトではWordPressは複数のDBインスタンスを活用するように設計され
ていない。
– HyperDBプラグインを使うことで複数のDBインスタンスを活用する機能を追加可能
読み込み・書き込み
読み込みのみ
Web
https://wordpress.org/plugins/hyperdb/
http://www.slideshare.net/AmazonWebServicesJapan/20140416-aws-blackbeltrds
68. 参照リンク
• AWSアカウント作成の流れ
– http://aws.amazon.com/jp/register-flow/
• WordPress: Best Practice on AWS
– http://d0.awsstatic.com/whitepapers/wordpress-best-practices-on-aws.pdf
• Deploying WordPress with AWS Elastic Beanstalk
– http://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-
beanstalk.pdf
• AWSクラウド活用資料集
– http://aws.amazon.com/jp/aws-jp-introduction/
• 国内のお客様のAWS活用事例
– http://aws.amazon.com/jp/solutions/case-studies-jp/
72. AWS Black Belt Tech Webinar 2015
• AWS中上級者向け、サービスカット
• 今後の配信予定
– 2/25(水) AWS Management Console
– 3/4 (水) Amazon SQS & SNS
– 3/11(水) Amazon SNS モバイルプッシュ
– 3/18(水) AWS SDK
– 3/19(水) リザーブドインスタンス
スポットインスタンス
• 申し込みサイト
– http://aws.amazon.com/jp/about-aws/events/