【メモ】BIG IPでURL毎にPoolを分ける

F5 BIG IP LTMで1つのバーチャルサーバに対してURLで振り分け先(Pool)を変えるiRuleをかかなくてはならなくなったのでメモ。

参考にしたサイトはこちら。
BIG-IPで、Hostヘッダに基づいた振り分けを行うiRule3種
F5 official HTTP::uri

また, 動作イメージとして「www.xxx.yyy.com」というFQDNに対して, サイト1用とサイト2用のディレクトリを分けている状況を想定している。

www.xxx.yyy.com/siteA/  -> poolAへ
www.xxx.yyy.com/siteB/  -> poolBへ

when HTTP_REQUEST
{
# (1)
set uri [split [HTTP::uri] "/"]
# (2)
set uri1st [lindex $uri 1]
# (3)
if { [class match $uri1stp equals distribute_list] } {
set pool [class match -value $uri1st equals distribute_list]
pool $pool
}
# (4)
else {
# Default Pool
pool pool_def
}
}

iRuleと合わせて予めData Group Listを作成する。

処理の流れ。

  1. URI取得、スラッシュで区切りインデックス化
  2. FQDNの次にくる文字列を取り出す
  3. Data Group ListのStringにマッチしたとき, poolにマッチしたValueを返す
  4. そうでなければデフォルトのプール
色々調べると, 「start_with」などあるけれど, 今回は特定のディレクトリ配下で振り分け先を分けるケースを想定したのでこちらの方がよいのかなーなんて。
記録を残すことを目的としてまずは・・・。