WordpressをAutoScalingするためのシステム構築と参考するといいリンク集


## Wordpressを冗長構成にする前に基本となる構成

* EC2+EBS - Wordpess本体が入る。更新データとしてはプラグイン、テーマ、アップロードされた画像ファイルなどがEBSへローカルデータとして保存されている。

* RDS - MySQLが走っている。RDSにかんしては今回はMultiAZ使えば大丈夫でしょうという前提ですすめます。

## Wordpressをスケーラブルにする時(EC2をいっぱいたてた時)に注意する点

* WEBサーバのデータの共有 - Wordpressの場合Wordpress本体のphpリソース、更新にてアップロードされた画像ファイルの同期を考慮する。

* セッション情報の保持 - 今回に関してはとりあえず管理画面内のページを考慮すれば大丈夫かと。。

* ログ等のデータの保存 - AutoScalingで立ち上がったインスタンスのアクセスログなどはEBS上に保存されているが、出来ればEBSも一緒に破棄してしまいたいのでログはS3にどのインスタンスか分かる形で残しておきたい

## スケーラブルにするアーキテクチャ候補

* rcyncを使ったインスタンス間でのストレージ領域の同期
	
	* メリット
	基本的には通常のWordpress環境なので、Wordpressまわりの不具合の心配がない。

	* デメリット
	マスターとスレーブのサーバ構成になるため。ストレージ領域に影響する管理画面での操作はマスターにアクセスされるようコントロールの必要あり。
	rcyncはcronでの定期実行になるため、多少のタイムラグが起こる。
	AutoScalingでのインスタンスを追加・削除のタイミングでの処理を面倒見なければ	ならない。

	`特に一つ目がややこしい。ELBはアクセスパスによるインスタンスの振り分けには対応していないため、AWSによらない方法で実現する必要がある。ちなみにCloudFront	をいれることで可能になる。`


* s3cmd,apacheのmod_ext_filterを使った静的コンテンツのみS3から配信する
	
	* メリット
	S3のマネージドなメリットを享受できる。EC2に関してはマスターのAMIから増やすだけ。AutoScalingにかんする手間が少ない。

	* デメリット
	S3から配信するものを切り分けするルールが重要。
	ファイルを更新した場合毎回s3cmdを実行する必要がある。自動化するのであれば	cronの設定をするなど別の仕組みが必要。

	`固定化されたソースが多いサイトであれば効果は期待できそうだが、そうでなければ結局一つ目と変わらないこといなりそう。。`


* CloudFrontのBhaviorで振り分けルールを設定しキャッシュサーバ配信を行う。

	* メリット
	他の選択肢のようなファイルの同期問題がそもそもない。
	スケーリングもマネージドサービスにおまかせできる。
	基本EC2一台で大量のアクセスに耐えることが出来る。
	やすい。

	* デメリット
	セッションを利用するページが多い場合、コントロールが煩雑になる。
	アクセスに対し、コンテンツをサーバーサイドで動的に変更するようなページには使
	えない。
	つまり会員制サイトなどの場合(ECサイトとか)は部分的にしか活用はできない。

	`今のところこの構成が一番本命。なんといってもキャッシュコントロールの設定さ
	え決まれば運用での負担はほぼない。`


* （番外編）EFSを使った共有ストレージ構成 ※今はまだプレビュー

	* メリット
	同期の問題にあったストレージ領域がマネージドサービス型の共有ストレージ領域に
	展開されるため、同期の問題が解決する。

	* デメリット
	まだあんまり把握できていないのですが、、わりと料金がかかる？感じ。


## 参考にした本とリンク
* 全般的にスケール構成の参考になったもの

	[Amazon.co.jp： Amazon Web Services クラウドデザインパターン実装ガイド: 大澤
	文孝, 玉川 憲, 片山 暁雄, 鈴木 宏康:
	本](http://www.amazon.co.jp/Amazon-Web-Services-%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%AE%9F%E8%A3%85%E3%82%AC%E3%82%A4%E3%83%89-%E5%A4%A7%E6%BE%A4/dp/4822211983)

	[Amazon.co.jp： Amazon Web Services パターン別構築・運用ガイド: NRIネットコム
	株式会社, 佐々木 拓郎, 林 晋一郎, 小西 秀和, 佐藤 瞬:
	本](http://www.amazon.co.jp/Amazon-Web-Services-%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%88%A5%E6%A7%8B%E7%AF%89%E3%83%BB%E9%81%8B%E7%94%A8%E3%82%AC%E3%82%A4%E3%83%89-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/4797382570/ref=pd_sim_14_6?ie=UTF8&refRID=0W1N7NTSFQ3PXH6Y7J3Y)

	[wordpress-best-practices-on-aws.pdf](chrome-extension://mhjfbmdgcfjbbpaeojofohoefgiehjai/index.html)

	[【AWS】AutoScalingを使う際の注意点についてまとめてみました ｜
	Developers.IO](http://dev.classmethod.jp/cloud/aws/autoscaling_considerations-for-system-configuration/)

* S3やrcyncの実装に関して

	[Scalable WordPress on Amazon Web Services | Joe
	Mornin](http://www.mornin.org/blog/scalable-wordpress-amazon-web-services/)

	[Scaling WordPress in Amazon Cloud - markomedia
	Technologies](http://www.markomedia.com.au/scaling-wordpress-in-amazon-cloud/)

	[ec2にs3をマウントしてrsyncした時のメモ | Shinichi
	Nishikawa's](http://nskw-style.com/2014/server/aws/s3fs-ec2-rsync-nohub-kill.html)

	[クラウドとサーバーを同期できる便利ツール「S3Sync」 ～Amazon EC2/S3環境構築の
	すべて～ （1/2）：CodeZine](http://codezine.jp/article/detail/3614)

	[Amazon S3編～S3バケットをファイルシステムとしてマウントしてみよう！～　EC2　
	S3　s3fs マウント | ナレコムAWSレシ
	ピ](http://recipe.kc-cloud.jp/archives/4899)

* CloudFrontを使ったWordpress構成

	[【WordPress】W3 Total Cacheプラグインでアップロードファイルを
	CDN（CloudFront）経由で配信する＋キャッシュ ｜
	Developers.IO](http://dev.classmethod.jp/cloud/wordpress-file-upload-cdn/)

	[WP管理者必見！AWSで構築する新スケーラブルなWordPress構成〜CloudFront as
	Reverse Proxy ｜
	Developers.IO](http://dev.classmethod.jp/cloud/aws/wordpress_with_cloudfront_front-ended/)

	[JAWS-UG函館 S3とCloudFrontを利用してWebサイトの性能向
	上](http://www.slideshare.net/HiroshiKoyama/jawsug-s3cloudfrontweb)

* EFSに関して

	[WordPress on AWSでAmazon Elastic File System(EFS)を試してみた ｜
	Developers.IO](http://dev.classmethod.jp/cloud/aws/try-efs-by-wp-on-aws/)


実際にrcyncとCloudFrontを使った環境を構築したのでまたアップします。