[Linux-ha-jp] 仮想IPがフェールオーバーするもすぐフェールバックし、さらにそれが実 IPとなってしまう。

アーカイブの一覧に戻る

wataru yamamoto wyama****@kke*****
2011年 11月 3日 (木) 16:09:10 JST


松島様
山本です。

ご回答ありがとうございます。

> ifdownしたのはhostM1ということでよろしいでしょうか?
そうです。


> ふと思ったのですが、Router 1とRouter 2は同じネットワークセグメントなのですね。
> VIPとその獲得、パケットをどのインターフェイスから出すか、routeなどでシステムが混乱しているのかも
> しれません(知識の裏付けが私にはありません)。
すみません。ネットワークアドレスを記述していませんでした。
同一セグメントではありません。
・Router1側のネットワークアドレスは、aa.bb.cc.240/29
・Router2側のネットワークアドレスは、aa.bb.cc.192/28
となります。

図にも追記してみました。何度もすみません。

                  +---------+
                  | Router1 |
                  +---------+
               (aa.bb.cc.241/29)
                       |
              netaddr  |
    (aa.bb.cc.240/29)  |
                       |
          +---------仮想IP1------+
          |   (aa.bb.cc.242/29)  |
          |                      |
          |                      |
         eth2                   eth2
   (aa.bb.cc.243/29)         (aa.bb.cc.244/29)
      +--------+             +--------+             (dd.ee.ff.1/28)
  eth3|        |eth1     eth1|        |eth3         +---------+
+-----| hostM1 |-------------| hostB1 |--------+----|         |
|     |        |             |        |        |    | Router3 |
|     +--------+             +--------+        |    |         |
|   (aa.bb.cc.202/28)       (aa.bb.cc.203/28)  |    +---------+
|         eth0                   eth0          |
|          |                      |            |
|          |   (aa.bb.cc.201/28)  |            |
|          +---------仮想IP2------+            |
|                      |                       |
|              netaddr |                       | netaddr
|     (aa.bb.cc.192/28)|                       |(dd.ee.ff.0/28)
|                      |                       |
|               (aa.bb.cc.193/28)              |
|                  +---------+                 |
|                  | Router2 |                 |
|                  +---------+                 |
|                                              |
+----------------------------------------------+

仮に、aa.bb.ccが1.2.3だとすると、

・Router1側のネットワークアドレスと使用可能なIPアドレスは、
1.2.3.240/29、1.2.3.241〜1.2.3.246

・Router2側のネットワークアドレスと使用可能なIPアドレスは、
1.2.3.192/28、1.2.3.192.193〜1.2.3.192.206

となり、問題ないように思えます。(私、この計算苦手なのですが)

実は当初、お客様からRouter1,2を同一ネットワークアドレスで
やってほしいとの要望がありました。一応それでも動いたのを少しだけ
確認したのですが、やっぱりリスキーに思えたので、このようにセグメント
をわけてもった次第です。セグメントの値はお客様が決めました。

ちなみに今回の問題が発生した時に、仮想IP2をつぶして仮想IP1だけに
しても、同じ現象でした。


> ifdown eth2してeth3からの返事もなくなっているのが不思議ですね。
そうなんです。


> ifdown eth2をhostM1でやっていたら、hostM1からRouter1には到達できないのでは、
ううぅ、まさしくその通りです。ここからのRouter1とのpingの様子は、hostM1でなく
フェールオーバ先のhostB1のログを参照すべきでした!大間抜けですみません!
以降にフェールオーバ直後と思われるhostB1のログを示します。例によって匿名化して、
<<point b1>>,<<point b2>>,<<point b3>>を入れています。

-------- ha-log failover err @ hostB1 start -----------
Nov  2 10:02:42 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:02:42 hostB1 attrd: [30546]: info: find_hash_entry: Creating hash entry for fail-count-ip-s
Nov  2 10:02:42 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:02:42 hostB1 attrd: [30546]: info: find_hash_entry: Creating hash entry for last-failure-ip-s
Nov  2 10:04:07 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:04:07 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=11:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=ip-g_start_0 )
Nov  2 10:04:07 hostB1 lrmd: [30544]: info: rsc:ip-g:8: start
<<point b1>>
Nov  2 10:04:07 hostB1 IPaddr2[30799]: INFO: ip -f inet addr add aa.bb.cc.201/28 brd aa.bb.cc.207
dev eth0
Nov  2 10:04:07 hostB1 IPaddr2[30799]: INFO: ip link set eth0 up
Nov  2 10:04:07 hostB1 IPaddr2[30799]: INFO: /usr/lib64/heartbeat/send_arp -i 200 -r 5 -p
/var/run/heartbeat/rsctmp/send_arp-aa.bb.cc.201 eth0 aa.bb.cc.201 auto not_used not_used
Nov  2 10:04:07 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation ip-g_start_0 (call=8,
rc=0, cib-update=20, confirmed=true) ok
Nov  2 10:04:08 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=12:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=ip-g_monitor_10000 )
Nov  2 10:04:08 hostB1 lrmd: [30544]: info: rsc:ip-g:9: monitor
Nov  2 10:04:08 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=14:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=ip-s_start_0 )
Nov  2 10:04:08 hostB1 lrmd: [30544]: info: rsc:ip-s:10: start
Nov  2 10:04:08 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation ip-g_monitor_10000
(call=9, rc=0, cib-update=21, confirmed=false) ok
<<point b2>>
Nov  2 10:04:08 hostB1 IPaddr2[30858]: INFO: ip -f inet addr add aa.bb.cc.242/29 brd aa.bb.cc.247
dev eth2
Nov  2 10:04:08 hostB1 IPaddr2[30858]: INFO: ip link set eth2 up
Nov  2 10:04:08 hostB1 IPaddr2[30858]: INFO: /usr/lib64/heartbeat/send_arp -i 200 -r 5 -p
/var/run/heartbeat/rsctmp/send_arp-aa.bb.cc.242 eth2 aa.bb.cc.242 auto not_used not_used
Nov  2 10:04:08 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation ip-s_start_0 (call=10,
rc=0, cib-update=22, confirmed=true) ok
Nov  2 10:04:09 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=15:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=ip-s_monitor_10000 )
Nov  2 10:04:09 hostB1 lrmd: [30544]: info: rsc:ip-s:11: monitor
Nov  2 10:04:09 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=17:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=hoge-r_start_0 )
Nov  2 10:04:09 hostB1 lrmd: [30544]: info: rsc:hoge-r:12: start
Nov  2 10:04:09 hostB1 hoge_proxy.ra[30942]: INFO: Starting hoge_proxy ...
Nov  2 10:04:09 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation ip-s_monitor_10000
(call=11, rc=0, cib-update=23, confirmed=false) ok
Nov  2 10:04:10 hostB1 hoge_proxy.ra[30942]: INFO: hoge_proxy started
Nov  2 10:04:10 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation hoge-r_start_0
(call=12, rc=0, cib-update=24, confirmed=true) ok
Nov  2 10:04:11 hostB1 crmd: [30547]: info: do_lrm_rsc_op: Performing
key=18:8:0:db95561c-6613-41e2-b7a0-17b8701178c3 op=hoge-r_monitor_15000 )
Nov  2 10:04:11 hostB1 lrmd: [30544]: info: rsc:hoge-r:13: monitor
Nov  2 10:04:11 hostB1 crmd: [30547]: info: process_lrm_event: LRM operation hoge-r_monitor_15000
(call=13, rc=0, cib-update=25, confirmed=false) ok
Nov  2 10:04:11 hostB1 lrmd: [30544]: info: RA output: (ip-g:start:stderr) ARPING aa.bb.cc.201 from
aa.bb.cc.201 eth0#012Sent 5 probes (5 broadcast(s))#012Received 0 response(s)
Nov  2 10:04:12 hostB1 lrmd: [30544]: info: RA output: (ip-s:start:stderr) ARPING aa.bb.cc.242 from
aa.bb.cc.242 eth2#012Sent 5 probes (5 broadcast(s))#012Received 0 response(s)
Nov  2 10:04:13 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:04:19 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
<<point b3>>
Nov  2 10:04:30 hostB1 heartbeat: [30529]: info: Link hostm1:eth3 dead.
Nov  2 10:04:41 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:06:38 hostB1 attrd: [30546]: info: attrd_ha_callback: flush message from hostm1
Nov  2 10:06:38 hostB1 crmd: [30547]: notice: crmd_client_status_callback: Status update: Client
hostm1/crmd now has status [offline] (DC=false)
Nov  2 10:06:38 hostB1 crmd: [30547]: info: crm_update_peer_proc: hostm1.crmd is now offline
Nov  2 10:06:38 hostB1 crmd: [30547]: info: crmd_client_status_callback: Got client status callback
- our DC is dead
Nov  2 10:06:38 hostB1 crmd: [30547]: info: do_state_transition: State transition S_NOT_DC ->
S_ELECTION [ input=I_ELECTION cause=C_CRMD_STATUS_CALLBACK origin=crmd_client_status_callback ]
Nov  2 10:06:38 hostB1 crmd: [30547]: info: update_dc: Unset DC hostm1
Nov  2 10:06:38 hostB1 cib: [30543]: info: cib_process_shutdown_req: Shutdown REQ from hostm1
Nov  2 10:06:38 hostB1 cib: [30543]: info: cib_process_request: Operation complete: op
cib_shutdown_req for section 'all' (origin=hostm1/hostm1/(null), version=0.7.62): ok (rc=0)
Nov  2 10:06:39 hostB1 crmd: [30547]: info: mem_handle_event: Got an event OC_EV_MS_NOT_PRIMARY from ccm
Nov  2 10:06:39 hostB1 crmd: [30547]: info: mem_handle_event: instance=2, nodes=2, new=2, lost=0,
n_idx=0, new_idx=0, old_idx=4
Nov  2 10:06:39 hostB1 crmd: [30547]: info: crmd_ccm_msg_callback: Quorum lost after event=NOT
PRIMARY (id=2)
Nov  2 10:06:39 hostB1 cib: [30543]: info: cib_client_status_callback: Status update: Client
hostm1/cib now has status [leave]
Nov  2 10:06:39 hostB1 cib: [30543]: info: crm_update_peer_proc: hostm1.cib is now offline
Nov  2 10:06:39 hostB1 cib: [30543]: info: mem_handle_event: Got an event OC_EV_MS_NOT_PRIMARY from ccm
Nov  2 10:06:39 hostB1 cib: [30543]: info: mem_handle_event: instance=2, nodes=2, new=2, lost=0,
n_idx=0, new_idx=0, old_idx=4
Nov  2 10:06:39 hostB1 cib: [30543]: info: cib_ccm_msg_callback: Processing CCM event=NOT PRIMARY (id=2)
Nov  2 10:06:49 hostB1 heartbeat: [30529]: info: killing /usr/lib64/heartbeat/crmd process group
30547 with signal 15
Nov  2 10:06:49 hostB1 crmd: [30547]: info: crm_signal_dispatch: Invoking handler for signal 15:
Terminated
Nov  2 10:06:49 hostB1 crmd: [30547]: info: crm_shutdown: Requesting shutdown
Nov  2 10:06:49 hostB1 crmd: [30547]: info: do_shutdown_req: Sending shutdown request to DC: <null>
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: quorum plugin: majority
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: cluster:linux-ha, member_count=1, member_quorum_votes=100
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: total_node_count=2, total_quorum_votes=200
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: quorum plugin: twonodes
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: cluster:linux-ha, member_count=1, member_quorum_votes=100
Nov  2 10:06:49 hostB1 ccm: [30542]: debug: total_node_count=2, total_quorum_votes=200
Nov  2 10:06:49 hostB1 ccm: [30542]: info: Break tie for 2 nodes cluster
Nov  2 10:06:49 hostB1 crmd: [30547]: info: mem_handle_event: Got an event OC_EV_MS_INVALID from ccm
Nov  2 10:06:49 hostB1 crmd: [30547]: info: mem_handle_event: no mbr_track info
Nov  2 10:06:49 hostB1 crmd: [30547]: info: mem_handle_event: Got an event OC_EV_MS_NEW_MEMBERSHIP
from ccm
Nov  2 10:06:49 hostB1 crmd: [30547]: info: mem_handle_event: instance=3, nodes=1, new=0, lost=1,
n_idx=0, new_idx=1, old_idx=3
Nov  2 10:06:49 hostB1 crmd: [30547]: info: crmd_ccm_msg_callback: Quorum (re)attained after
event=NEW MEMBERSHIP (id=3)
Nov  2 10:06:49 hostB1 crmd: [30547]: info: ccm_event_detail: NEW MEMBERSHIP: trans=3, nodes=1,
new=0, lost=1 n_idx=0, new_idx=1, old_idx=3
Nov  2 10:06:49 hostB1 crmd: [30547]: info: ccm_event_detail: #011CURRENT: hostb1 [nodeid=0, born=3]
Nov  2 10:06:49 hostB1 crmd: [30547]: info: ccm_event_detail: #011LOST:    hostm1 [nodeid=1, born=1]
Nov  2 10:06:49 hostB1 crmd: [30547]: info: crm_update_peer: Node hostm1: id=1 state=lost (new)
addr=(null) votes=-1 born=1 seen=2 proc=00000000000000000000000000000002
Nov  2 10:06:49 hostB1 cib: [30543]: info: mem_handle_event: Got an event OC_EV_MS_INVALID from ccm
Nov  2 10:06:49 hostB1 cib: [30543]: info: mem_handle_event: no mbr_track info
Nov  2 10:06:49 hostB1 cib: [30543]: info: mem_handle_event: Got an event OC_EV_MS_NEW_MEMBERSHIP
from ccm
Nov  2 10:06:49 hostB1 cib: [30543]: info: mem_handle_event: instance=3, nodes=1, new=0, lost=1,
n_idx=0, new_idx=1, old_idx=3
Nov  2 10:06:49 hostB1 cib: [30543]: info: cib_ccm_msg_callback: Processing CCM event=NEW MEMBERSHIP
(id=3)
Nov  2 10:06:49 hostB1 crmd: [30547]: info: do_state_transition: State transition S_ELECTION ->
S_INTEGRATION [ input=I_ELECTION_DC cause=C_FSA_INTERNAL origin=do_election_check ]
Nov  2 10:06:49 hostB1 cib: [30543]: info: crm_update_peer: Node hostm1: id=1 state=lost (new)
addr=(null) votes=-1 born=1 seen=2 proc=00000000000000000000000000000202
Nov  2 10:06:49 hostB1 crmd: [30547]: info: do_te_control: Registering TE UUID:
91485bad-0cc7-4a69-8dc5-6b3880de3067
Nov  2 10:06:49 hostB1 crmd: [30547]: info: set_graph_functions: Setting custom graph functions
Nov  2 10:06:49 hostB1 crmd: [30547]: info: unpack_graph: Unpacked transition -1: 0 actions in 0
synapses
Nov  2 10:06:49 hostB1 crmd: [30547]: info: start_subsystem: Starting sub-system "pengine"
Nov  2 10:06:49 hostB1 pengine: [32308]: info: Invoked: /usr/lib64/heartbeat/pengine
Nov  2 10:06:49 hostB1 pengine: [32308]: info: main: Starting pengine
-------- ha-log failover err @ hostB1 end -------------

確かに、<<point b1>>, <<point b2>>で、eth0,eth2それぞれにip割り当ててarp
出してますね。勉強になります。やっぱりきちんとログみないとだめですね。
ありがとうございます。

ただ<<point b3>>で、
>Nov  2 10:04:30 hostB1 heartbeat: [30529]: info: Link hostm1:eth3 dead.
とhostm1のeth3が死んでしまっています。先ほどのhostM1のログや、松島さんの指摘にも
ありますとおり、これが原因なのでしょうか?でもフェールオーバしてしまった
ホストのI/Fなので、これはこれでもよいものなのかな??

ちなみに、図でも示しているようにeth3サイドについてはお客さんの要望で仮想IP
を設けていません。もしかして仮想IPは全I/Fに設定しておいた方がよいのかな?
さらにpingdもそれに合わせておいたほうがよいのかな?

でも、そもそもeth0を抜いた時にはきれいにフェールオーバーしている。eth3も
同様。なぜeth2だけが??

なんだかよくわからなくなってきました。現場できちんとログを取り直す必要があると思います。

ちなみに同ログをERRORでgrepすると以下のようなものが出ます。
-----------------------------------------------------------------
Nov  2 10:23:09 hostB1 pengine: [4037]: ERROR: unpack_resources: Resource start-up disabled since no
STONITH resources have been defined
Nov  2 10:23:09 hostB1 pengine: [4037]: ERROR: unpack_resources: Either configure some or disable
STONITH with the stonith-enabled option
Nov  2 10:23:09 hostB1 pengine: [4037]: ERROR: unpack_resources: NOTE: Clusters with shared data
need STONITH to ensure data integrity
-----------------------------------------------------------------
STONITHってよくわからず設定も面倒でしたので、使わないよう設定していたと思いますが、
これもなにか関係ありそうでしょうか。

またなにか思い出した時にでも構いません。よろしくお願いいたします。

以上です。

-- 
yamamoto





Linux-ha-japan メーリングリストの案内
アーカイブの一覧に戻る