DRBDとPacemakerはオープンソースで公開されていますので、ソースコードをコンパイルしたり、適切なレポジトリを登録すると簡単にインストールして利用できます。(コミュニティ版)
サイオステクノロジーはLINBIT社が提供する有償サポートを販売しています。 このサポートを契約すると、DRBDやPacemakerの初期の設定方法や、運用後の不具合についての解決方法を、サイオステクノロジーへ問い合わせすることが出来ます。
また、PacemakerやDRBDに不具合や脆弱性が見つかった時、LINBIT社が修正したバイナリがコミュニティ版より早く提供されます。 ただし、このサポートはLINBIT社の提供するバイナリの利用を前提にしているため、コミュニティ版を利用している場合は、正式なサポートバイナリ(LINBITバイナリ)に入れ替える必要があります。
今回はこの入れ替えの手順をCentOS 8での例を使って紹介します。
1.コミュニティ版での環境構築 DRBDとPacemakerのコミュニティ版の構築方法は、ネット上にいろいろ情報があります。詳細はそちらを参考にしてください。今回の環境ではDRBDをELRepo.org のパッケージを、PacemakerをCentOS-HAのパッケージを利用しました。
[root@node1 yum.repos.d]# yum info kmod-drbd90 Last metadata expiration check: 0:00:10 ago on Sat May 23 19:10:47 2020. Installed Packages Name : kmod-drbd90 Version : 9.0.21 Release : 2.el8_1.elrepo Architecture : x86_64 Size : 1.3 M Source : kmod-drbd90-9.0.21-2.el8_1.elrepo.src.rpm Repository : @System From repo : elrepo Summary : drbd90 kernel module(s) URL : https://www.drbd.org/ License : GPLv2 Description : DRBD is a distributed replicated block device. It mirrors a : block device over the network to another machine. Think of it : as networked raid 1. It is a building block for setting up : high availability (HA) clusters. : This package provides the drbd90 kernel module(s). : It is built to depend upon the specific ABI provided by a range of releases : of the same variant of the Linux kernel and not on any one specific build.
[root@node1 yum.repos.d]# yum info pacemaker Last metadata expiration check: 0:08:23 ago on at May 23 19:10:47 2020. Installed Packages Name : pacemaker Version : 2.0.2 Release : 3.el8_1.2 Architecture : x86_64 Size : 1.3 M Source : pacemaker-2.0.2-3.el8_1.2.src.rpm Repository : @System From repo : HighAvailability Summary : Scalable High-Availability cluster resource manager URL : https://www.clusterlabs.org License : GPLv2+ and LGPLv2+ Description : Pacemaker is an advanced, scalable High-Availability cluster resource : manager. : : It supports more than 16 node clusters with significant capabilities : for managing resources and dependencies. : : It will run scripts at initialization, when machines go up or down, : when related resources fail and can be configured to periodically check : resource health. : : Available rpmbuild rebuild options: : –with(out) : coverage doc stonithd hardening pre_release profiling
評価環境のとして、2ノード(node1、node2)でMariaDBのHAクラスタをこれらのパッケージを使った構築しました。
[root@node1 yum.repos.d]# crm_mon -frA1 Stack: corosync Current DC: node1 (version 2.0.2-3.el8_1.2-744a30d655) – partition with quorum Last updated: Sat May 23 19:23:23 2020 Last change: Sat May 23 01:01:21 2020 by root via cibadmin on node1
2 nodes configured 3 resources configured
Online: [ node1 node2 ]
Full list of resources:
Resource Group: mydbsv
VIP (ocf::heartbeat:IPaddr2): Started node1 drbdfs (ocf::heartbeat:Filesystem): Started node1 mariadb (ocf::heartbeat:mysql): Started node1
Node Attributes: * Node node1: * Node node2:
Migration Summary: * Node node2: * Node node1:
VIPとdrbdfs、mariadbの3つのリソースが、node1で動作していることが判ります。
2.node2の停止 スタンバイノードになっているnode2をLINBITバイナリ化します。そのためにはまず、インストールされているコミュニティ版のバイナリーを削除します。
[root@node2 ~]# systemctl stop pacemaker [root@node2 ~]# systemctl stop corosync
[root@node2 yum.repos.d]# yum remove pacemaker corosync pcs Dependencies resolved.
============================================================ Package Arch Version Repository Size ============================================================ Removing: corosync x86_64 3.0.2-3.el8_1.1 @HighAvailability 672 k pacemaker x86_64 2.0.2-3.el8_1.2 @HighAvailability 1.3 M Removing unused dependencies: avahi-libs x86_64 0.7-19.el8 @BaseOS 159 k ….
[root@node2 ~]# [root@node2 ~]#[root@node2 yum.repos.d]# yum remove drbd90-utils-9.10.0-2.el8.elrepo.x86_64 kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_6 Dependencies resolved. ============================================================ Package Architecture Version Repository Size ============================================================ Removing: drbd90-utils x86_64 9.10.0-2.el8.elrepo @elrepo 2.2 M kmod-drbd90 x86_64 9.0.21-2.el8_1.elrepo @elrepo 1.3 M
Transaction Summary
============================================================ Remove 2 Packages
Freed space: 3.5 M Is this ok [y/N]: y Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Running scriptlet: kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 1/1 Running scriptlet: kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 1/2 Erasing : kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 1/2 Running scriptlet: kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 1/2 Running scriptlet: kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 1/2 Running scriptlet: drbd90-utils-9.10.0-2.el8.elrepo.x86_64 2/2 Erasing : drbd90-utils-9.10.0-2.el8.elrepo.x86_64 2/2 Running scriptlet: drbd90-utils-9.10.0-2.el8.elrepo.x86_64 2/2 Verifying : drbd90-utils-9.10.0-2.el8.elrepo.x86_64 1/2 Verifying : kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64 2/2
Removed: drbd90-utils-9.10.0-2.el8.elrepo.x86_64 kmod-drbd90-9.0.21-2.el8_1.elrepo.x86_64
Complete! [root@node2 yum.repos.d]# [root@node2 yum.repos.d]# shutdown -r now
ここで一旦node2を再起動します。これはDRBDがカーネルオブジェクトであり、再起動しないとカーネル内に古いコードが残ってしまう事があるためです。
node2で再起動を行っても、node1ではサービスは止まらずに動き続けます。
3.LINBITバイナリのインストール node2の再起動後にレポジトリをLINBITバイナリ向けに修正します。
このシステムではCentOS-HAからPacemakerとCorosyncを読み込んでいるので、このレポジトリを無効にします。/etc/yum.repos.d/CentOS-HA.repo のenabledを0に設定します。
[root@node2 yum.repos.d]# cat CentOS-HA.repo # CentOS-HA.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # #
[HighAvailability] name=CentOS-$releasever – HA mirrorlist=https://mirrorlist.centos.org/ release=$releasever&arch=$basearch&repo=HighAvailability&in fra=$infra #baseurl=https://mirror.centos.org/$contentdir/$releasever/HighAvailability/$basearch/os/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
次にDRBDのコミュニティ版のリポジトリを無効にします。この環境では /etc/yum.repos.d/ elrepo.repoのenabledを0に設定します。
[root@node2 yum.repos.d]# cat elrepo.repo ### Name: ELRepo.org Community Enterprise Linux Repository for el8 ### URL: https://elrepo.org/
[elrepo] name=ELRepo.org Community Enterprise Linux Repository – el8 baseurl=https://elrepo.org/linux/elrepo/el8/$basearch/ https://mirrors.coreix.net/elrepo/elrepo/el8/$basearch/ https://mirror.rackspace.com/elrepo/elrepo/el8/$basearch/ https://repos.lax-noc.com/elrepo/elrepo/el8/$basearch/ mirrorlist=https://mirrors.elrepo.org/mirrors-elrepo.el8 enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
次にLINBITバイナリのリポジトリを作成します。 /etc/yum.repos.d/ linbit.repoとして次のようなファイルを作成します。
[root@node2 yum.repos.d]# cat linbit.repo [pacemaker-2] name=LINBIT Packages for pacemaker-2 – $basearch baseurl=https://packages.linbit.com/ <<ハッシュ番号>> /yum/rhel8/pacemaker-2/$basearch enabled=1 gpgkey=https://packages.linbit.com/package-signing-pubkey.asc gpgcheck=1
[drbd-9.0] name=LINBIT Packages for drbd-9.0 – $basearch baseurl=https://packages.linbit.com/ <<ハッシュ番号>> /yum/rhel8.1/drbd-9.0/$basearch enabled=1 gpgkey=https://packages.linbit.com/package-signing-pubkey.asc gpgcheck=1
※<<ハッシュ番号>>はLINBITのサポートに契約いただくと入手できる文字列です。
レポジトリの準備が出来たら、Pacemaker、Corosyncのパッケージをインストールします。
[root@node2 yum.repos.d]# yum install pacemaker corosync pcs Last metadata expiration check: 0:00:13 ago on Tue May 26 21:06:43 2020. Dependencies resolved. ============================================================== Package Arch Version Repository Size ============================================================== Installing: corosync x86_64 3.0.2.linbit-1.0.el8 pacemaker-2 260 k pacemaker x86_64 2.0.2.linbit-3.0.el8 pacemaker-2 427 k pcs x86_64 0.10.2.linbit-1.0.el8 pacemaker-2 11 M Installing dependencies: centos-logos x86_64 80.5-2.el8 AppStream 706 k nspr x86_64 4.21.0-2.el8_0 AppStream 143 k nss x86_64 3.44.0-9.el8_1 AppStream 724 k nss-softokn x86_64 3.44.0-9.el8_1 AppStream 472 k nss-softokn-freebl x86_64 3.44.0-9.el8_1 AppStream 273 k … pacemaker-libs-2.0.2.linbit-3.0.el8.x86_64 pacemaker-schemas-2.0.2.linbit-3.0.el8.noarch resource-agents-4.1.1.linbit-1.0.el8.x86_64
Complete! [root@node2 yum.repos.d]#
引き続きDRBDをインストールします。
[root@node2 yum.repos.d]# yum install kmod-drbd drbd Last metadata expiration check: 0:03:39 ago on Tue May 26 21:06:43 2020. Dependencies resolved. ============================================================= Package Architecture Version Repository Size ============================================================= Installing: drbd x86_64 9.13.1-1.el8 drbd-9.0 22 k kmod-drbd x86_64 9.0.22_4.18.0_147-2 drbd-9.0 345 k Installing dependencies: drbd-bash-completion x86_64 9.13.1-1.el8 drbd-9.0 11 k drbd-pacemaker x86_64 9.13.1-1.el8 drbd-9.0 45 k drbd-udev x86_64 9.13.1-1.el8 drbd-9.0 9.9 k drbd-utils x86_64 9.13.1-1.el8 drbd-9.0 614 k drbd-xen x86_64 9.13.1-1.el8 drbd-9.0 12 k
Transaction Summary ============================================================= Install 7 Packages
Total download size: 1.0 M Installed size: 1.0 M Is this ok [y/N]: y Downloading Packages: (1/7): drbd-bash-completion-9.13.1-1.el8.x86_64.rpm 6.2 kB/s | 11 kB 00:01 (2/7): drbd-9.13.1-1.el8.x86_64.rpm 12 kB/s | 22 kB 00:01 (3/7): drbd-udev-9.13.1-1.el8.x86_64.rpm 17 kB/s | 9.9 kB 00:00 (4/7): drbd-pacemaker-9.13.1-1.el8.x86_64.rpm 18 kB/s | 45 kB 00:02 (5/7): drbd-xen-9.13.1-1.el8.x86_64.rpm 21 kB/s | 12 kB 00:00 (6/7): drbd-utils-9.13.1-1.el8.x86_64.rpm 324 kB/s | 614 kB 00:01 (7/7): kmod-drbd-9.0.22_4.18.0_147-2.x86_64.rpm 21 kB/s | 345 kB 00:16 ———————————————————————————————— Total 55 kB/s | 1.0 MB 00:19
Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : drbd-utils-9.13.1-1.el8.x86_64 1/7 Running scriptlet: drbd-utils-9.13.1-1.el8.x86_64 1/7 Installing : drbd-bash-completion-9.13.1-1.el8.x86_64 2/7 Installing : drbd-pacemaker-9.13.1-1.el8.x86_64 3/7 Installing : drbd-udev-9.13.1-1.el8.x86_64 4/7 Installing : drbd-xen-9.13.1-1.el8.x86_64 5/7 Installing : drbd-9.13.1-1.el8.x86_64 6/7 Installing : kmod-drbd-9.0.22_4.18.0_147-2.x86_64 7/7 Running scriptlet: kmod-drbd-9.0.22_4.18.0_147-2.x86_64 7/7 Verifying : drbd-9.13.1-1.el8.x86_64 1/7 Verifying : drbd-bash-completion-9.13.1-1.el8.x86_64 2/7 Verifying : drbd-pacemaker-9.13.1-1.el8.x86_64 3/7 Verifying : drbd-udev-9.13.1-1.el8.x86_64 4/7 Verifying : drbd-utils-9.13.1-1.el8.x86_64 5/7 Verifying : drbd-xen-9.13.1-1.el8.x86_64 6/7 Verifying : kmod-drbd-9.0.22_4.18.0_147-2.x86_64 7/7
Installed: drbd-9.13.1-1.el8.x86_64 kmod-drbd-9.0.22_4.18.0_147-2.x86_64 drbd-bash-completion-9.13.1-1.el8.x86_64 drbd-pacemaker-9.13.1-1.el8.x86_64 drbd-udev-9.13.1-1.el8.x86_64 drbd-utils-9.13.1-1.el8.x86_64 drbd-xen-9.13.1-1.el8.x86_64
Complete!
インストールが終わったら、DRBDを起動して、node1のコミュニティ版のDRBDと データ同期が出来るか確認します。
[root@node2 yum.repos.d]# drbdadm up r0 [root@node2 yum.repos.d]# drbdadm status
–== Thank you for participating in the global usage survey ==– The server’s response is:
node already registered r0 role:Secondary disk:UpToDate node1 role:Primary peer-disk:UpToDate
disk:UpToDateになっているのでデータ同期は正常です。 最後にPacemakerとCorosyncを起動して、node1とのHAクラスタが復帰するか確認します。
Online: [ node1 node2 ]
Full list of resources:
Resource Group: mydbsv VIP (ocf::heartbeat:IPaddr2): Started node1 drbdfs (ocf::heartbeat:Filesystem): Started node1 mariadb (ocf::heartbeat:mysql): Started node1
Node Attributes: * Node node1: * Node node2:
Migration Summary: * Node node1: * Node node2:
無事にnode1がコミュニティ版、node2がLINBITバイナリの状態でHAクラスタが復旧しました。
4.node1のLINBITバイナリ化 次にnode2に続いて、node1をLINBITバイナリ化します。手順としてはnode2で行ったことと同じなります。 PacemakerとCorosyncを停止すると、HAクラスタはnode1がOFFLINEになり、node2にサービスがフェールオーバーします。
Online: [ node2 ] OFFLINE: [ node1 ]
Full list of resources:
Resource Group: mydbsv VIP (ocf::heartbeat:IPaddr2): Started node2 drbdfs (ocf::heartbeat:Filesystem): Started node2 mariadb (ocf::heartbeat:mysql): Started node2
Node Attributes: * Node node2:
Migration Summary: * Node node2:
node1がOFFLINEになったら、コミュニティ版のPacemaker、Corosync、DRBDの削除とLINBIT版バイナリのインストールを行います。
5.最後に PacemakerとDRBDのコミュニティ版とLINBIT版のバイナリは、同じソースコードから作られているので設定の互換性がきわめて高く、この記事でで見てきたように片方のノードをコミュニティ版、もう片方のノードをLINBIT版のバイナリーにしても動作します。
大きくバージョンが異なる場合には本書の通りにバイナリの入れ替えが出来ない可能性はあります。その場合はコミュニティ版のバージョンを最新のものに変えてお試しください。
このように、PacemakerとDRBDを使ったシステムは、サービスの停止を最小限にしてメンテナンスが行えます。コミュニティ版からサポートのあるLINBIT版のバイナリに変更するのも容易です。
本日(2020年5月27日)時点で、RHEL8、CentOS8のHighAvailabilityオプションではcrmshが使えませんが、このツールはLINBITバイナリでは利用可能です。RHEL8、CentOS8でcrmコマンドを使ってPacemakerの構築や運用を続けたい方には、LINBITのバイナリをお勧めします。
>>LINBITクラスタスタックサポート
サイオステクノロジーで働く中の人です。
Be the first to comment