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

アーカイブの一覧に戻る

中村 圭太 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
> 
> 





Linux-ha-japan メーリングリストの案内
アーカイブの一覧に戻る