F5 BIG-IPによるロードバランスの中で、Pool Memberダウン・コネクションリミット・レートリミット超過の際にSorry応答するPoolに振り分ける。
内容としては、以下のDev Central Forumで議論されている通り。
Dev Central - Multiple strategies for maintenance page
sorry pool iRule
pool memberへのリクエストに失敗した際のLB_FAILED
イベントを拾って、sorry-poolに振り分け直す。
when LB_FAILED { LB::reselect pool sorry-pool }
NG - LB_FAILED
の中ではLB::reselect
が必要
HTTP_REQUESTで記載するようなpool
による振り分けは不可。
when LB_FAILED { pool sorry-pool }
別方式 - HTTP_REQUEST
で処理する
別の一般的な方式として、HTTP_REQUEST
の中でactive_members
を判定してsorry-poolに振る設定も期待動作となる。
when HTTP_REQUEST { if {[active_members [LB::server pool]] < 1 } { pool sorry-pool } }
ただし、この方式だとEnable Request Queueing
と組み合わせて、Request Queue Depth
, Request Queue Timeout
超過時にsorry-poolに振る動作ができない。
こちらにまとめた通り、connection limit
に到達している場合、Status: up
, Availability: unavailable
となるため、キューイングされる前にHTTP_REQUEST
のiRuleでsorry-poolに振られてしまう。
参考 BIG-IP自身でSorry応答
Sorryサーバを使用せず、BIG-IP自身がSorry応答する場合はこちらの通り。いつも参考にさせていただいています。ありがとうございます。