Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

OpenVZ7 + DRBD + Pacamakerの環境をバージョンアップする

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の確認

1台目
# drbdadm status
r0 role:Primary
  disk:UpToDate
  server2 role:Secondary
    peer-disk:UpToDate
2台目
# 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

Node server2: standby
Online: [ server1 ]

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台目に寄りました。

2台目を待機状態に戻します。

pcs cluster unstandby 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

2台ともonlineになりました。

DRBDの確認

念のためDRBDも確認しておきます。

1台目
# drbdadm status
r0 role:Primary
  disk:UpToDate
  server2 role:Secondary
    peer-disk:UpToDate
2台目
# drbdadm status
r0 role:Secondary
  disk:UpToDate
  server1 role:Primary
    peer-disk:UpToDate

これで完了です。

hirachan
最近好きなもの: メール、DNS、Linux、Python、AWS、アジャイル、スクラム、XP、自然言語処理、ファシリテーション
https://hirano.cc/
qualitia
コミュニケーションの効率化とセキュリティの強化を支援するさまざまなメッセージング関連ソリューションを クラウド型サービス・ソフトウェアで提供しています。常に「クオリティの追求」への挑戦にこだわり、その企業活動とテクノロジーで社会に貢献することを目標としています。 
https://www.qualitia.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away