はじめに
コンテンツキャッシュ削除が超高速と話題の Fastly と Oracle Cloud Infrastructure を連携させてみました。
Fastly とOCI間の連携手順と、コンテンツのInstant Purge(即時削除)の手順をご紹介していきます。
Fastlyアカウントを作成すると、$50 までの Free 枠が用意されているので、気軽に利用することができます!
※ 所属している会社・組織とは何の関係もない、一個人の技術記事です。Oracleが提供するサービスや、今後のロードマップとは何も関係がございません、ご留意ください。
Fastlyとは
Fastlyとは、Fastly社が提供しているCDN(Contents Delivery Network) サービスです。世界中にエッジサーバーを配置し、高速にコンテンツを提供するサービスです。他社のCDNサービスを挙げると、Akamai, Amazon CloudFront, CloudFlare などがあります。聞き覚えががある方もいらっしゃると思います。
一般的なCDNサービスは、世界中のエッジサーバーにキャッシュさせると、それを無効化するために数分~数十分単位で時間が掛かってしまいます。なので、同じURLで頻繁にコンテンツが切り替わるサイトはCDNが難しいと考えています。これに対応するために、FastlyのInstant Purge機能を使うことで、即時にコンテンツキャッシュの削除ができ、頻繁に更新されるコンテンツをCDNで提供することができます。
Fastly アカウント作成
Fastly のページに飛んで、Sign up ボタンから、適当にアカウントを取得します。
アカウントを登録作業後、約10分ほどでメールアドレスに通知が来ます。確認ボタンを押すことで、登録完了となります。(通知が来ない場合はサポートに問い合わせすると、再送することが出来ます)
OCI にキャッシュ元のWebサーバを構成
Nginxの構成
Fastlyのキャッシュ元サーバをOCI上に準備します。
適当に仮想ネットワークやインターネットゲートウェイ、コンピュートインスタンスを構成し、インスタンス上にNginxをたてます。
今回の記事では、具体的な手順は省略します。具体的な手順は以下の記事が参考になります。
OCI チュートリアル
https://community.oracle.com/docs/DOC-1019313
Nginxを構成し、グローバルIPを使用してアクセスすると、以下のような Welcome ページが表示されます。
Fastly OCI連携
Service 設定
FastlyでCDNサービスの設定を行うときに、一番最初にServiceという単位を作成する必要があります。1個のServiceが、1個のCDN構成を表しています。Service上で細かな設定を行うことで、CDNの細かな挙動を制御することができます。
一番最初にFastlyにログインすると、[GET STARTED]ボタンが表示されるのでこれを押します。ボタンを押すことで、1個のServiceが作成されます。
Serviceが自動的に作成されると、Serviceの管理画面に移動します。Serviceの名前が[Unnamed Service]となっているため、適当にわかりやすい名前に変更します。
Domains 設定
次に、Fastly上でDomainを作成していきます。Domainは、独自のコンテンツを Fastly の CDN として紐づけるために必要になる設定です。
[CREATE YOUR FIRST DOMAIN] を選択します
Domain Name に、提供したいサービスのドメイン名を指定します。今回の場合は、事前に sugi.tokyo
というドメインを購入しており、ここのドメインをFastlyでCDNを提供する時のドメイン名として扱います。Fastlyに登録する際には、fastly.sugi.tokyo
のドメインを対象にします。
Origins 設定
次に Origins の設定を行います。Origins は、CDNで提供するためのコンテンツ提供元を表しています。OCI 上で作成した Nginx のグローバルIPアドレスを指定します。
ACTIVATE
画面右上にある、ACTIVATE を押して、CDNを開始します
以下の画面へ自動遷移します
アクセス確認
FastlyのDomains メニューにある、Test domain を選択すると、Fastly側から提供されているURL にアクセスすることができます。本番に適用するまえに確認できるのが便利ですね。今回例では、http://fastly.sugi.tokyo.global.prod.fastly.net/
という名前でURLが生成されます。
URLにアクセスした結果、正しくNginx のウェルカムページが表示されれば成功です
ドメインの設定
正しくCDNが構成されたことを確認したのちに、ドメインの構成を変更します。
例を挙げると、 fastly.sugi.tokyo
というCNAMEレコードを作成し、FastlyのURL http://fastly.sugi.tokyo.global.prod.fastly.net/
を指定します
このCNAMEレコードにより、独自のドメインを使用してFastlyでCDNを行うことが出来ます。
以下の設定は、OCI上のDNSサービスで設定を行ったときの例です
Instant Purge (キャッシュの削除) の確認
FastlyにNginxのコンテンツをキャッシュすることができたので、キャッシュの削除速度を確認します。まずは、NginxのWelcomeページを変更します。
Nginxのインスタンス上に存在しているHTMLファイルの「Welcome to Nginx!」の文字列を「Hello, Fastly! I am the FLASH!」と変更します
cat <<'EOF' > /var/www/html/index.nginx-debian.html
<!DOCTYPE html>
<html>
<head>
<title>Hello, Fastly! I am the FLASH!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Hello, Fastly! I am the FLASH!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
EOF
NginxのグローバルIPアドレス宛てに直接開くと、コンテンツが変わっています
対して、Fastly上のキャッシュデータは古いままです。
Fastly上でキャッシュの削除を行います。CONFIGURE メニュー配下にある、PURGEからPurge all を選択します。これでキャッシュが削除されます。
自分の環境では、約数秒経過後にFastlyのキャッシュデータが更新されました
参考URL
Fastly
https://www.fastly.com/
Fastly Documents
https://docs.fastly.com/ja/guides/basic-setup/getting-started-with-fastly
Fastly Basic Setup
https://docs.fastly.com/guides/basic-setup/
Fastly使ってみた
https://hawksnowlog.blogspot.com/2017/02/my-first-fastly.html