Nginx + WordPress S3篇

記事タイトルとURLをコピーする

こんにちは。CSチームの坂本です。

今回からは、しばらくNginxを離れて前回の「Nginx + WordPress ロードバランサー篇」の構成での運用上の問題点を、AWSのサービスを使って解消していきたいと思います。

まずはWordPressの管理画面から画像をアップロードした場合の問題点をみてみましょう。

このままではアップロードした画像は3台のWebサーバーのどれか1つにしかアップロードされません。

アップロード時に「他のWEBサーバーと同期する処理を加える」などの対策も考えられますが、今回はAWSのサービス「Amazon S3」とWordPressのプラグイン「Amazon S3 for WordPress」を使って簡単にできる方法を取りたいと思います。

目次

  1. Amazon S3とは?
  2. 今回の構成
  3. Amazon S3 for WordPress
  4. まとめ

 

1. Amazon S3とは?

今回、画像の保存先として利用するAWSのサービスは「Amazon S3」というAWSのストレージサービスです。

このサービスを使うことでWebサーバー同士の画像の同期を取る必要がなくなり、画像の保存先がSPOF(単一障害点)となる心配もなくなります。

S3はAWSのサービススタート時に始まったサービスでご存じの方が多いと思いますが、知らない方のためにS3がどのようなサービスなのか少しおさらいしてみたいと思います。

AWSによるとS3は「99.999999999% の堅牢性と、99.99% の可用性を提供するよう設計されている」と謳われています。

つまり、「S3にデータを保存しておけば、データが無くなることはほぼない」、ということです。

S3では「データが3箇所にコピーされて初めて保存に成功した」とする仕組みになっており、更にデータの自動修復機能があるため、これだけの信頼性を保てているようです。

保存できるオブジェクトの数に上限がないので、WordPressの画像のアップロード先として問題になることはまずないでしょう。バケットと呼ばれる領域を作成し、そこにデータを保存する仕組みになっています。

そして、先日おこなわれたAWSのグローバルカンファレンス「re:Invent」でS3の値下げ(東京リージョンでは23%~26%)が発表され、更にお財布にやさしいサービスになりました。

今回は画像の保存先としてのみS3を利用しますが、静的なWebサイトであればS3のみでホスティングすることも可能です。
※この方法については、以下の記事で書かせていただきました。
WordPress on Amazon S3

 

2. 今回の構成

今回の構成は、前回の「Nginx + WordPress ロードバランサー篇」の構成のまま、画像の保存先のみS3にしました。  

3. Amazon S3 for WordPress

まず、画像の保存先をS3にするために、WordPressのプラグイン「Amazon S3 for WordPress」を導入します。 管理画面からインストールして設定画面で以下の画像のようにAWSのアクセスキーとシークレットキー、保存するバケットを指定しましょう。 これで画像をアップロードし、投稿に挿入するだけで画像の保存先や、リンク先がS3に変わります。


▲WordPressの管理画面でAWSのアクセスキーとシークレットキー、保存先のバケットを指定  


▲画像アップロードの画面で、リンクURLがS3のものになっているのを確認  


▲公開後、S3の画像が表示されているのを確認  

4. まとめ

これでWebサーバーを負荷分散した場合の、画像のアップロード先の問題が解消しました。S3を利用しているのでデータが無くなることはほぼなく、この部分がSPOFになることもありません。 S3はEBSのスナップショット、AMIなどの保存先にもなっており、AWSのサービスの要となっている重要なサービスです。 AWS Management Consoleからデータのアップロードが簡単にできますので、AWSをまだ利用されていない方はまずはS3から試してみてはいかがでしょうか。 今なら新規アカウントでS3を利用後、キャンペーンに申し込むと25ドル分のAWS無料クーポンがもらえるそうです。

Amazon S3値下げ記念 X'MASプレゼントキャンペーン
新規アカウント作成後、AWSのAmazon S3を利用開始していただいたお客様全員に今だけ25ドル分のAWS無料クーポンプレゼント!
【キャンペーン期間】 2012年12月11日(火)~2012年12月28日(金)まで

次回は、現状の構成でSPOFとなっているMySQLのデータベースサーバーをAWSのサービスを使ってカイゼンしたいと思います。