キャッシュ機構
キャッシュ
ネットワーク上の負荷分散を目的としてたサーバやキャッシュ機構について。
1つのページに対して静的ファイルがかなり多い。静的ファイルはどこからDLされようが同じなので、キャッシュする機構が使われることが多い。
①Webブラウザのキャッシュ
Webブラウザはキャッシュされたファイルへのアクセスがあると、いったんWebサーバにリクエストを投げる。
この付帯情報から更新の有無を判断して返却するレスポンスを変えます。
If-Modified-Since ファイルが更新されてなければキャッシュをそのまま使う
If-None-Match 指定したエンティティタグに一致しない場合のみコンテンツを返却する
②Proxyサーバによるキャッシュ
LANの中での話。
大企業ではリクエストが重複することが起き得るので、Proxyサーバをたてて静的ファイルをキャッシュさせ、Proxyサーバからレスポンスを返す。
※セキュリティ向上や監査(2ちゃん閲覧禁止)などの目的で使われることも多い
③リバースプロキシ
Webサービスを提供する側。
静的コンテンツをキャッシュさせることで、WebAPサーバのI/O軽減にもなる。
※インターネットからみてクライアントよりなものがProxy、サービスに近いものがリバースプロキシである。
※Proxyがインターネットへの通信を減らすのが目的、リバプロは自社コンテンツのWebサーバの負荷を下げるのが目的である。
④CDN
AkamaiなどのCDNはリバースプロキシのアウトソージング化。
⑤ロードバランシング
キャッシュが行われる条件
1.ブラウザのキャッシュ機構が有効である
2.GETリクエストであること 【重要】
3.リクエストパラメーターまで同じであること
4.レスポンスヘッダに Last-Modifiedが含まれる ※レスポンス側で必要
5.サーバ側でキャッシュを無効にしていないこと
キャッシュされたときのレスポンス
1.キャッシュされたとき 304 Not Modified
2回めのアクセス以降で、304 Not Modifiedがかえってくればファイルに変更なしということ。
2.キャッシュされていないとき 200 OK
※Ctrl + F5 でキャッシュを使わない更新。開発では重要。
Proxyサーバの機能
1.コンテンツキャッシュ
2.フィルタ機能
3.経由変更
4.匿名性確保
リバースプロキシ
サービス提供側のネットワークにおくプロキシサーバ。
1.コンテンツキャッシュ機能
2.ロードバランサ機能 ※負荷分散も行う
3.アクセス代行
4.SSLアクセラレータ ※SSL通信時の複合化をWepAPで行うのではなくリバプロで行うと全台で行う必要がなく便利。
使いどころ
1.静的コンテンツの通信料が多い
2.処理ごとに別のサーバンリクエストしたい スペックや処理の違いによって振り分け先を変える
まとめ
ApacheやBIG-IPで鉄板だとされてきた部分のリプレースに使えるかも
ロードバランサ使いどころ
1.分散処理を行いたい
2.冗長性を確保したい
スケールアップではなくスケールアウト。
バランスアルゴリズム
1.L4負荷分散 (トランスポート層)
2.L7の負荷分散 (アプリケーション層) HTTPのみ。
1.URLによるふりわけ
2.User-Agentによるふりわけ
3.Cookieによるセッション維持
4.HTTPヘッダによる振り分け
パフォーマンス障害
1.振り分けは出来ているか
2.コネクションテーブルの残留 きり戻しても、サーバにアクセスがこない場合がある
HDDの負荷分散
RAID
RAIDはいろいろなレベルがありますが、商用ではRAID0+1を使う。
HDDどうしはSAN(StrageAreaNEtwork)を構築し、SCASIコマンドがやりとりされる。
SANは高い。