Takehiro Matsushima
takeh****@gmail*****
2014年 3月 3日 (月) 17:26:19 JST
二見さん 松島です、お世話になっております。 ご返答ありがとうございます。 >>redis-serverの本体の実行ビットを外してkillされたとのことですが、実行ビットを付けたままkillしたらどうなりますでしょうか。 > > 上記ですが、(マスタで)kill -9 でしばらくするとマスタ上で再度redisのプロセスが上がってきました。 承知致しました。 設定を拝見させていただき、その内容から、おそらくmigration-thresholdの設定がないためだと思われます。 migration-thresholdは、Pacemakerがリソース故障と見なすfail回数です。 例えば migration-threshold=3 としておくと、kill -9で殺しても3回目まではop monitor on-failで指定した動作(既定はrestart)を 試みてくれます。 実際にfailした回数はcrm_monの-fオプションで確認できます。 上の例ではkill -9するたびにcrm_monの下の方のfailcount=1...2...と増えていき、3になると違うノードにフェイルオーバーします。 具体的な設定方法ですが、リソースを作るときに pcs resource create redis ocf:heartbeat:redis meta migration-threshold=3 などとする方法と、作った後からでしたら pcs resource meta redis migration-threshold=3 とします。リソース個別に指定しなかった場合のデフォルトとして設定する場合は pcs resource defaults migration-threshold=3 という感じになります。 具体的に設定する数値ですが 「一回でも落ちたらそのノードは既に正常とは言えないのだからフェイルオーバーすべき。だから1を設定する」 「二、三回リトライをして、それでもダメだった時のみにフェイルオーバーすべき。動けるなら動かすべきだ」 というようにいろいろと考え方がありますので、ポリシーを持って設定するのが良いと思います。 申し訳ございません。 先のメールをポストしてから気がついたのですが、pcs config showにはresource defaultsの設定が出てこないようです。 これの確認は pcs resource defaults で行えます。 余談ですが、一旦故障したノードを復旧させたときに、復旧したノードへリソースが移動(フェイルバック)しないようにするには、同じくmetaの resource-stickiness=INFINITYを指定します。 これはリソースを起動する権利の横取りをどの程度禁止するかを設定するパラメータで、INFINITYは絶対禁止を意味します。 「条件が整うなら移動させてもよい」リソースの場合には1や10といった小さめの数字を指定することもあるようです。 私は、 pcs resource defaults migration-threshold=1 resource-stickiness=INFINITY を設定して、必要に応じて個々のリソースを設定するようにしています。 参考になれば幸いです。