[Linux-ha-jp] OSハングアップ時の挙動

Zurück zum Archiv-Index

Keisuke Nakamura k.xna****@gmail*****
2016年 1月 27日 (水) 11:15:58 JST


ひがし様、関係者各位

お世話になっております。nakaと申します。
返信が遅くなってしまい申し訳ありません。
ご連絡頂き有難うございます。

> 待機系(hoge02v)で起動したという2つのMySQLはそれぞれ誰が起動したものか
> 心当たりはないでしょうか?
> (元々、待機系(hoge02v)で手動でMySQLを起動させてはいませんでしたか?
> もしくはOSのMySQLサービスの自動起動が有効になっていませんか?)

特に待機系側で手動でMySQLを起動させていたわけでもなく、
OSでMySQLサービスの自動起動を有効にしていたわけでもありませんでした。
MySQLサービススクリプトは独自のものを使っており、LSBに準拠した形(7つの
返り値のルール)で作っておりました。

2つのMySQLはそれぞれ誰が起動してるのか、ログを調べました。
どうやらサービスリソースのstartとmonitorの起動がほぼ同時に行われてるのが原因かなと
推測しています。MySQLサービスが完全に起動する前にmonitorがstatusをチェックして
「MySQLは起動していないから、restartしよう」と動作し、二重起動になってしまった
かなと考えています。

# grep "rsc:" /var/log/heartbeat_info.log-20160124
(一部抜粋)
6 local3.info<158> 2016-01-20T10:57:27.110393+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v start[18] (pid 8866) ★
6 local3.info<158> 2016-01-20T10:57:27.192217+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v monitor[19] (pid 8938) ★
6 local3.info<158> 2016-01-20T10:57:27.617212+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v stop[20] (pid 9573)
6 local3.info<158> 2016-01-20T10:57:27.667986+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v start[21] (pid 9637)
6 local3.info<158> 2016-01-20T10:57:29.721799+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v monitor[22] (pid 10364)
6 local3.info<158> 2016-01-20T10:59:10.098877+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v stop[23] (pid 13968)
6 local3.info<158> 2016-01-20T10:59:10.152291+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v start[24] (pid 14000)
6 local3.info<158> 2016-01-20T11:00:40.268121+09:00 hoge02v lrmd:
[2729]: info: rsc:service_sfdb01v stop[25] (pid 18137)

試しに、開始時間を遅らせるオプションをサービスリソースに設定してみました。
primitive service_sfdb01v lsb:pkg_sfdb01v \
        op monitor interval="300s" enabled="true" timeout="20s"
start-delay="10s" \
として「start-delay="10s"」を追記してみたところ、OSハングさせると想定通りに
待機系へF/Oしてくれました。startの10秒後にmonitorが起動する旨のログが出ていました。


疑問なのは、
shutdownコマンドを実施した時、/etc/init.d/heartbeat stopさせた時等のケースでは、
上記のstart-delayオプションをつけなくても必ず正常に待機系へF/Oしてくれます。
ログを見ると、サービスがstartしてから数秒後~数十秒後にminitorが起動しているので、
サービスがstartしたことをどこかでちゃんと認識してるようです。
OSハングアップの時では、start・monitorの開始が必ずほぼ同じタイミングで行われます。
OSハングアップ時だと挙動が異なるものなのでしょうか。。?
同じ境遇でstart-delayオプションを設定した方はいらっしゃいませんでしょうか。

お手数おかけ致しますが、もし情報等お持ちでしたら共有頂けると幸いです。
以上、宜しくお願い致します。


2016年1月14日 14:09 <kazuh****@goo*****>:
>
> naka様
>
> ひがしと申します。
> お世話になります。
>
> >実際に稼働系を
> ># echo c > /proc/sysrq-trigger
> >でハングアップさせたところ、待機系(hoge02v)でなぜかMySQLインスタンスが二重起動
> >しておかしな
> >状態になりました。その後元々の稼働系(hoge01v)のOSが起動してきた後、hoge01vにク
> >ラスタリソースがF/Bされました。
>
> 待機系(hoge02v)で起動したという2つのMySQLはそれぞれ誰が起動したものか
> 心当たりはないでしょうか?
> (元々、待機系(hoge02v)で手動でMySQLを起動させてはいませんでしたか?
> もしくはOSのMySQLサービスの自動起動が有効になっていませんか?)
>
> Pacemaker以外がMySQLを起動することの無いよう、運用を行ってください。
>
>
> > primitive service_sfdb01v lsb:pkg_sfdb01v \
> とのことなので、Pacemakerに付属(resource-agentsパッケージに同梱のmysql RAでは
> なく、独自のスクリプトでMySQLを制御しているとお見受けしました。
>
> Pacemakerのリソース制御スクリプトとして使用するためには、スクリプトは
> 以下の仕様(LSB)を満たす必要があります。
>
> http://clusterlabs.org/doc/en-US/Pacemaker/1.1-pcs/html/Pacemaker_Explained/ap-lsb.html
>
> 特に、既に起動時にstartされた場合や、既に停止時にstopされた場合の挙動と引数も
> 重要です。
>
> 今回のケースでは、この「既に起動時にstartされた場合」に、pkg_sfdb01vが、
> 「何もせず、0を返す。(already running等ログメッセージを表示してもよい。)」
> という動作になるか、確認してください。(上記URLの3のケース)
>
>
> 以上です。
> よろしくお願いいたします。
>
>
> ----- 元のメッセージ -----
> From: "Keisuke Nakamura" <k.xna****@gmail*****>
> 宛先: linux****@lists*****
> 送信済み: 2016年1月8日, 金曜日 午後 7:20:26
> 件名: [Linux-ha-jp] OSハングアップ時の挙動
>
>
>
>
>
> 関係者各位
> お世話になっております。nakaと申します。
> 小出しで申し訳ありません。
>
> 環境:
> CentOS 6.2(x86_64)
> pacemaker-1.0.12-1.el6.x86_64
> 稼働系:hoge01v
> 待機系:hoge02v
>
> 異常時の動作検証をしております。
> 2ノードクラスタ構成にて、稼働系をSYSRQにてハングアップさせた時に
> 待機系にF/Oしてそのまま待機系でサービスリソース(MySQL)が起動することを
> 期待しております。
>
> 実際に稼働系を
> # echo c > /proc/sysrq-trigger
> でハングアップさせたところ、待機系(hoge02v)でなぜかMySQLインスタンスが二重起動しておかしな
> 状態になりました。その後元々の稼働系(hoge01v)のOSが起動してきた後、hoge01vにクラスタリソースがF/Bされました。
>
> (crm_mon -Afr1)
> Migration summary:
> * Node hoge02v:
> service_sfdb01v: migration-threshold=1000000 fail-count=1000000
> * Node hoge01v:
>
> Failed actions:
> service_sfdb01v_monitor_300000 (node=hoge02v, call=24, rc=7, status=complete): not running
> service_sfdb01v_start_0 (node=hoge02v, call=27, rc=-2, status=Timed Out): unknown exec error
>
> 「service_sfdb01v」というのがMySQLサービスのリソースとなります。
>
>
>
> (設定内容)
> # crm configure save current.crm
>
> # cat current.crm
>
> node $id="1fc381d6-d6ad-a50f-9aab-cd8ace90fa70" hoge01v
> node $id="4a851515-443f-6140-b38f-dfb4bb46c010" hoge02v
> primitive ip_sfdb01v ocf:heartbeat:IPaddr2 \
> meta migration-threshold="5" \
> params ip="10.2.28.62" cidr_netmask="24" nic="eth0" iflabel="0" \
> op monitor interval="3s"
> primitive res_ping ocf:pacemaker:ping \
> params name="eth0_ping_set" host_list="10.2.28.1" multiplier="200" dampen="1" debug="true" attempts="10" \
> op monitor interval="10s" timeout="60" \
> op start interval="0" timeout="60"
> primitive service_naka01v lsb:pkg_naka01v \
> op start interval="0s" timeout="90s" \
> op monitor interval="300s" timeout="20s" \
> op stop interval="0s" timeout="100s" \
> meta is-managed="true"
> primitive service_sfdb01v lsb:pkg_sfdb01v \
> op start interval="0s" timeout="90s" \
> op monitor interval="300s" enabled="true" timeout="20s" \
> op stop interval="0s" timeout="100s" \
> meta is-managed="true"
> primitive vgsfdb01v ocf:heartbeat:LVM \
> params volgrpname="vgsfdb01v"
> primitive vgsfdb01v_LogVol00 ocf:heartbeat:Filesystem \
> meta migration-threshold="5" \
> params device="/dev/vgsfdb01v/LogVol00" fstype="ext4" directory="/mysf" \
> op monitor interval="20s"
> primitive vgsfdb01v_lv_quorum ocf:heartbeat:sfex \
> params index="1" device="/dev/vgsfdb01v/lv_quorum"
> group pkg_naka01v service_naka01v \
> meta is-managed="true" target-role="Started"
> group pkg_sfdb01v ip_sfdb01v vgsfdb01v vgsfdb01v_lv_quorum vgsfdb01v_LogVol00 service_sfdb01v \
> meta is-managed="true" target-role="Started"
> clone clone_ping res_ping \
> meta target-role="Started"
> location pkg_naka01v-location pkg_naka01v \
> rule $id="pkg_naka01v-location-0" 200: #uname eq hoge01v \
> rule $id="pkg_naka01v-location-1" 100: #uname eq hoge02v
> location pkg_naka01v-service-location pkg_naka01v \
> rule $id="pkg_naka01v-service-location-rule" -inf: defined eth0_ping_set and eth0_ping_set lt 200
> location pkg_sfdb01v-location pkg_sfdb01v \
> rule $id="pkg_sfdb01v-location-0" 200: #uname eq hoge01v \
> rule $id="pkg_sfdb01v-location-1" 100: #uname eq hoge02v
> location pkg_sfdb01v-service-location pkg_sfdb01v \
> rule $id="pkg_sfdb01v-service-location-rule" -inf: defined eth0_ping_set and eth0_ping_set lt 200
> property $id="cib-bootstrap-options" \
> dc-version="1.0.12-066152e" \
> cluster-infrastructure="Heartbeat" \
> stonith-enabled="false" \
> no-quorum-policy="ignore" \
> default-action-timeout="120s" \
> last-lrm-refresh="1450681148" \
> maintenance-mode="false"
> rsc_defaults $id="rsc-options" \
> resource-stickiness="INFINITY"
>
>
> 異常時にどのような仕組みでF/Oするか正確なところを理解しておらず、私も
> 調査段階ではありますが、被疑箇所とみられる部分等ご存知でしたら、アドバイスを
> 頂けると幸いです。Packemakerというより、こちらのMySQL起動停止のスクリプトだったり
> エラーハンドリングに問題があるのかも未調査です。
>
>
> 曖昧な状態でのメールとなり恐縮ですが、宜しくお願い致します。
>
> 以上、宜しくお願い致します。
>
> --
>
> Nakamura
>
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.osdn.me/mailman/listinfo/linux-ha-japan
>
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.osdn.me/mailman/listinfo/linux-ha-japan




-- 
Nakamura



Linux-ha-japan メーリングリストの案内
Zurück zum Archiv-Index