BIG-IPには、profileのfailbackホストを設定することで
poolダウン時にリダイレクトすることができますが、
今回は、BIG-IP自身にコンテンツを配置し、全MEMBERダウン時にそのコンテンツを表示させます。
Webサーバ自身に、SSL証明書を設定している場合には、この方法は利用できません。
BIG-IPにSSHでログインします。
Sorryページ用コンテンツを作成します。
#cd /var/class/
#vi maint.index.html.class
日本語は文字参照形式に変換する必要があるため、
コンテンツの中身はこのように記述します。1行で記述してください。
“1” := “<HTML><HEAD><TITLE>メンテナンス中</TITLE></HEAD><BODY><H2>メンテナンス中です・・・</BODY></HTML>”,
日本語を文字参照形式に変換するには、下記のサイトが便利です
http://www.benricho.org/moji_conv/15.html
続いて、bigip.confにclass定義を追記します。
ソフトバンククリエイティブ
売り上げランキング: 47,437
bigip.confに下記の内容を追記し保存します。
class maint_index_html {type stringfilename “/var/class/maint.index.html.class”separator “:=”}
次に、iruleを記載します。
iruleについては、こちらのサイトを参考にさせていただきました。
pool名は環境にあわせて、修正してください。
when RULE_INIT {log local0. “Init”log local0. “init2”set static::maint_prefix “/maintenancepage”set static::maint_len [string length $static::maint_prefix]}
when HTTP_REQUEST {log local0. “Request start [HTTP::uri]”log local0. “Request continue”set uri [HTTP::uri]log local0. “URI [HTTP::uri]”log local0. “main_prefix = $static::maint_prefix”if { $uri equals $static::maint_prefix } {HTTP::respond 301 “Location $static::maint_prefix”return}if { $uri starts_with $static::maint_prefix } {set uri [string range $uri $static::maint_len end]log local0. “here”switch $uri {“/” –“/index.html” { HTTP::respond 200 content [class match -value 1 equals maint_index_html] “Content-Type” “text/html” }default { HTTP::respond 404 }}return}if { [active_members http_pool] < 1 } {HTTP::redirect “$static::maint_prefix/index.html”return}}
作成したiruleをVirtualServerに適用します。
[Virtual Servers]→[該当VS]→[Resources]
iRules右にある、[Manage]をクリックし、作成したiRuleを適用してください。
これで、pool memberが全ダウンした場合に、BIG-IP上に配置されたコンテンツが表示されるようになります。