My Home NW Lab

逸般の誤家庭のネットワーク

BIG-IP Forward Proxy構成でのWebキャッシュの設定 (Web Acceleration Profile)

目次

前置き

BIG-IPのForward Proxy構成のWebキャッシュはメモリ上に保存されます。 表現を変えると、大容量な保存領域があるディスク上には保存されません。 そのため、Webキャッシュをメインに据えた用途でのBIG-IP Forward Proxyの導入は不向きです。

本記事はForward Proxy構成を取り扱っており、Load Balancer構成は対象外となります。
Forward Proxy構成とLoad Balancer構成では通信の特性が異なるため、混同しないように留意してください。

設定の仕方と注意点

Webキャッシュは、Web Acceleration ProfileをVirtual Serverに紐付けると有効化できます。

f:id:myhomenwlab:20220114105043j:plain
Web Acceleration Profile の設定画面

Forward Proxy構成では、Virtual ServerがHTTP Forward Proxy向けとSSL Forward Proxy向けが存在するため適用対象に注意が必要です。
何故ならば、SSLO (SSL Orchestrator)の使用有無で、Virtual Serverを通る通信フローが異なるからです。
適用先のVirtual Serverを誤ると、アクセス制御がバイパスされてコンテンツが返される可能性があります。

BIG-IP Forward Proxy構成の基礎的な通信フローに関しては、筆者の下記の記事を参考にしてください。

myhomenwlab.hatenablog.com

Web Acceleration Profileの適用の比較表

Web Acceleration Profileの適用先のVirtual Serverを整理すると、下記の表のようになります。

f:id:myhomenwlab:20220114005740j:plain
Web Acceleration Profileの適用の比較表

標準実装の適用箇所

f:id:myhomenwlab:20220114005459j:plain
【標準実装】 LTM

f:id:myhomenwlab:20220114005512j:plain
【標準実装】 LTM + APM

SSLO実装の適用箇所

SSLO実装では前段にあたるHTTP Forward Proxy向けVirtual Serverの方にはWeb Acceleration Profileは適用しないでください。
SSLO実装では後段にあたるSSL Forward ProxyのVirtual Server向けVirtual Serverを必ず通信が通るようにした上でアクセス制御を一括適用しているため、前段でWebキャッシュ機能を適用するとアクセス制御がバイパスされてしまい、セキュリティ上のリスクになります。

f:id:myhomenwlab:20220114005522j:plain
【SSLO実装】 LTM + APM + SSLO

Webキャッシュのチューニング

Webキャッシュのチューニングは、Web Acceleration Profileの各設定項目の調整で行います。

ただし、Webキャッシュはメモリ上に保持されるアーキテクチャのため、キャッシュ容量に限界がありチューニングにも限度が出てきます。 その上で、Forward Proxy構成の特性上、Internetの不特定多数のWebサーバと接続が行われるため、Webキャッシュが有効に働く可能性が低くなりやすいです。

そのため、Webキャッシュのヒット率を大きく高めて、不要なトラフィックを流したくないような要件の場合は、そもそも論として製品特性が要件と合致しないBIG-IPを導入は避けるべきです。

f:id:myhomenwlab:20220114110559j:plain
Forward Proxy構成の特性とWebキャッシュ

BIG-IPの製品特性に由来するデメリットを擁護する話をしますが、 昨今はHTTPSによる暗号化通信が当たり前となっている時代性があるためWebキャッシュに不向きな環境になりつつあり、 さらにWebキャッシュよりかは、厳格なアクセス制御を行うためにForward Proxyの必要性に重きが置かれる場合があります。 よって、BIG-IPにおいてはWebキャッシュはオマケ程度の機能と認識しておくのが好ましいと考えられます。

Webキャッシュの除外

通信によってはWebキャッシュの対象から除外したい場合が考えられます。

具体的な例としては、
* Webサーバに対して死活監視を行いたいため、監視サーバからの通信には常に最新の状態が応答されるようにしたい。
* しかし、(監視サーバ以外の)端末からは通信にはWebキャッシュを活用したい。
と言ったシナリオが想定されます。

f:id:myhomenwlab:20220114112644j:plain
Webキャッシュの除外と条件指定

Webキャッシュの除外機能は、Web Acceleration Profileの URI List の中にある Exclude List の設定で行えます。 しかしながら、設定条件が宛先に対してのみのため、送信元に対してや、送信元 & 宛先の組み合わせには対応していません。

f:id:myhomenwlab:20220114105336j:plain
Web Acceleration Profileの 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のどちらに適用するか判別しやすい命名にするのが好ましいです。

f:id:myhomenwlab:20220114105043j:plain
Web Acceleration Profile の設定画面

Virtual Serverへの適用

  • 設定対象のVirtual Serverに移動します。

    • SSLOを使用する場合 (SSLO実装)は、SSL Forward Proxy向けのVirtual Serverのみが適用対象です。
    • SSLOを使用しない場合 (標準実装)は、HTTP Forward Proxy向けと、SSL Forward Proxy向けVirtual Serverの2つが適用対象です。
  • 設定項目: Web Acceleration Profile に先ほど作成したWeb Acceleration Profileを適用して Update ボタンを押下します。

f:id:myhomenwlab:20220114105759j:plain
Virtual ServerへのWeb Acceleration Profileの適用

ConfigSync (冗長構成時)

冗長化構成時は、Web Acceleration Profileの適用後にConfigSyncで設定を同期します。

f:id:myhomenwlab:20220114105824j:plain
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