リクエストヘッダー「User-Agent」を条件にする

動作確認バージョン

vThunder Version 6.0.7-P2

ロードバランサー(vThunder ADC)では「aFleX」という機能を利用することでリクエストに含まれるクライアント属性でコンテンツの種類を識別し、適切なサーバーに振り分けできます。
本項では、リクエストのヘッダーに含まれるUser-Agent属性を識別する設定を紹介します。

注釈

サンプル設定のシナリオ

  • クライアントのアクセス先は、ロードバランサーのVirtual Server IPアドレス(172.16.10.102 port443)宛にしたい

  • 条件1として、User-Agentに「TEST1」が含まれる場合は、server01(192.168.2.11)へ転送したい

  • 条件2として、User-Agentに「TEST2」が含まれる場合は、server02(192.168.2.12)へ転送したい

  • それ以外の通信は、server03(192.168.2.13)に転送したい

構成図

requestheader01-01.png

シナリオにおける設定のながれ

1.以下のコマンドで、aFleX の設定名「header_switching」を作成し、編集モードに入る

CLIコマンド入出力例

vThunder(config)#aflex create header_switching
Type in your aFleX script (type . on a line by itself when done)

2.aFleX設定名「header_switching」へスクリプトプログラミング言語TCL(Tool Command Language) を用いて条件式を記載する

設定例

when HTTP_REQUEST {
 switch -glob -- [HTTP::header "User-Agent"] {
  "*TEST1*" {
   pool servicegroup01
  }
  "*TEST2*" {
   pool servicegroup02
  }
  default {
   pool servicegroup03
  }
 }
}
.
aFleX header_switching created; syntax check passed
vThunder(config)#

正しく設定が完了したときのコンフィグレーションは次のとおり。

vThunder#show aflex header_switching
Name:                    header_switching
Syntax:                  Check
Virtual port:            No
Content:
when HTTP_REQUEST {
 switch -glob -- [HTTP::header "User-Agent"] {
  "*TEST1*" {
   pool servicegroup01
  }
  "*TEST2*" {
   pool servicegroup02
  }
  default {
   pool servicegroup03
  }
 }
}

3.Virtual Server名「Header_Switching_virtualserver01」を次のようなパラメーターで作成して、aFleX 設定名「header_switching」と紐づける

設定項目

設定値

Virtual Server名

Header_Switching_virtualserver01

IPアドレス

172.16.10.102

ポート番号

443

プロトコル

HTTPS

SSLテンプレート

servercert

aFleX設定名

header_switching

Souce NAT(任意)

有効化(任意)

CLIにて入力するコマンド

vThunder(config)#slb virtual-server Header_Switching_virtualserver01 172.16.10.102
vThunder(config-slb vserver)#port 443 https
vThunder(config-slb vserver-vport)#source-nat auto precedence
vThunder(config-slb vserver-vport)#template client-ssl servercert
vThunder(config-slb vserver-vport)#aflex header_switching
vThunder(config-slb vserver-vport)#

正しく設定が完了したときのコンフィグレーションは次のとおり。

vThunder#show run slb virtual-server Header_Switching_virtualserver01
!Section configuration: 183 bytes
!
slb virtual-server Header_Switching_virtualserver01 172.16.10.102
  port 443 https
    aflex header_switching
    source-nat auto precedence
    template client-ssl servercert
!

動作確認結果

ここではクライアントにサーバーを配置してCurlコマンドを実行することで動作確認をします。
1.クライアント側のサーバーで次のコマンドを実行して、HTTPリクエストヘッダー「User-Agent」に対して指定の値を挿入する。
出力された結果から、User-Agentに「TEST1」が含まれる場合、server01(192.168.2.11)へ転送されていることを確認する。

コマンド入出力例

ubuntu@clientvm:~$ curl https://test.example.com -H "User-Agent: TEST1"
server01
ubuntu@clientvm:~$

2.同様に以下のコマンドを実行して、出力結果を確認する。
以下からUser-Agentに「TEST2」が含まれる場合、server02(192.168.2.12)へ転送されていることを確認する。
それ以外の接続の場合、server03(192.168.2.13)へ転送されていることを確認する。

コマンド入出力例

ubuntu@clientvm:~$ curl https://test.example.com -H "User-Agent: TEST2"
server02
ubuntu@clientvm:~$
ubuntu@clientvm:~$ curl https://test.example.com
server03
ubuntu@clientvm:~$