AWS環境のWordPress基本構成パターンを紹介 CloudFront+EC2

この記事はAWSをよく知らない人向けAWSのWordPress基本構成パターンで紹介しているパターンの作成方法を記載しています。そのまま真似をすれば誰でもAWSを使ってWordpressの入ったタイトル通りの構成のサーバーを建てる事ができます。

CloudFrontの構築方法

まずは、EC2を1台用意します。そして、赤枠内にあるパブリックDNSを控えておきます。後で使います。

AWSコンソールのサービスの中のCloudFrontにアクセスします。
そして、 Create distribution => Web Get Startedと進んでいきます。

画像と同じように設定していきます。
Origin Domain NameにはEC2のパブリックDNSを、Alternate Domain Namesには後ほどRoute53に登録するドメインを入力してください。Origin IDはOrigin Domain Nameを入力後、自動で入力されるので入力する必要はありません。

Whitelist HeadersにはUser-agentを入力してください。

Create Distributionをクリックするとセットアップが始まります。大体15分〜25分ほどかかるので、その間にDNSの設定やCloudFrontの追加設定を済ませます。

今回作成したCloudFrontのIDをクリックして、CloudFrontの詳細設定画面に移り、追加設定をしていきます。

Invalidationsタブをクリックし、Create Invalidationをクリックします。

次の画像のように/*を入力してInvalidateをクリックしてください。

DNSの設定

"Hosted Zones"の設定まで済ませます。
次の画像の赤枠の中に書かれている、CloudFrontのDmainNameを控えます。

"AWSコンソール => Route53 => Hosted Zones => 作成したDomain"の中に入ります。
Create Record Setをクリックし、Nameに任意の文字列、AliasをYesにし、Alias Targetに控えたCloudFrontのDmainNameを入力し、Createをクリックしてください。

chromeなどのWebブラウザでサーバーのIPアドレスでWordpressにアクセスします。Settingsをクリックし、赤枠の中身をRoute53で設定した、Domainを入力すると、設定は終了です。後は、CloudFrontのセットアップが終わり次第、CloudFrontを通しての接続ができるようになります。

アクセス速度テスト

Apacheに同梱されているABコマンドを使って、北米リージョンにあるEC2インスタンスからアクセス速度テストをしました。CloudFrontを通してアクセスした時の方が、直接サーバーにアクセスした時より早ければ今回の構成は上手く働いていることになります。

直接サーバーにアクセスした場合

[root@ip-XXXXXXXX ~]# ab -n 10 -c 10 http://XXX.XXX.XXX.XXX/
---略---
Requests per second: 11.87 [#/sec] (mean)
Time per request: 842.803 [ms] (mean)
Time per request: 84.280 [ms] (mean, across all concurrent requests)
Transfer rate: 6.81 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 151 156 4.3 159 161
Processing: 231 243 18.3 237 293
Waiting: 231 243 18.3 237 293
Total: 387 398 16.9 396 445
---略---

CloudFrontを使ってアクセスした場合

[root@ip-XXXXXXXXXX ~]# ab -n 10 -c 10 http://XXXXXXXXXXXXXXXXX.XXXXXXXXXX.com/
---略---
Requests per second: 127.49 [#/sec] (mean)
Time per request: 78.438 [ms] (mean)
Time per request: 7.844 [ms] (mean, across all concurrent requests)
Transfer rate: 10653.07 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.0 1 1
Processing: 13 27 23.1 14 64
Waiting: 6 24 24.6 10 63
Total: 13 28 23.1 14 65
---略---

Requests per secondとTransfer rateの数値が高いほうが良く、他の数値が低いほうが良いとされます。

圧倒的にCloudFrontを使ってアクセスした場合の方が早いです。同じリージョンからアクセスした場合は、CloudFrontの設定を上手く行わないと直接サーバーにアクセスした場合と大差がありません。

さいごに

ABテストで負荷をかけていたら偶然MySQLが落ちました。通常、直接サーバーにアクセスする構成になっていた場合、MySQLが落ちた場合、次の画像が出てきてアクセスできなくなります。

しかし、CloudFrontを使ってアクセスしていた場合、キャッシュが残っている限りアクセスすることが出来ます。
次の画像は、MySQLが落ちている時にCloudFrontを使ってアクセスした時の画像です。偶然、CloudFrontを使っていた場合のMySQL障害の再現ができました。

細かい設定

実際にWordpressをデプロイするには、上記のCloudFrontの設定だけでは不十分です。記事を投稿しても、即時反映はされなかったりします。WordPress用にしっかりwp-adminをキャッシュさせないなどの設定をしましょう。

Webサイト におけるセキュリティのことなら、私達にご相談ください。

私たちは、Webサイトに必要な クラウド・CMS・セキュリティ対策 を提供するWordPressプラットフォーム「SiteCloud」を提供しています。豊富な知見を活かし、企業が管理・運営するコーポレートサイト をはじめとしたWebサイトの安全な環境をご提案します。
Webサイト管理・環境におけるセキュリティでお悩みの企業の方は、お気軽にご相談ください。

関連する解決策

最新記事

詳しい資料をご覧いただけます

SiteCloudのサービス内容を記載した資料をダウンロードできます。
SiteCloudの機能や事例が分かる
無料資料ダウンロード