OpenVZ7 + DRBD + Pacamakerの環境をバージョンアップする
前に、OpenVZ7をDRBD9.0 + Pacemakerで冗長化するというのを書きましたが、この当時の環境では少し古くなってきてしまいました。
例えば、CentOS8を動かそうとすると、
# prlctl create test --vmtype ct --ostemplate centos-8-x86_64
Creating the Container...
Creating cache
Processing metadata for centos-8-x86_64
Failed to register the CT: PRL_ERR_VZCTL_OPERATION_FAILED (Details: Creating OS template cache for centos-8-x86_64 template
Error: Python directory not found in /vz/pkgenv/rpm414x64
Error: PYTHONPATH variable not defined
Creation of Container private area failed
)
Failed to create the virtual machine.
と怒られてしまいます。
そろそろバージョンアップが必要です。
そこで、この環境のOpenVZ7のバージョンを最新にしてみました。
通常OpenVZのバージョンアップはyum update
をすればいいのですが、この環境はDRBDのカーネルモジュールが入っていますので、こちらも新しいバージョンに合わせる必要があります。
Secondaryのホストのアップデート
怖いので2台目からやります。
yum update -y
/etc/vzのシンボリックリンクの張り直し
おっと。/vz/etc_vzに向けて張ってあったはずの/etc/vzが実体のディレクトリになってしまいましたので、シンボリックリンクに戻します。
mv /etc/vz /etc/vz.org
ln -sf /vz/etc-vz /etc/vz
DRBDのカーネルモジュールのコンパイル
必要なモジュールのインストール
前にやったので入っているはずですが、以下のモジュールが必要です。
yum -y install gcc gcc-c++ vzkernel-devel flex rpm-build po4a automake autoconf
新しいカーネルバージョンの確認
どこを見るのがベストなのかわからないのですが、/lib/modulesの下を見てみることにします。
# ls /lib/modules
3.10.0-1127.8.2.vz7.151.14
3.10.0-957.12.2.vz7.96.21
新しいモジュールは3.10.0-1127.8.2.vz7.151.14のようです。
DRBDインストール
複数の変更を同時にやると不幸になることが多いので、今回はVZカーネルのバージョンアップに専念することにし、DRBDのバージョンは据え置きます。
cd /usr/local/src
wget https://www.linbit.com/downloads/drbd/9.0/drbd-9.0.19-1.tar.gz
tar xvzf drbd-9.0.19-1.tar.gz
cd drbd-9.0.19-1
export KDIR=/usr/src/kernels/3.10.0-1127.8.2.vz7.151.14
make
make install
depmod 3.10.0-1127.8.2.vz7.151.14
再起動
shutdown -r now
ドキドキしながら見守ります。
pacemakerの起動
再起動後はPacemakerが自動的に起動しないようにしてあるので、手動で起動します。
PrimaryでもSecondaryでもどちらからでも実行できます。
pcs cluster start server2
# pcs status
Online: [ server1 server2 ]
Full list of resources:
Resource Group: Group-VZ
VIP (ocf::heartbeat:IPaddr2): Started server1
FS (ocf::heartbeat:Filesystem): Started server1
VZ7 (ocf::pacemaker:openvz7): Started server1
のようになっていればOKです。
DRBDの確認
# drbdadm status
r0 role:Primary
disk:UpToDate
server2 role:Secondary
peer-disk:UpToDate
# drbdadm status
r0 role:Secondary
disk:UpToDate
server1 role:Primary
peer-disk:UpToDate
のようになっていればOKです。
Primaryのホストのアップデート
さて、どうやらうまく行きそうなので、Primaryの方も同様にアップデートします。
動作中のVPSをSecondaryに移動
まず、Primaryで動作しているVPSを2台目に移動します。
pcs cluster standby server1
次のようになるまで待ちます。
# pcs cluster status
Online: [ server2 ]
Full list of resources:
Resource Group: Group-VZ
VIP (ocf::heartbeat:IPaddr2): Started server2
FS (ocf::heartbeat:Filesystem): Started server2
VZ7 (ocf::pacemaker:openvz7): Started server2
OSのバージョンアップとDRBDのカーネルモジュールのインストール
まとめて行きます。
yum update -y
mv /etc/vz /etc/vz.org
ln -sf /vz/etc-vz /etc/vz
yum -y install gcc gcc-c++ vzkernel-devel flex rpm-build po4a automake autoconf
cd /usr/local/src
wget https://www.linbit.com/downloads/drbd/9.0/drbd-9.0.19-1.tar.gz
tar xvzf drbd-9.0.19-1.tar.gz
cd drbd-9.0.19-1
export KDIR=/usr/src/kernels/3.10.0-1127.8.2.vz7.151.14
make
make install
depmod 3.10.0-1127.8.2.vz7.151.14
再起動
shutdown -r now
ドキドキしながら見守ります。
pacemakerの起動
再起動後はPacemakerが自動的に起動しないようにしてあるので、手動で起動します。
PrimaryでもSecondaryでもどちらからでも実行できます。
pcs cluster start server1
# pcs status
Node server1: standby
Online: [ server2 ]
Full list of resources:
Resource Group: Group-VZ
VIP (ocf::heartbeat:IPaddr2): Started server2
FS (ocf::heartbeat:Filesystem): Started server2
VZ7 (ocf::pacemaker:openvz7): Started server2
のようになっていればOKです。
リソースは、まだ、server2で動作しています。
リソースを1台目に移動
pcs cluster unstandby server1
# pcs status
Online: [ server1 server2 ]
Full list of resources:
Resource Group: Group-VZ
VIP (ocf::heartbeat:IPaddr2): Started server2
FS (ocf::heartbeat:Filesystem): Started server2
VZ7 (ocf::pacemaker:openvz7): Started server2
pcs cluster standby server2
# pcs status
Online: [ server1 server2 ]
Full list of resources:
Resource Group: Group-VZ
VIP (ocf::heartbeat:IPaddr2): Started server1
FS (ocf::heartbeat:Filesystem): Started server1
VZ7 (ocf::pacemaker:openvz7): Started server1
1台目に寄りました。
DRBDの確認
念のためDRBDも確認しておきます。
# drbdadm status
r0 role:Primary
disk:UpToDate
server2 role:Secondary
peer-disk:UpToDate
# drbdadm status
r0 role:Secondary
disk:UpToDate
server1 role:Primary
peer-disk:UpToDate
これで完了です。