
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応答する場合はこちらの通り。いつも参考にさせていただいています。ありがとうございます。