はじめに:
今月は、IPハッシュによる負荷分散を実現するiRuleをご紹介します。

Poolの設定画面ではIPハッシュによる負荷分散方式を選択できませんが、iRuleを利用することで実現可能です。また、下記URLにその他のハッシュ関数を利用した負荷分散方法もいくつかございますのでご参照ください。

下記URLでもご確認いただけます。
http://devcentral.f5.com/Default.aspx?tabid=63&PageID=151&articleType=ArticleView&articleId=135

タイトル:IPハッシュによる負荷分散を行うiRule

メリット:
ハッシュ関数を利用した負荷分散を実現することができます。

機能説明:
Poolメンバの中でActiveなメンバだけを抽出します。
クライアントのIPアドレスを基にハッシュ値を生成します。
生成したハッシュ値を基に振り分けるサーバを決定します。

設定概要:
負荷分散させるためのtest_poolを作成した後、iRuleをVirtual Serverに関連付けて下さい。

【iRule定義】

when CLIENT_ACCEPTED {
  set mem_list [active_members -list test_pool]
  binary scan [md5 [IP::remote_addr]] w key
  set hashval [expr {$key % [active_members test_pool]}]
  set sel_member [lindex $mem_list $hashval]
  pool test_pool member [lindex $sel_member 0] [lindex $sel_member 1]
}

補足: 上記iRuleで利用しているactive_members -list関数は、v9.4.2以降で利用可能です。 http://devcentral.f5.com/wiki/default.aspx/iRules/active_members.html

※F5ネットワークスジャパンでは、サンプルコードについて検証を実施していますが、お客様の使用環境における動作を保証するものではありません。実際の使用にあたっては、必ず事前にテストを実施することを推奨します。