[Linux-ha-jp] リソース停止時のフェイルオーバについて

Back to archive index

稲垣 tadas****@gmail*****
2009年 10月 15日 (木) 16:34:16 JST


メイトリックス 山内様

お世話になります。稲垣です。

すみません。
FOが実施されず、自分自身でリソースを再起動してしまうことです。

厳密に言うと自身でリソース再起動してもいいのですが、
それが無限に繰り返されると困ってしまいます。

ある一定の回数(例えば3回)再起動に失敗した場合、FOが行われれば望ましいと思っております。

以上、宜しくお願いいたします。


2009年10月15日16:22  <renay****@ybb*****>:
> 稲垣さん
>
> こんにちは。メイトリックスの山内です。
>
> とりあえず、修正で動くようになられたようで何よりです。
>
>> ローカルリカバリが実行されないようにするにはどうしたらいいでしょうか?
> すいません。
> 上記の意味がよくわからないのですが、monitorに失敗した時などのrestartという意味でしょうか?
>
> 以上、よろしくお願いいたします。
>
> --- 稲垣 <tadas****@gmail*****> wrote:
>
>> メイトリックス 山内様
>>
>> お世話になります。稲垣です。
>>
>> そういった意味ですとご提示いただいたスクリプトと同じ箇所を修正しました。
>> 私の環境以下になります。
>>
>> mysql-server-5.1.39-1.el5.remi
>> mysql-libs-5.1.39-1.el5.remi
>> mysqlclient15-5.0.67-1.el5.remi
>> mysql-5.1.39-1.el5.remi
>>
>> killした時点で/var/run/mysqld/mysqld.pidファイルにpidが記述されたままプロセスが落ちるので、
>> killした後に/var/run/mysqld/mysqld.pidファイルを削除したら、以下は起こらなくなりました。
>>
>> Failed actions:
>>    mysqld_4_monitor_120000 (node=hoge01.example.com, call=13, rc=7): complete
>>    mysqld_4_stop_0 (node=hoge01.example.com, call=14, rc=1): complete
>>
>>
>> 起動スクリプトも起動時に/var/run/mysqld/mysqld.pidファイルの有無を確認し、あれば削除するよう
>> 以下を追記しました。起動スクリプトも添付いたします。
>>
>> 【追記内容】
>> if [ -f $mypidfile ]; then
>>    rm -f $mypidfile
>> fi
>>
>> また、/var/log/ha-debugにも
>> crmd[5673]: 2009/10/16_23:57:05 info: process_lrm_event: LRM operation
>> mysqld_4_stop_0 (call=11, rc=0) complete
>>
>> が出力されました。
>>
>> ローカルリカバリが実行されないようにするにはどうしたらいいでしょうか?
>>
>> 以上、宜しくお願いいたします。
>>
>>
>>
>> 2009年10月15日15:55  <renay****@ybb*****>:
>> > 稲垣さん
>> >
>> > こんにちは。メイトリックスの山内です。
>> >
>> > 全く同じ環境ではありませんが、Redhat5.3(x86)の2台のノードで修正したmysqldで試してみました。
>> > 利用したmysqldは、
>> >
>> > mysql-devel-5.0.45-7.el5
>> > mysql-server-5.0.45-7.el5
>> > mysql-5.0.45-7.el5
>> >
>> > で、Redhat付属のままです。
>> >
>> >
>> > 私の使ったmysqldでは、以下のような修正をすると正しくmysqldのkill後にFOされました。
>> >
>> > ★FO後の様子
>> > ============
>> > Last updated: Thu Oct 15 15:52:40 2009
>> > Current DC: rh53-2 (02897011-0037-46b0-9457-92bb84d0ec79)
>> > 2 Nodes configured.
>> > 1 Resources configured.
>> > ============
>> >
>> > Node: rh53-2 (02897011-0037-46b0-9457-92bb84d0ec79): online
>> > Node: rh53-1 (64e30652-8f9c-4b0a-9abd-4da9272c623f): online
>> >
>> > Resource Group: grpDummy
>> >    mysqld_4    (lsb:mysqld):   Started rh53-2
>> >
>> > Failed actions:
>> >    mysqld_4_monitor_20000 (node=rh53-1, call=4, rc=7): complete
>> >
>> >
>> > ★スクリプトの修正
>> > stop(){
>> >        MYSQLPID=`cat "$mypidfile"  2>/dev/null `
>> >        echo "pid : $MYSQLPID" >> /tmp/test.log
>> >        if [ -n "$MYSQLPID" ]; then
>> >            /bin/kill "$MYSQLPID" >/dev/null 2>&1
>> >            ret=$?
>> >            if [ $ret -eq 0 ]; then
>> >                STOPTIMEOUT=60
>> >                while [ $STOPTIMEOUT -gt 0 ]; do
>> >                    /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
>> >                    sleep 1
>> >                    let STOPTIMEOUT=${STOPTIMEOUT}-1
>> >                done
>> >                if [ $STOPTIMEOUT -eq 0 ]; then
>> >                    echo "Timeout error occurred trying to stop MySQL Daemon."
>> >                    ret=1
>> >                    echo "Timeout error occurred trying to stop MySQL Daemon." >> /tmp/test.log
>> >                    action $"Stopping $prog: " /bin/false
>> >                else
>> >                    rm -f /var/lock/subsys/mysqld
>> >                    rm -f "$socketfile"
>> >                    action $"Stopping $prog: " /bin/true
>> >                fi
>> >            else
>> >                echo "kill ret=$ret" >> /tmp/test.log
>> >                action $"Stopping $prog: " /bin/false
>> >                ret=0 ★ここ
>> >            fi
>> > (省略)
>> >
>> > }
>> >
>> > また、ログには以下のような出力がされるはずです。(killしたノード側)
>> >
>> > crmd[6127]: 2009/10/15_15:46:28 info: process_lrm_event: LRM operation mysqld_4_monitor_20000
>> (call=4,
>> > rc=7) complete
>> > lrmd[6124]: 2009/10/15_15:46:28 info: operation monitor[4] on lsb::mysqld::mysqld_4 for client
>> 6127,
>> > its parameters: CRM_meta_interval=[20000] CRM_meta_id=[mysqld_4_mon] CRM_meta_timeout=[60000]
>> > crm_feature_set=[2.0] CRM_meta_name=[monitor] : pid [6401] exited with return code 7 (mapped
>> from 2)
>> > lrmd[6124]: 2009/10/15_15:46:28 info: Resource Agent output: []
>> > crmd[6127]: 2009/10/15_15:46:29 info: do_lrm_rsc_op: Performing op=mysqld_4_stop_0
>> > key=2:4:0:02f461b5-b87c-4329-9b0d-0086d2ecb37c)
>> > lrmd[6124]: 2009/10/15_15:46:29 info: rsc:mysqld_4: stop
>> > crmd[6127]: 2009/10/15_15:46:29 info: process_lrm_event: LRM operation mysqld_4_monitor_20000
>> (call=4,
>> > rc=-2) Cancelled
>> > lrmd[6439]: 2009/10/15_15:46:29 WARN: For LSB init script, no additional parameters are
>> needed.
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout) MySQL を停止中:
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout) [
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout) 失敗
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout) ]
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout)
>> > lrmd[6124]: 2009/10/15_15:46:29 info: RA output: (mysqld_4:stop:stdout)
>> >
>> > lrmd[6124]: 2009/10/15_15:46:29 info: Managed mysqld_4:stop process 6439 exited with return
>> code 0.
>> > crmd[6127]: 2009/10/15_15:46:29 info: process_lrm_event: LRM operation mysqld_4_stop_0
>> (call=5, rc=0)
>> > complete
>> >
>> >
>> お使いになっているmysqlの違いによってスクリプトの差異があるかも知れませんが、私の使ったmysqlではrc=0
>> > を返すことでFOは可能となります。
>> >
>> > 今一度、スクリプトの修正など確認された方がよいかと思います。
>> >
>> >
>> > 以上、よろしくお願いいたします。
>> >
>> > --- renay****@ybb***** wrote:
>> >
>> >> 稲垣さん
>> >>
>> >> こんにちは。メイトリックスの山内です。
>> >>
>> >> >mysqld_4_stop_0 (node=hoge01.example.com, call=14, rc=1): complete
>> >> を見ると、stopで1が返ってきているように思えます。
>> >>
>> >> rcを制御するocfをlsbの違いがあるのかも知れません。
>> >>
>> >> もしかすると、私が間違っているかも知れませんね。
>> >> 環境がすぐに用意出来ないので、mysqlでは出来ませんが、その他のlsbで試してみますね。
>> >>
>> >> 以上、よろしくお願いいたします
>> >>
>> >> --- 稲垣 <tadas****@gmail*****> wrote:
>> >>
>> >> > メイトリックス 山内様
>> >> >
>> >> > お世話になります。稲垣です。
>> >> >
>> >> > ご指摘の通り、mysqldサービス停止中にmysqlスクリプトを実施した場合に、
>> >> > ステータスコード0を返すよう修正致しました。
>> >> >
>> >> > しかし結果は変わらずフェイルオーバは発生しませんでした。
>> >> > kill実行時は以前と同様の結果となりました。
>> >> >
>> mysqldスクリプト実行時はフェイルオーバは実行されず、リソースの再起動が処理がおこなわれました。
>> >> >
>> >> > # crm_mon -1
>> >> >
>> >> >
>> >> > ============
>> >> > Last updated: Fri Oct 16 23:01:27 2009
>> >> > Current DC: hoge02.example.com (91e0db86-1aaf-47a9-a80f-bc198c4c8969)
>> >> > 2 Nodes configured.
>> >> > 1 Resources configured.
>> >> > ============
>> >> >
>> >> > Node: hoge02.example.com (91e0db86-1aaf-47a9-a80f-bc198c4c8969): online
>> >> > Node: hoge01.example.com (dbdb4396-8c57-4f70-878f-a6984ec7d554): online
>> >> >
>> >> > Resource Group: test-db
>> >> >     IPaddr2_1   (ocf::heartbeat:IPaddr2):       Started hoge01.example.com
>> >> >     drbddisk_2  (heartbeat:drbddisk):   Started hoge01.example.com
>> >> >     Filesystem_3        (ocf::heartbeat:Filesystem):    Started
>> >> > hoge01.example.com
>> >> >     mysqld_4    (lsb:mysqld):   Started hoge01.example.com (unmanaged) FAILED
>> >> >
>> >> > Failed actions:
>> >> >     mysqld_4_monitor_120000 (node=hoge01.example.com, call=13, rc=7): complete
>>
> === 以下のメッセージは省略されました ===> _______________________________________________
>> Linux-ha-japan mailing list
>> Linux****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
>>
>
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
>





Linux-ha-japan メーリングリストの案内
Back to archive index