[Linux-ha-jp] 両ノードのDRBDがslaveのまま、primaryに昇格しません

Back to archive index

Junko IKEDA tsuki****@gmail*****
2011年 12月 7日 (水) 19:22:21 JST


中村様

ご連絡ありがとうございます。

> 上記の処理では、RA自身が「namenode」というシェルであるため、
> 自分自身がprepでヒットしていました。

あ、なるほどです。
気づきませんでした。

monitor_0は動作がわかりにくいうえに
ログメッセージもかなり不親切なので
自作RAの場合は、陥りやすい罠ですね…。

Hadoop本は勉強不足のため読んでいないのですが
たしかACT/SBYのDRBD構成を例として解説してあるのですよね?
Master/Slave構成でも同様の構成がとれるという情報を
いただけただけでもありがたいです。
またなにかあればご連絡ください。

以上よろしくお願いいたします。

池田淳子

2011年12月7日17:50 中村 圭太 <nakam****@jp*****>:
> 池田様
>
> お世話になっております。中村です。
>
> ご助言ありがとうございました。
> また、返信が遅くなり申し訳有りません。
> 結論として、問題が解決しました。
>
>> hdpmaster38でクラスタを起動(service heartbeat start)する前に
>> namenode_hadoopとjobtracker_hadoopがすでに起動している
>> 可能性はありませんか。
>
> namenode_hadoopとjobtracker_hadoopは起動していないのですが、
> RA内のmonitorにおいて、プロセス確認の処理に誤りがありました。
>
> monitor_namenode()
> {
>        process=`/usr/bin/pgrep -f namenode`
>        if [ -z "$process" ]; then
>>
> 上記の処理では、RA自身が「namenode」というシェルであるため、
> 自分自身がprepでヒットしていました。
> 結果、Hadoopのnamenodeが起動していなくても、
> 起動しているとmonitorが判断していました。
> (稚拙な問題について質問してしまい、すみませんでした。)
>
> 対処は以下のようにpsをjavaのクラス名をフルパスでgrepするようにしました。
>
> process=`ps -ef | grep org.apache.hadoop.mapred.JobTracker | grep -v grep`
>
> ご丁寧に返信していただき、誠にありがとうございました。
> 今後とも、どうぞよろしくお願いいたします。
>
> 以上です。
>
> (2011/12/02 11:31), Junko IKEDA wrote:
>> 中村様
>>
>> hdpmaster38でクラスタを起動(service heartbeat start)する前に
>> namenode_hadoopとjobtracker_hadoopがすでに起動している
>> 可能性はありませんか。
>>
>> namenode RAとjobtracker RAはstart処理の最初に
>> monitor処理(monitor_jobtracker)を呼び出しています。
>> これは、すでにリソースが実行済みの場合は
>> start処理を省略するためです。
>>
>> ha-log_ノード2.txtの160行目付近を確認すると
>> namenode_hadoopとjobtracker_hadoopの
>> monitor_0(start実行時に呼び出されるmonitor処理)が
>> rc=0(OCF_SUCCESS)となっているため、すでにリソースが起動している
>> 可能性があります。
>> 起動していない場合は、後続のip_hadoopやfs_hadoopのように
>> rc=7(OCF_NOT_RUNNING)が返ります。
>>
>> Dec 01 18:42:29 hdpmaster38 crmd: [30290]: info: process_lrm_event:
>> LRM operation namenode_hadoop_monitor_0 (call=4, rc=0, cib-update=8,
>> confirmed=true) ok
>> Dec 01 18:42:29 hdpmaster38 crmd: [30290]: info: process_lrm_event:
>> LRM operation jobtracker_hadoop_monitor_0 (call=5, rc=0, cib-update=9,
>> confirmed=true) ok
>> Dec 01 18:42:29 hdpmaster38 crmd: [30290]: info: process_lrm_event:
>> LRM operation ip_hadoop_monitor_0 (call=3, rc=7, cib-update=10,
>> confirmed=true) not running
>> Dec 01 18:42:29 hdpmaster38 crmd: [30290]: info: process_lrm_event:
>> LRM operation fs_hadoop_monitor_0 (call=2, rc=7, cib-update=11,
>> confirmed=true) not running
>>
>> 一度、両ノードのクラスタを停止したあと
>> namenode_hadoopとjobtracker_hadoopの状態を確認してください。
>> また、OS起動時にプロセスが自動起動するような
>> 設定になっていないか、なども確認してください。
>>
>> なお、crmの設定ですが、rsc_defaultsに
>> resource-stickinessとmigration-thresholdを
>> 設定することをお勧めします。
>>
>> 参考 http://linux-ha.sourceforge.jp/wp/archives/1657/3
>>
>> resource-stickiness="INFINITY"は自動フェイルバックをオフにする設定です。
>>
>> 設定例
>> property \
>>          no-quorum-policy="ignore" \
>>          stonith-enabled="false" \
>>          startup-fencing="false" \
>>          crmd-transition-delay="2s"
>>
>> rsc_defaults \
>>          resource-stickiness="INFINITY" \
>>          migration-threshold="1"
>>
>>
>> 以上よろしくお願いいたします。
>>
>> 池田淳子
>>
>>
>> 2011年12月1日21:56 中村 圭太<nakam****@jp*****>:
>>> 池田様
>>>
>>> お世話になっております。中村です。
>>> 多くのご助言をいただき、ありがとうございました。
>>>
>>>>> locationの設定ですが、groupではなくMaster/Slaveの
>>>>> スコア値を設定してみてください。
>>>>>
>>>>> location l_hadoop ms_drbd \
>>>>>          rule role=master  200: #uname eq hdpmaster30 \
>>>>>          rule role=master  100: #uname eq hdpmaster38
>>>
>>> 上記の設定により、解消できました。
>>> groupはmaster側で起動せるため、
>>> msありきとなり、
>>> locationはmsを設定するべきなのですね。
>>> 勉強になります。
>>>
>>> 続けて大変恐縮ですが、
>>> 以下に新しい質問をさせてください。
>>>
>>> <問題>
>>> 当方は、HAクラスタ上にHadoopを構築したいと考えております。
>>> rg_hadoopに「namenode_hadoop」および「jobtracker_hadoop」という
>>> リソースを追加したのですが、
>>> 縮退状態(片系のみheartbeatが起動)から、
>>> 相手ノードのheartbeatを起動させると、
>>> 上記の2リソースが再起動してしまいます。
>>>
>>> namenode_hadoopおよびjobtracker_hadooの挙動は以下の流れです。
>>>
>>> 縮退状態(ノード1のheartbeatのみ起動)からノード2のheartbeatを起動
>>> →ノード1でしか上記の2リソースが起動していないと思われるが、
>>>   両ノードで起動していると認識される(ログ1:166、169行目)
>>> →リソースを停止(ログ1:222、246行目)(ログ2:179、190行目)
>>> →ノード1でリソースを起動(ログ1:260、273行目)
>>>
>>> ログ1:ノード1のログ(元からheartbeatが起動していた)
>>> ログ2:ノード2のログ(後からheartbeatを起動した)
>>>
>>> なお、他のリソースは元のノードで起動したまま正常です。
>>>
>>> 縮退状態から停止していたノードをクラスタに復帰させても、
>>> 2リソースを元のノードで正常に起動したままとするには、
>>> 設定やRAに問題点がありますでしょうか。
>>>
>>> <備考>
>>> ・上記の2リソースが起動するノードは、
>>>  FilesystemやIPaddr2のリソースが起動している
>>>  ノードである必要があります。
>>>
>>> ・「Hadoop徹底入門」という書籍を参考にしており、
>>>  RAは書籍のサンプルを使用しています。
>>>
>>> ・ノード1とノード2の起動順を逆にしても同様の結果です。
>>>
>>> <添付>
>>> ・HA-log(ノード1&ノード2)
>>> ・namenodeのRA
>>> ・jobtrackerのRA
>>> ・設定ファイル類
>>>
>>> 大変お手数を頂きまして申し訳ありませんが、
>>> ご教授いただけますよう、よろしくお願いいたします。
>>>
>>> 以上です。
>>>
>>>
>>> (2011/12/01 11:02), Junko IKEDA wrote:
>>>> すみません。
>>>> 一部コピペミスです。
>>>>
>>>> 3行目のmonitor設定は削除忘れです。
>>>>
>>>>> primitive drbd_hadoop ocf:linbit:drbd \
>>>>>          params drbd_resource="r_hadoop" \
>>>>>          op monitor interval="10s" \ ★ この行は必要なし
>>>>>          op start interval="0s" timeout="240s" on-fail="restart" \
>>>>>          op monitor interval="10s" timeout="20s" on-fail="restart"
>>>>> role="Master" \
>>>>>          op monitor interval="20s" timeout="20s" on-fail="restart" role="Slave" \
>>>>>          op promote interval="0s" timeout="90s" on-fail="restart" \
>>>>>          op demote interval="0s" timeout="90s" on-fail="block" \
>>>>>          op stop interval="0s" timeout="100s" on-fail="block"
>>>>
>>>> 池田淳子
>>>>
>>>> 2011年12月1日10:56 Junko IKEDA<tsuki****@gmail*****>:
>>>>> 中村様
>>>>>
>>>>> NTTデータ先端技術の池田と申します。
>>>>>
>>>>>> 設定ファイルの類を添付させていただきます。
>>>>>> なお、DRBDのリソースエージェントは、drbd-8.4.0同梱のものを使用しています。
>>>>>
>>>>> crmの設定ではdrbd RAのproviderがheartbeatとなっていますが
>>>>> これは、DRBD 8.4.0のRAを
>>>>> /usr/lib/ocf/resource.d/heartbeat/
>>>>> にコピーされたということでしょうか。
>>>>> DRBDのRAはデフォルトでは
>>>>> /usr/lib/ocf/resource.d/linbit/
>>>>> にインストールされます。
>>>>>
>>>>> よって、drbd RAの設定では通常、providerにlinbitを指定します。
>>>>> /usr/lib/ocf/resource.d/heartbeat/
>>>>> にもdrbd RAは存在しますが、これはresource-agentsに含まれる古いRAです。
>>>>>
>>>>> また、Master/Slaveリソースのmonitor設定ですが
>>>>> MasterリソースとSlaveリソースのinterval値をそれぞれ
>>>>> 別の値として設定してください。
>>>>>
>>>>> drbd RAの設定例
>>>>>
>>>>> primitive drbd_hadoop ocf:linbit:drbd \
>>>>>          params drbd_resource="r_hadoop" \
>>>>>          op monitor interval="10s" \
>>>>>          op start interval="0s" timeout="240s" on-fail="restart" \
>>>>>          op monitor interval="10s" timeout="20s" on-fail="restart"
>>>>> role="Master" \
>>>>>          op monitor interval="20s" timeout="20s" on-fail="restart" role="Slave" \
>>>>>          op promote interval="0s" timeout="90s" on-fail="restart" \
>>>>>          op demote interval="0s" timeout="90s" on-fail="block" \
>>>>>          op stop interval="0s" timeout="100s" on-fail="block"
>>>>>
>>>>> locationの設定ですが、groupではなくMaster/Slaveの
>>>>> スコア値を設定してみてください。
>>>>>
>>>>> location l_hadoop ms_drbd \
>>>>>          rule role=master  200: #uname eq hdpmaster30 \
>>>>>          rule role=master  100: #uname eq hdpmaster38
>>>>>
>>>>> また、Pacemaker 1.0.11では、Master/Slaveの動作でバグが確認されています。
>>>>> 参考 http://linux-ha.sourceforge.jp/wp/archives/2468/2
>>>>>
>>>>> 上記のバグを回避するために、Master/Slaveだけではなく
>>>>> groupに含まれる各リソースにもlocationを設定してください。
>>>>>
>>>>> location l_hadoop ms_drbd \
>>>>>          rule role=master  200: #uname eq hdpmaster30 \
>>>>>          rule role=master  100: #uname eq hdpmaster38 \
>>>>>          rule role=master  -inf: defined fail-count-fs_hadoop \
>>>>>          rule role=master  -inf: defined fail-count-ip_hadoop
>>>>>
>>>>> なお、上記のバグはPacemaker 1.0.12では修正されています。
>>>>>
>>>>> 以上よろしくお願いいたします。
>>>>>
>>>>> 池田淳子
>>>>>
>>>>> 2011年11月30日21:11 中村 圭太<nakam****@jp*****>:
>>>>>> 中村と申します。
>>>>>> はじめて投稿させていただきます。
>>>>>> heartbeatおよびDRBDに関して、以下の問題で困っています。
>>>>>>
>>>>>> <問題>
>>>>>> Heartbeatを両ノードでほぼ同時に起動させると、DRBDが起動はするのですが、
>>>>>> 両ノード共にslaveの状態が続き、primaryに昇格しません。
>>>>>> ただし、片方のノードがHeartbeatにおけるONLINEの状態までなった後に、
>>>>>> 一方のノードを立ち上げると、DRBDが両方ともslaveになった後、
>>>>>> cib.xmlのlocationで指定したノードがprimaryに昇格します。
>>>>>>
>>>>>> <疑問点>
>>>>>> ・Heartbeatを起動させるノードについては、
>>>>>>    起動順番を意識する必要があるのでしょうか?
>>>>>> ・当方の設定に、上記問題の元となる箇所はありますでしょうか?
>>>>>>
>>>>>> <環境>
>>>>>> ・pacemaker-1.0.11
>>>>>> ・heartbeat-3.0.5
>>>>>> ・drbd-8.4.0
>>>>>>
>>>>>> 設定ファイルの類を添付させていただきます。
>>>>>> なお、DRBDのリソースエージェントは、drbd-8.4.0同梱のものを使用しています。
>>>>>>
>>>>>> ------- crm configure show -------
>>>>>> node $id="24606b2c-5a9d-4a86-9e83-a84ee941739d" hdpmaster38
>>>>>> node $id="57e51646-569b-4501-8073-61f06ec146bf" hdpmaster30
>>>>>> primitive drbd_hadoop ocf:heartbeat:drbd \
>>>>>> params drbd_resource="r_hadoop" \
>>>>>> op monitor interval="10s"
>>>>>> primitive fs_hadoop ocf:heartbeat:Filesystem \
>>>>>> params device="/dev/drbd0" directory="/hadoop/dfs/name" fstype="ext3"
>>>>>> options="noatime"
>>>>>> primitive ip_hadoop ocf:heartbeat:IPaddr2 \
>>>>>> params ip="10.171.208.87" nic="eth1" cidr_netmask="24" \
>>>>>> op monitor interval="10s"
>>>>>> group rg_hadoop fs_hadoop ip_hadoop
>>>>>> ms ms_drbd drbd_hadoop \
>>>>>> meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1"
>>>>>> notify="true"
>>>>>> location l_hadoop rg_hadoop 100: hdpmaster30
>>>>>> colocation c_hadoop inf: rg_hadoop ms_drbd:Master
>>>>>> order o_hadoop inf: ms_drbd:promote rg_hadoop:start
>>>>>> property $id="cib-bootstrap-options" \
>>>>>> dc-version="1.0.11-1554a83db0d3c3e546cfd3aaff6af1184f79ee87" \
>>>>>> cluster-infrastructure="Heartbeat" \
>>>>>> stonith-enabled="false" \
>>>>>> no-quorum-policy="ignore" \
>>>>>> default-resource-stickiness="200"
>>>>>>
>>>>>> 大変お手数ですが、どなたかご教授くださいますよう、お願いいたします。
>>>>>>
>>>>>> 以上です。
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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 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 mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan





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