目次
前置き
BIG-IPのForward Proxy構成のWebキャッシュはメモリ上に保存されます。 表現を変えると、大容量な保存領域があるディスク上には保存されません。 そのため、Webキャッシュをメインに据えた用途でのBIG-IP Forward Proxyの導入は不向きです。
本記事はForward Proxy構成を取り扱っており、Load Balancer構成は対象外となります。
Forward Proxy構成とLoad Balancer構成では通信の特性が異なるため、混同しないように留意してください。
設定の仕方と注意点
Webキャッシュは、Web Acceleration ProfileをVirtual Serverに紐付けると有効化できます。
Forward Proxy構成では、Virtual ServerがHTTP Forward Proxy向けとSSL Forward Proxy向けが存在するため適用対象に注意が必要です。
何故ならば、SSLO (SSL Orchestrator)の使用有無で、Virtual Serverを通る通信フローが異なるからです。
適用先のVirtual Serverを誤ると、アクセス制御がバイパスされてコンテンツが返される可能性があります。
BIG-IP Forward Proxy構成の基礎的な通信フローに関しては、筆者の下記の記事を参考にしてください。
Web Acceleration Profileの適用の比較表
Web Acceleration Profileの適用先のVirtual Serverを整理すると、下記の表のようになります。
標準実装の適用箇所
SSLO実装の適用箇所
SSLO実装では前段にあたるHTTP Forward Proxy向けVirtual Serverの方にはWeb Acceleration Profileは適用しないでください。
SSLO実装では後段にあたるSSL Forward ProxyのVirtual Server向けVirtual Serverを必ず通信が通るようにした上でアクセス制御を一括適用しているため、前段でWebキャッシュ機能を適用するとアクセス制御がバイパスされてしまい、セキュリティ上のリスクになります。
Webキャッシュのチューニング
Webキャッシュのチューニングは、Web Acceleration Profileの各設定項目の調整で行います。
ただし、Webキャッシュはメモリ上に保持されるアーキテクチャのため、キャッシュ容量に限界がありチューニングにも限度が出てきます。 その上で、Forward Proxy構成の特性上、Internetの不特定多数のWebサーバと接続が行われるため、Webキャッシュが有効に働く可能性が低くなりやすいです。
そのため、Webキャッシュのヒット率を大きく高めて、不要なトラフィックを流したくないような要件の場合は、そもそも論として製品特性が要件と合致しないBIG-IPを導入は避けるべきです。
BIG-IPの製品特性に由来するデメリットを擁護する話をしますが、 昨今はHTTPSによる暗号化通信が当たり前となっている時代性があるためWebキャッシュに不向きな環境になりつつあり、 さらにWebキャッシュよりかは、厳格なアクセス制御を行うためにForward Proxyの必要性に重きが置かれる場合があります。 よって、BIG-IPにおいてはWebキャッシュはオマケ程度の機能と認識しておくのが好ましいと考えられます。
Webキャッシュの除外
通信によってはWebキャッシュの対象から除外したい場合が考えられます。
具体的な例としては、
* Webサーバに対して死活監視を行いたいため、監視サーバからの通信には常に最新の状態が応答されるようにしたい。
* しかし、(監視サーバ以外の)端末からは通信にはWebキャッシュを活用したい。
と言ったシナリオが想定されます。
Webキャッシュの除外機能は、Web Acceleration Profileの URI List
の中にある Exclude List
の設定で行えます。
しかしながら、設定条件が宛先に対してのみのため、送信元に対してや、送信元 & 宛先の組み合わせには対応していません。
回避策として、Forward Proxyを介さないようにProxy除外設定を行う方法もあります。 しかし、既存環境がProxy制御を前提としている場合は、Proxy除外設定により通信フローが変わるため、 経路途中でのFirewallでのアクセス許可を行うなどの対応が必要になる可能性があります。
このようにBIG-IPが機能としては持っていても、設定条件に応じて機能の適用有無を切り替える要件がある場合に、BIG-IPでは実現が困難となる場合があります。
そのため、Webキャッシュの機能に限らずに「BIG-IPが機能として持っているから要件を満たしている。」と思い込まないように注意してください。
それでもWebキャッシュの除外で、送信元と宛先の組み合わせの要件を実現したい場合は、 Webキャッシュ用Virtual Serverと、Webキャッシュ除外用Virtual Serverを用意しておいて、Forward Proxyの指定先を分ける方法があります。
または、待ち受け用Virtual Serverで一度通信を受けたうえで、
通信の条件に応じてiRulesの virtual
コマンド で飛ばし先を切り替えるような方法も考えられますが、
とても複雑なスパゲッティ コードになりやすいのでオススメはできません。
関連ドキュメント
下記のドキュメントに、Web Acceleration Profileの仕様や各設定項目の情報がまとまっています。
Overview of the Web Acceleration profile
https://support.f5.com/csp/article/K14903
設定方法
SSLOを使用する場合(SSLO実装)を例に設定方法を示します。 実装方式によって設定方法が異なる箇所には補足説明を入れております。
- BIG-IPがv15系の場合は、SSLOのGuided ConfigurationでデプロイされたVirtual Serverで設定変更を行うため、設定変更が行えるように予めTopologiesのロック (Strict Updates)を外しておく必要があります。
- SSLOを使用しない場合(標準実装/LTM Only)は、Web Acceleration Profileを2つ作成して、HTTP Forward Proxy向けとSSL Forward Proxy向けのVirtual Serverに適用します。
対象バージョン情報
本記事に記載の情報は、下記のバージョンで調査を行っております。
F5 BIG-IP Virtual Edition Version 16.1.2
BIG-IPのモジュールは、LTM, APM, SSLOを有効化しております。SSL Orchestrator Package Version 16.1.0
SSLOはiApps LXのパッケージとして提供されているため、個別のバージョン情報があります。
Web Acceleration Profileの作成
メニュー: Local Traffic > Profiles > Services > Web Acceleration
より Create ボタンを押下します。
任意のパラメータでWeb Acceleration Profileを作成します。
- SSLOを使用する場合 (SSLO実装)は、Web Acceleration Profileを1つ作成します。
- SSLOを使用しない場合 (標準実装)は、Web Acceleration Profileを2つ作成します。
今回はSSLOを使用する場合 (SSLO実装)のため、例として下記のパラメータで作成します。
設定項目 設定名 Name WebCache SSLOを使用しない場合 (標準実装)は、Web Acceleration Profileが2つ必要となるため、 HTTP Forward Proxy向けと、SSL Forward Proxy向けVirtual Serverのどちらに適用するか判別しやすい命名にするのが好ましいです。
Virtual Serverへの適用
設定対象のVirtual Serverに移動します。
設定項目:
Web Acceleration Profile
に先ほど作成したWeb Acceleration Profileを適用してUpdate
ボタンを押下します。
ConfigSync (冗長構成時)
冗長化構成時は、Web Acceleration Profileの適用後にConfigSyncで設定を同期します。
Webキャッシュの状態確認
Webキャッシュの確認は下記のコマンドで行えます。
WebCache の文字列はWeb Acceleration Profileの設定名の指定箇所であるため、環境に応じて適宜読み替えてください。
tmsh show ltm profile web-acceleration WebCache
キャッシュされていない状態のサンプル出力
[root@bigip01:Active:In Sync] config # tmsh show ltm profile web-acceleration WebCache -------------------------------------------- Ltm::Web Acceleration Profile: WebCache -------------------------------------------- Virtual Server Name N/A Cache Cache Size (in Bytes) 0 Total Cached Items 0 Total Evicted Items 0 Inter-Stripe Size (in Bytes) 0 Inter-Stripe Cached Items 0 Inter-Stripe Evicted Items 0 Cache Hits/Misses Count Bytes Hits 0 0 Misses (Cacheable) 0 0 Misses (Total) 0 0 Inter-Stripe Hits 0 0 Inter-Stripe Misses 0 - Remote Hits 0 0 Remote Misses 0 - [root@bigip01:Active:In Sync] config #
キャッシュされている状態のサンプル出力
[root@bigip01:Active:In Sync] config # tmsh show ltm profile web-acceleration WebCache -------------------------------------------- Ltm::Web Acceleration Profile: WebCache -------------------------------------------- Virtual Server Name N/A Cache Cache Size (in Bytes) 1.6K Total Cached Items 1 Total Evicted Items 0 Inter-Stripe Size (in Bytes) 6.4K Inter-Stripe Cached Items 4 Inter-Stripe Evicted Items 0 Cache Hits/Misses Count Bytes Hits 13 21.3K Misses (Cacheable) 1 1.6K Misses (Total) 1 1.5K Inter-Stripe Hits 9 14.7K Inter-Stripe Misses 5 - Remote Hits 4 6.5K Remote Misses 1 - [root@bigip01:Active:In Sync] config #
Webキャッシュの削除
Webキャッシュの削除は下記のコマンドで行えます。
WebCache の文字列はWeb Acceleration Profileの設定名の指定箇所であるため、環境に応じて適宜読み替えてください。
tmsh delete ltm profile ramcache WebCache
Webキャッシュのカウンタのリセット
Webキャッシュのカウンタのリセットは下記のコマンドで行えます。
WebCache の文字列はWeb Acceleration Profileの設定名の指定箇所であるため、環境に応じて適宜読み替えてください。
tmsh reset-stats ltm profile web-acceleration WebCache