で、 pacemaker を調べていく過程で、リソースエージェントに ocf:redhat:vm.sh と ocf:heartbeat:VirtualDomain の2つが存在することに気付いた。
これ、KVM等の仮想マシンをリソース化するものっぽい。
ってことは、pcs コマンドで仮想マシンを起動停止させたり、sagittarius から aquarius へのマイグレーションが出来たりするのかもしれない。
pacemaker化 の最後に、これを試してみたい。
リソースエージェントに redhat版と heartbeat版 があるのだが、これまでずっと heratbeat版 を使っていたので、今回も heartbeat版 で進めてみる。
まずは設定内容の確認
$ sudo pcs resource describe ocf:heartbeat:VirtualDomain必須パラメータは config だけだけど、libvirt自体は様々なハイパーバイザに対応しているので、qemu/kvm用のハイパーバイザを指定する必要はある。
それ以外はとりあえずデフォルトのままで作ってみよう。仮想マシンは leo でいいかな?
$ sudo pcs resource create vm-leo \
ocf:heartbeat:VirtualDomain \
config="/etc/libvirt/qemu/leo.xml" \
hypervisor="qemu:///system" \
meta op start timeout="120s"
$ sudo pcs status
おっと!?いきなりコケてるぞ?いや、ちょっと待ってから再確認すると、vm-leo を aquarius で起動しようとして失敗し、sagittarius で起動成功、という流れのようだ。
いろいろ調査したんだけど、非常にツマらない理由だった。
今回の pacemaker化 の主旨とは全く異なるポイントだったんだけど、メモしておく。
この辺りは、各人の持っているPCのスペックに依るところが大きいので、あくまで参考程度に見てほしい。
それぞれのホストマシンで使っているCPUは以下の通り。
で、5557UというCPU、Broadwell世代なんだけど、TSXという機能に対応していない。
で、仮想マシン leo の方の仮想CPU定義はと言うと… Broadwell にしている。
仮想マシンのCPU定義が Broadwell の場合、ホスト側のCPUにもTSXという機能が必要なので、5557U というCPU上で動かすことは出来ない。
仮想マシン側の CPU定義を Broadwell-noTSX か、それ以下のモデルにする必要があるようだ。
つまり、今までパワーのある sagtitarius 上で色々検証していたけど、実は aquarius では動かない検証をしていた、ということだ。ナンテコッタイ。
調べてみたら、多くの仮想マシンが仮想CPUを Broadwell と指定してて、ほとんど aquarius では動かせないことが判明。
とりあえず leo だけでも直しておこう。
まずは vm-leoリソースを停止。
そしたら、leo の定義変更だ。
cpuの <model> の部分を Broadwell から Broadwell-noTSX に書き換える。
---
変更出来たら、まずは各ノードで手作業で上げてみよう。
sagittarius でも。
ココまでが、各人の環境に応じて差が出る部分だ。
leo が両ノードで動かせるのが確認できたら、vm-leoリソースをクリーンナップして起動してみる。
aquarius 側で virsh を使ってみると、動いていることがわかるはずだ。
これで vm-leo が動かせるようになったが、まだ設定しておかなければならない項目がある。
起動条件、起動順と起動ノードの優先順、マイグレーション設定だ。
ちょっと長くなってしまったので、これは次回に回す。
っとその前に、vm-leo を停止させて、自動的に上がってこないように抑えておこう。
いろいろ調査したんだけど、非常にツマらない理由だった。
今回の pacemaker化 の主旨とは全く異なるポイントだったんだけど、メモしておく。
この辺りは、各人の持っているPCのスペックに依るところが大きいので、あくまで参考程度に見てほしい。
それぞれのホストマシンで使っているCPUは以下の通り。
- sagittarius : Intel core i7-6700
- aquarius : Intel core i7-5557U
で、5557UというCPU、Broadwell世代なんだけど、TSXという機能に対応していない。
で、仮想マシン leo の方の仮想CPU定義はと言うと… Broadwell にしている。
仮想マシンのCPU定義が Broadwell の場合、ホスト側のCPUにもTSXという機能が必要なので、5557U というCPU上で動かすことは出来ない。
仮想マシン側の CPU定義を Broadwell-noTSX か、それ以下のモデルにする必要があるようだ。
つまり、今までパワーのある sagtitarius 上で色々検証していたけど、実は aquarius では動かない検証をしていた、ということだ。ナンテコッタイ。
調べてみたら、多くの仮想マシンが仮想CPUを Broadwell と指定してて、ほとんど aquarius では動かせないことが判明。
とりあえず leo だけでも直しておこう。
まずは vm-leoリソースを停止。
$ sudo pcs resource disable vm-leoleoが止まっているのを確認しておく。
$ sudo pcs status
(sagittarius) $ virsh list --all
(aquarius) $ virsh list --all
そしたら、leo の定義変更だ。
(aquarius) $ virsh edit leo---
(sagittarius) $ virsh edit leo
cpuの <model> の部分を Broadwell から Broadwell-noTSX に書き換える。
---
変更出来たら、まずは各ノードで手作業で上げてみよう。
(aquairus) $ virsh start leo起動したら leo にログインして、シャットダウンしておこう。
(aquarius) $ virsh list --all
(leo) $ sudo systemctl poweroff
sagittarius でも。
(sagittarius) $ virsh start leo起動確認が出来たら leo をシャットダウンしておく。
(sagittarius) $ virsh list --all
(leo) $ sudo systemctl poweroff
ココまでが、各人の環境に応じて差が出る部分だ。
leo が両ノードで動かせるのが確認できたら、vm-leoリソースをクリーンナップして起動してみる。
$ sudo pcs resource cleanup vm-leo今度は無事に aquarius で動き出した。
$ sudo pcs resource enable vm-leo
$ sudo pcs status
aquarius 側で virsh を使ってみると、動いていることがわかるはずだ。
(aquarius) $ virsh list --all
これで vm-leo が動かせるようになったが、まだ設定しておかなければならない項目がある。
起動条件、起動順と起動ノードの優先順、マイグレーション設定だ。
ちょっと長くなってしまったので、これは次回に回す。
っとその前に、vm-leo を停止させて、自動的に上がってこないように抑えておこう。
$ sudo pcs resource disable vm-leo
$ sudo pcs status
0 件のコメント:
コメントを投稿