vm-leo が sagittarius で稼働している状態で、leo にログインしたセッションを作り、sagittairus/aquarius のいずれかで以下のコマンドを実行するとわかる。
$ sudo pcs cluster stop aquarius
$ sudo pcs cluster start aquarius
で、どのタイミングで vm-leo が再起動するのかを調べるために、以下のように設定した。
$ sudo pcs constraint location pool-default-clone prefers aquarius=-INFINITYつまり、aquarius では、vm-leo 以外のすべてのリソースの自動起動を停止した。
$ sudo pcs constraint location shared-pool-clone prefers aquarius=-INFINITY
$ sudo pcs constraint location clvmd-clone prefers aquarius=-INFINITY
$ sudo pcs constraint location dlm-clone prefers aquarius=-INFINITY
(vm-leo 自体は、前提となる pool-default-clone が起動しないと起動しないし、そもそも sagittarius 上で起動しているので、aquarius が起動しても影響ないはずなのだが…)
その状態で、まず aquarius のクラスタの停止・起動を実行する。
$ sudo pcs cluster stop aquariusなんと、aquarius のクラスタ起動だけで、vm-leo が再起動してしまう。
$ sudo pcs cluster start aquarius
ということは、クラスタパラメータが関係しているということだ。
$ sudo pcs property show --allそれっぽいパラメータは、enable-startup-probes か。
デフォルト値は true なので、 false に設定してみよう。
$ sudo pcs property set enable-startup-probes=false
$ sudo pcs property show --all
これで aquarius のクラスタ停止・起動を実行してみる。
$ sudo pcs cluster stop aquariusvm-leo は再起動しなかったと思う。
$ sudo pcs cluster start aquarius
続いて、リソースを一つずつ許可してみよう。
まずは dlm-clone
$ sudo pcs constraint remove location-dlm-clone-aquarius--INFINITY大丈夫のようだ。
次は clvmd-clone
$ sudo pcs constraint remove location-clvmd-clone-aquarius--INFINITYここで vm-leo が再起動してしまう。
更に先を確認するために、vm-leo が復帰したら、shared-pool-clone も確認しておこう。
$ sudo pcs constraint remove location-shared-pool-clone-aquarius--INFINITYここでも vm-leo が再起動してしまう。
最後に、pool-default-clone だ。vm-leo が復帰してから試してみよう。
$ sudo pcs constraint remove location-pool-default-clone-aquarius--INFINITYここでは vm-leo の再起動は発生しない。
vm-leo の基盤となるリソースのうち、clvmd-clone と shared-pool-clone のリソースが起動すると、vm-leo が再起動する。
corosync.log をチェックしてみたら、clvmd-clone が起動すると、なぜか pool-default-clone と vm-leo が restart していた。
clvmd-clone と pool-default-clone の間には、shared-pool-clone が入っているが、そちらは restart になっていない。
う~ん。ということは、clone リソースに何か違いが?
と調べてみたら、いくつか違いがあった。
- dlm-clone
- interleave=true
- ordered=true
- clvmd-clone
- interleave=true
- ordered=true
- shared-pool-clone
- interleave=true
- ordered=(未設定:false)
- pool-default-clone
- interleave=(未設定:false)
- ordered=(未設定:false)
っていうか、interleave パラメータが関係あるんじゃないか?
というわけで設定してみよう。
$ sudo pcs resource update pool-default-clone meta interleave=true
$ sudo pcs resource show pool-default-clone
そしてもう一度テスト。
$ sudo pcs constraint location pool-default-clone prefers aquarius=-INFINITY
$ sudo pcs constraint location shared-pool-clone prefers aquarius=-INFINITY
$ sudo pcs constraint location clvmd-clone prefers aquarius=-INFINITY
$ sudo pcs constraint location dlm-clone prefers aquarius=-INFINITY
$ sudo pcs constraint remove location-dlm-clone-aquarius--INFINITY先程はここで vm-leo が再起動してしまったが、今回は大丈夫のようだ。
$ sudo pcs constraint remove location-clvmd-clone-aquarius--INFINITY
$ sudo pcs constraint remove location-shared-pool-clone-aquarius--INFINITY今回、ここでも大丈夫のようだ。
$ sudo pcs constraint remove location-pool-default-clone-aquarius--INFINITYこちらは問題なし。
というわけで、interleave=true の設定が必要だった。
振り返って過去の設定を見てみたら、ちゃんと interleave=true の設定を入れていた。
ちゃんと設定項目の意味を理解してれば、こんなに悩まなかったのに…。
リソースが勝手に再起動する問題はこれで解決かな?
0 件のコメント:
コメントを投稿