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