designetwork

ネットワークを軸としたIT技術メモ

BIG-IP iRuleでSorry Poolに振り分ける

F5 BIG-IPによるロードバランスの中で、Pool Memberダウン・コネクションリミット・レートリミット超過の際にSorry応答するPoolに振り分ける。

内容としては、以下のDev Central Forumで議論されている通り。

Dev Central - Multiple strategies for maintenance page

f5partnerdashboard.force.com

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に振られてしまう。

designetwork.daichi703n.com

参考 BIG-IP自身でSorry応答

Sorryサーバを使用せず、BIG-IP自身がSorry応答する場合はこちらの通り。いつも参考にさせていただいています。ありがとうございます。

qiita.com