中村 圭太
nakam****@jp*****
2011年 12月 7日 (水) 17:50:09 JST
池田様 お世話になっております。中村です。 ご助言ありがとうございました。 また、返信が遅くなり申し訳有りません。 結論として、問題が解決しました。 > 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 > >