内容/目次
Load Balancerには、割り振り先サーバーの障害を検知した場合に、通知などの目的に利用できるスクリプトとして、serverUp / serverDown / managerAlert / managerClearスクリプトの4つがあります。
製品にはこれらのスクリプトのサンプルが提供されており、これを自由にカスタマイズして、ログへの記録や管理ツールへの通知などを行うことができます。
Edge Components V7.0では、Load BalancerとしてLoad Balancer for IPv4とLoad Balancer for IPv4 and IPv6の、実装の異なる2つのソフトウェアが提供されています。
従来のLoad BalancerであるLoad Balancer for IPv4は、カーネル・エクステンションで動作しますが、新しいLoad BalancerであるLoad Balancer for IPv4 and IPv6は、ユーザー・スペースでの実装となっていることから、User Space Load Balancer(ULB)とも呼ばれます。
V7.0ではこのスクリプトの挙動が、Load Balancer for IPv4とLoad Balancer for IPv4 and IPv6とで異なっているため注意が必要となります。
【対象製品】
Edge Components V7.0 Load Balancer for IPv4 and IPv6
【内容】
<スクリプトの種類と呼び出しタイミング>
・managerAlertスクリプト
- このスクリプトはmanagerが特定ポートに定義された全てのサーバーをダウン・ステータスとした際に呼ばれます。
引数として全滅したクラスター:ポートの情報が渡されます。
・managerClearスクリプト
- このスクリプトはmanagerAlertスクリプト実行後(つまり特定ポートのサーバー全滅後)、その特定ポートで1台(以上)が復旧した際に呼ばれます。
引数として全滅したクラスター:ポートの情報が渡されます。
・serverDownスクリプト
- このスクリプトはmanagerが特定のサーバーをダウン・ステータスとした際に呼ばれます。
引数としてダウンとマークされたクラスター:ポート:サーバー名が渡されます。
・serverUpスクリプト
- このスクリプトはmanagerがダウンしていた特定サーバーが復旧し、アップ・ステータスとマークした際に呼ばれます。
引数としてアップとマークされたクラスター:ポート:サーバー名が渡されます。
[環境]
Dispatcher --- server1
+---- server2
+---- server3
+---- server4
[操作手順]
(1) server1、server2、server3、server4の順で割振り先サーバー全体を停止
(2) server4、server3、server2、server1の順で割振り先サーバーを復旧
[出力例]
上記操作手順でサーバーの停止・復旧を行った際の各スクリプトのサンプルのlb.logへの出力例です。
Fri Nov 26 21:59:31 JST 2004 cluster1:80:server1 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:00:32 JST 2004 cluster1:80:server2 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:01:02 JST 2004 cluster1:80:server3 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:01:25 JST 2004 All servers for cluster1:80 have been marked down. ->managerAlertスクリプト
Fri Nov 26 22:02:03 JST 2004 One or more servers have recovered in cluster1:80. ->managerClearスクリプト
Fri Nov 26 22:02:03 JST 2004 cluster1:80:server3 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:02:03 JST 2004 cluster1:80:server2 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:02:03 JST 2004 cluster1:80:server1 has been marked down. ->serverDownスクリプト
Fri Nov 26 22:02:25 JST 2004 cluster1:80:server3 has been marked back up. ->serverUpスクリプト
Fri Nov 26 22:02:48 JST 2004 cluster1:80:server2 has been marked back up. ->serverUpスクリプト
Fri Nov 26 22:02:56 JST 2004 cluster1:80:server1 has been marked back up. ->serverUpスクリプト
- ※
まず注意していただきたいのは全サーバー・ダウン時の挙動(上記緑字の箇所)です。
ポート内の最後のサーバーがダウンした際には、serverDownスクリプトは呼ばれずにmanagerAlertスクリプトのみが呼ばれます。
どのサーバーがダウンしたのかは「消去法」で判断する必要があります。
※
次に注意して頂きたいのは全サーバー・ダウン状況から復活した際の挙動(上記赤字の箇所)です。
全サーバー・ダウン状況からserver4が復活しmanagerClearスクリプトが呼ばれ、そして、他の未だダウンしているサーバーに対してserverDownスクリプトが呼ばれます。
従いまして、どのサーバーが復旧したかは「消去法」で判断して頂くしかありません。
また、既にダウン検知しているサーバーに対してserverDownスクリプトが呼ばれることになりますので、特に管理ツールなどへの通知を行っている場合などは、2重通知とならないよう作りこみを行うなど運用上の工夫が必要になります。
[環境]
Dispatcher --- server1
+---- server2
+---- server3
+---- server4
[操作手順]
(1) server1、server2、server3、server4の順で割振り先サーバー全体を停止
(2) server4、server3、server2、server1の順で割振り先サーバーを復旧
[出力例]
上記操作手順でサーバーの停止・復旧を行った際の各スクリプトのサンプルのlb.logへの出力例です。
- Wed Aug 19 16:20:02 JST 2009 cluster1@80@server1 has been marked down. ->serverDownスクリプト
Wed Aug 19 16:20:44 JST 2009 cluster1@80@server2 has been marked down. ->serverDownスクリプト
Wed Aug 19 16:21:20 JST 2009 cluster1@80@server3 has been marked down. ->serverDownスクリプト
Wed Aug 19 16:21:34 JST 2009 cluster1@80@server4 has been marked down. ->serverDownスクリプト
Wed Aug 19 16:21:34 JST 2009 All servers for cluster1@80 have been marked down. ->managerAlertスクリプト
Wed Aug 19 16:21:56 JST 2009 cluster1@80@server4 has been marked back up. ->serverUpスクリプト
Wed Aug 19 16:21:56 JST 2009 One or more servers have recovered in cluster1@80. ->managerClearスクリプト
Wed Aug 19 16:22:30 JST 2009 cluster1@80@server3 has been marked back up. ->serverUpスクリプト
Wed Aug 19 16:22:44 JST 2009 cluster1@80@server2 has been marked back up. ->serverUpスクリプト
Wed Aug 19 16:23:31 JST 2009 cluster1@80@server1 has been marked back up. ->serverUpスクリプト
- ※
ポート内の最後のサーバーがダウンした際には、serverDownスクリプトとmanagerAlertスクリプトがそれぞれ呼ばれるようになりました(上記緑字の箇所)。
※
全サーバー・ダウン状況から復活した際には、serverUpスクリプトとmanagerClearスクリプトがそれぞれ呼ばれるようになりました(上記赤字の箇所)。
【影響と対応策】
今回の変更により、従来その挙動がわかりにくかったserverUp / serverDown / managerAlert / managerClearスクリプトの挙動が、直感的にわかりやすいものとなりました。
新規に環境を構築する、あるいは新規にスクリプトの利用を開始する場合には、新しいスクリプトの挙動を理解した上で、スクリプトを利用していただければ問題ありません。
V6.1以前のLoad Balancerを使用している環境からV7.0のLoad Balancer for IPv4 and IPv6への移行を行う場合、スクリプトの挙動の変更に注意を払う必要があります。
スクリプト内のロジックを確認し、挙動の変更が影響を与えないか確認して下さい。
特に、スクリプトからdscontrolコマンドを発行して振り分けの変更を行うなど、複雑なロジックが組まれている場合には、今回のスクリプトの挙動変更は大きな影響がありますのでご注意下さい。
以上
文書情報
有効期限: 2017年8月24日
資料番号: WAS-09-045
