AWS lightsailでwordpressを構築しつつ、負荷分散のためにCDNディストリビューションを導入する方法についてまとめます。
リリースされたのはこちらにまとまっていて
ドキュメントはコレになります。
前提
設計について
自分理解用な図で申し訳ないですが、完成図のイメージから置いておきます。
元々の構成
ユーザからのアクセスがあった場合、DNSの名前解決から、ワードプレスのサーバへリクエストが飛んで
ワードプレスサーバからレスポンスが返ります。
CDNディストリビューションありの構成
ユーザとワードプレスのサーバの間に1つサーバが増えるイメージです。
画像などの静的なファイルに関しては、間にはいるCDNのサーバがキャッシュしておいて、すぐに返してくれます。
キャッシュにないものなどについては、wordpressのサーバまでリクエストが飛びます。
設定していこう
やっていく順番としては、以下です。
- ディストリビューションのコンテナ?を作成する
- ディストリビューションの設定をする
- カスタムドメインの設定で、証明書を発行して認証する
- Aレコードなどの設定を修正して構成通りにする
- キャッシュされているか確認する
ディストリビューションのコンテナ?を作成する
ホーム > ネットワーキング > ディストリビューションを作成する
次に、オリジンを設定します。
静的IPのやつを選択すれば、自動的にIPとwordpressが起動しているインスタンスが選択されるはずです。
キャッシュ動作についても設定できます。
wordpressの人は、以下の設定で良いと思います。
ディストリビューションのプランはまずは 50GB/月でOKかと思います。
ディストリビューションの設定
ディストリビューションの詳細タブ
httpsのみにする、を設定しました。
ワードプレスのインスタンス自体にもうSSLの仕組みを導入していれば、httpsで通信されるので、httpsです。
エンドユーザからのアクセスで最初からCDNのcloudfrontをおいたりしているのであれば、
その時はhttpでOKという理解です。
カスタムドメインを設定する
カスタムドメインを設定しないとキャッシュがうまく動作されません。(そのままのドメインでも設定できそうですが、ややこしそうなので、なし)
ドメインを入力します。
サブドメインには www.ありのものを入力すると良いです。
作成を押すと、DNSによる認証にすすみます。
google domainで検証させる
下部にあるカスタムレコードの部分に追加をします。
で、ココ大事なんですが、lightsailに表示されている cnameの名前の部分のどこまでを入力するかが勘違いしやすいので注意。
_23fcsc.example.com.
独自ドメインが example.com.
とすると、_23fcsc
までを入力します。
値についてはそのままコピペでOKです。
以上を追加してしばらくすると検証が完了します。
完了したら、カスタムドメインを有効にします。
レコードの設定を変更する
ホーム > ネットワーキング > DNSゾーンのインスタンス
作成してあったDNSゾーンを選びます。
この中にあるDNSレコードのAレコードが既に設定してあると思うので、こちらを修正します。
修正箇所は、解決先の部分です。
wordpressのインスタンスか、静的IPを設定してあったと思うんですが、これを新しくディストリビューションができているのでそちらを選びます。
キャッシュされているか確認する
curl -I でチェックするとできているかの確認ができます
キャッシュされていれば、 x-cacheのヘッダ があるはず。
その他のあると便利なこと
bitnamiにSSHで入っている時のvim
エスケープ ESCキーが聞かないので、 ctl + Cで抜ける
ロードバランサーなしでOK
オリジンは、静的 IP がアタッチされたインスタンス、または少なくとも 1 つのインスタンスがアタッチされた Load Balancer とすることができます。ディストリビューションは、選択したオリジンからコンテンツをプルしてキャッシュします。
カスタムドメインなしで設定する方法
https://www.youtube.com/watch?v=1GsW3QUqDn4
ということなので。
確認する
curl -I yourdomain
で確認しましょう。
x-cache Miss from cloudfrontとなっていればOKです。
疑問だったことのQA
ロードバランサーがないと設定できないの?
なくても設定できました。