SakuraWi - BLog

WEBエンジニア。聴いたお話をまとめておく倉庫的な。スタックストックスタック!

AWS lightsailでwordpressを構築しつつ、負荷分散のためにCDNディストリビューションを導入する方法


AWS lightsailでwordpressを構築しつつ、負荷分散のためにCDNディストリビューションを導入する方法についてまとめます。

リリースされたのはこちらにまとまっていて

https://aws.amazon.com/jp/about-aws/whats-new/2020/07/amazon-lightsail-now-offers-cdn-distributions-to-accelerate-content-delivery/

ドキュメントはコレになります。

https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-content-delivery-network-distributions

前提

設計について

f:id:Saku-Saku:20210128162518j:plain

自分理解用な図で申し訳ないですが、完成図のイメージから置いておきます。

元々の構成

ユーザからのアクセスがあった場合、DNSの名前解決から、ワードプレスのサーバへリクエストが飛んで

ワードプレスサーバからレスポンスが返ります。

CDNディストリビューションありの構成

ユーザとワードプレスのサーバの間に1つサーバが増えるイメージです。

画像などの静的なファイルに関しては、間にはいるCDNのサーバがキャッシュしておいて、すぐに返してくれます。

キャッシュにないものなどについては、wordpressのサーバまでリクエストが飛びます。

設定していこう

やっていく順番としては、以下です。

  1. ディストリビューションのコンテナ?を作成する
  2. ディストリビューションの設定をする
  3. カスタムドメインの設定で、証明書を発行して認証する
  4. Aレコードなどの設定を修正して構成通りにする
  5. キャッシュされているか確認する

ディストリビューションのコンテナ?を作成する

f:id:Saku-Saku:20210128165114j:plain

ホーム > ネットワーキング > ディストリビューションを作成する

次に、オリジンを設定します。

静的IPのやつを選択すれば、自動的にIPとwordpressが起動しているインスタンスが選択されるはずです。

キャッシュ動作についても設定できます。

wordpressの人は、以下の設定で良いと思います。

ディストリビューションのプランはまずは 50GB/月でOKかと思います。

ディストリビューションの設定

f:id:Saku-Saku:20210128165636j:plain

ディストリビューションの詳細タブ

httpsのみにする、を設定しました。

ワードプレスインスタンス自体にもうSSLの仕組みを導入していれば、httpsで通信されるので、httpsです。

エンドユーザからのアクセスで最初からCDNのcloudfrontをおいたりしているのであれば、

ワードプレスインスタンスとはhttpで通信する場合もあり、

その時はhttpでOKという理解です。

カスタムドメインを設定する

カスタムドメインを設定しないとキャッシュがうまく動作されません。(そのままのドメインでも設定できそうですが、ややこしそうなので、なし)

f:id:Saku-Saku:20210128165841p:plain

ドメインを入力します。

サブドメインには www.ありのものを入力すると良いです。

作成を押すと、DNSによる認証にすすみます。

google domainで検証させる

google domainのページのDNSタブを押します。

下部にあるカスタムレコードの部分に追加をします。

f:id:Saku-Saku:20210128170415p:plain

で、ココ大事なんですが、lightsailに表示されている cnameの名前の部分のどこまでを入力するかが勘違いしやすいので注意。

_23fcsc.example.com.

独自ドメインexample.com. とすると、_23fcsc までを入力します。

値についてはそのままコピペでOKです。

以上を追加してしばらくすると検証が完了します。

f:id:Saku-Saku:20210128170737p:plain

完了したら、カスタムドメインを有効にします。

レコードの設定を変更する

ホーム > ネットワーキング > DNSゾーンのインスタンス

作成してあったDNSゾーンを選びます。

この中にあるDNSレコードのAレコードが既に設定してあると思うので、こちらを修正します。

f:id:Saku-Saku:20210128171134j:plain

修正箇所は、解決先の部分です。

wordpressインスタンスか、静的IPを設定してあったと思うんですが、これを新しくディストリビューションができているのでそちらを選びます。

キャッシュされているか確認する

curl -I でチェックするとできているかの確認ができます

キャッシュされていれば、 x-cacheのヘッダ があるはず。

その他のあると便利なこと

bitnamiにSSHで入っている時のvim

エスケープ ESCキーが聞かないので、 ctl + Cで抜ける

ロードバランサーなしでOK

オリジンは、静的 IP がアタッチされたインスタンス、または少なくとも 1 つのインスタンスがアタッチされた Load Balancer とすることができます。ディストリビューションは、選択したオリジンからコンテンツをプルしてキャッシュします。

f:id:Saku-Saku:20210128021926p:plain

カスタムドメインなしで設定する方法

https://lightsail.aws.amazon.com/ls/docs/ja_jp/articles/amazon-lightsail-editing-wp-config-for-distribution

https://www.youtube.com/watch?v=1GsW3QUqDn4

ということなので。

確認する

curl -I yourdomain

で確認しましょう。

x-cache Miss from cloudfrontとなっていればOKです。

疑問だったことのQA

ロードバランサーがないと設定できないの?

なくても設定できました。

参考

https://doc-sin.life/?p=1555