renay****@ybb*****
renay****@ybb*****
2011年 10月 13日 (木) 07:09:00 JST
高橋さん こんにちは、山内です。 Heartbeat2.1.4の場合、現在主流になりつつあるPacemakerとは若干動作が異なります。 確か、Heartbeat2.1.4ではリソース故障は回数制御出来ないので、リソースのスコアと故障のスコアの比較で移動が制御されることになります。 stop,migrate以外のoperationのon-failは、デフォルトはrestartになるはずです。 stopで、stonithが有効の場合は、on-failが未設定の場合には、fenceになります。 stopで、stonithが無効の場合は、on-failが未設定の場合には、blockになります。 #あまり使われない、migrate割愛しますね。 高橋さんの設定で、monitorで故意に故障を起こしても、未設定でもrestartが選択されるので変わりはないはずです。 また、2.1.4では故障回数が制御されないので、スコアを計算した結果、フェイルオーバーの動きになったのだと思います。 on_failにrestartを設定した場合は、そのoperationにエラーが起きた場合には、そのリソースのstop->startが実行されます。(ただし、くどいようですが、2.1.4でスコア計算で そのノードで再起動が可能と計算された場合) on_blockの場合は、そのoperationにエラーが起きた場合には、その時点で何もせずに、止まります。 #この状況では、運用管理者の介入待ちのような状況になりますね。 もしかすると、2.1.4なので勘違いして回答しているかも知れません。 他の方のコメントが頂けるとと助かりますが。。。。 以上、宜しくお願いいたします。 --- On Wed, 2011/10/12, takahasi hideo <hideo_tk960****@hotma*****> wrote: > > お世話になっております。 > 高橋です。 > cib.xmlのon_failの設定についてご質問させください。 > 現在 heartbeat 2.1.4 + drbd + postgres 8.2.3にて、 > システム構築しております。 > > cib.xmlの設定にて現在以下の2通りの設定で悩んでおります。 > 設定1 > --ここから--- > <primitive class="ocf" provider="heartbeat" type="pgsql" id="pgsql0"> > <instance_attributes id="ia-pgsql0"> > <attributes> > <nvpair id="ia-pgsql0-1" name="pgctl" value="/usr/local/pgsql/bin/pg_ctl"/> > <nvpair id="ia-pgsql0-2" name="psql" value="/usr/local/pgsql/bin/psql"/> > <nvpair id="ia-pgsql0-3" name="pgdata" value="/data/pgsql/data/"/> > <nvpair id="ia-pgsql0-4" name="pgdba" value="postgres"/> > <nvpair id="ia-pgsql0-5" name="pgdb" value="check"/> > <nvpair id="ia-pgsql0-6" name="logfile" value="/var/log/postgresql/postgresql_log"/> > </attributes> > </instance_attributes> > <operations> > <op id="pgsql0_mon" interval="30s" name="monitor" timeout="60s" on_fail="restart"/> > <op id="pgsql0_start" name="start" timeout="60s" on_fail= "restart"/> > <op id="pgsql0_stop" name="stop" timeout="60s" on_fail="block"/> > </operations> > </primitive> > --ここまで-- > > 設定2 > --ここから--- > <primitive class="ocf" provider="heartbeat" type="pgsql" id="pgsql0"> > <instance_attributes id="ia-pgsql0"> > <attributes> > <nvpair id="ia-pgsql0-1" name="pgctl" value="/usr/local/pgsql/bin/pg_ctl"/> > <nvpair id="ia-pgsql0-2" name="psql" value="/usr/local/pgsql/bin/psql"/> > <nvpair id="ia-pgsql0-3" name="pgdata" value="/data/pgsql/data/"/> > <nvpair id="ia-pgsql0-4" name="pgdba" value="postgres"/> > <nvpair id="ia-pgsql0-5" name="pgdb" value="check"/> > <nvpair id="ia-pgsql0-6" name="logfile" value="/var/log/postgresql/postgresql_log"/> > </attributes> > </instance_attributes> > <operations> > <op id="pgsql0_mon" interval="30s" name="monitor" timeout="60s"> > <op id="pgsql0_start" name="start" timeout="60s" > > <op id="pgsql0_stop" name="stop" timeout="60s" > > </operations> > </primitive> > --ここまで-- > 設定1では <operations>の箇所に > on_failを設定し、restartを設定しております。 > 設定2ではon_failを指定を行っていません。 > 設定1と設定2は両方ともフェイルオーバーされますが、 > on_failにrestartを設定した場合しない場合にはどうような動作の違いがあるのでしょうか? > > 動作検証のためpgsql0_monの箇所でタイムアウトを故意に発生されたのですが、 > どちらもフェイルオーバーされました。 > on_failにrestartを設定した場合はrestartが設定されている処理が再度実行されるのでしょうか? > またon_failにblockを指定した場合はどのようになるのでしょうか? > > > 以上 よろしくお願いします > > > > > >