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