作っておぼえるHAシステム1

前回のBlogではAnsibleを使ってHAシステムを構築しました。

Ansibleを使うと簡単にシステムはできますが、中で何が行われていることを詳しく知りたい場合には、設定やコマンドを確認しながら、実際にシステムを作ってみると理解が深まります。本Blogでは数回にわけ2台のサーバを使って、アクティブ・スタンバイで動作するMariaDBのHAシステムの構築方法を説明します。

環境の準備

DRBDとPacemakerの構築のテストを行うためには、最低2台のLinuxサーバが必要になります。DRBDとPacemakerは実行に必要なリソースが少ないため、1台あたりメモリーは1GB、ストレージの容量は8GBほどあれば、DRBDでデータを冗長化して、Pacemakerでアクティブ・スタンバイに切り替え可能なHA環境ができます。参考までに筆者の作業用の機器は16GBメモリーと200GBのSSDストレージを持ったデスクトップPCで、そこにVirtualboxをインストールして複数の仮想OSを動かしています。

 

項目推奨値・コメント
OSCentOS 7.8
メモリー1Gバイト以上
ストレージOS用領域8GB
データ(DRBD)用領域8GB

OS用のストレージはCentOS 7のBaseシステムをインストールするには十分な大きさです。DRBD領域もテストならば1GBでも十分なのですが、Virtualboxの初期設定にしたがって8GBとしています。

仮想環境にCentOSをインストールします。
OSですが、現時点(2020年12月)はCentOS8の将来性が微妙なので、今回はCentOS7系のものを使いました。

 

ネットワークのIPアドレスは次のようにしました。

項目node1node2推奨値・コメント
enp0s3192.168.3.51192.168.3.52メンテ兼サービス用
enp0s810.5.0.110.5.0.2DRBD同期兼死活監視
enp0s910.5.1.110.5.1.2死活監視

 

今回の試験環境はホスト名をnode1、node2として、それぞれの/etc/hostsファイルにIPアドレスとホスト名を記述しておきます。

[root@node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.3.51 node1 node1.sios.com
192.168.3.52 node2 node1.sios.com

最後にsshの公開鍵を作成して、相互に鍵交換をしておきます。

[root@node1 ~]# ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:jlI4yjoKrnqohI7EwHG+dcKiGbRG6E5QT++1FsyJ9bQ root@node1.sios.com
The key's randomart image is:
+---[RSA 4096]----+
| . . . . |
|.. o . = + . |
|o+ .. o * E |
|* = .o . o |
|.B oo+o.S |
|B.+.+oo+ |
|oOo.. . . |
|X.. . |
|%= |
+----[SHA256]-----+

[root@node1 ~]# ssh-copy-id root@node2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'node2 (192.168.3.52)' can't be established.
ECDSA key fingerprint is SHA256:zIej5Ak24WkaYt1jh7m5UTU/jdUeHZMrNe2BqDOvlIM.
ECDSA key fingerprint is MD5:6b:5d:8d:39:40:f5:fb:cd:3b:c0:98:9e:8d:8f:0c:5c.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@node2's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'root@node2'"
and check to make sure that only the key(s) you wanted were added.

この評価環境はDRBDの同期と、Pacemakerの死活監視のネットワークはダイレクトに接続されており、他のネットワークに繋がっていません。ネットワークインターフェースに対して、Zoneをtrustedのして、全てのパケットの追加を許可します。

[root@node1 ~]# firewall-cmd --zone=trusted --change-interface=enp0s8 
[root@node1 ~]# firewall-cmd --zone=trusted --change-interface=enp0s9 
[root@node1 ~]# firewall-cmd --zone=trusted --change-interface=enp0s8 --permanent
[root@node1 ~]# firewall-cmd --zone=trusted --change-interface=enp0s9 --permanent

MariaDBのサーバーなので、サービス用の用のネットワークではMariaDBのポートのアクセスを許可します。

[root@node1 ~]# firewall-cmd --zone=public --add-port=3306/tcp
[root@node1 ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent

以上で環境構築は終了です。

DRBDのインストール

最初にDRBDをインストールします。LINBITのリポジトリからDRBDとPacemakerをダウンロードするため、評価用のユーザーIDとパスワードを入手する必要があります。下記のリンクをアクセスすると、サイオステクノロジーのWebページからユーザIDとパスワードの申請ができます。

デモライセンス申請ページ

リポジトリを登録するためには、LINBITから登録ツールをダウンロードします。ダウンロードしたプログラムにはchmodコマンドで実行権を付けます。

[root@node1 ~]# cd /tmp
[root@node1 ~]# wget --no-check-certificate https://my.linbit.com/linbit-manage-node.py
[root@node1 ~]# chmod u+x linbit-manage-node.py

このツールはLINBITにアクセスするため、インストール対象のサーバがインターネットに繋がっている必要があります。

ツールを実行するとユーザIDとパスワードを入力する画面になります。

[root@node1 tmp]# ./linbit-manage-node.py 
linbit-manage-node.py (Version: 1.31)
Checking if version is up to date
[OK] Your version is up to date
Username: "ユーザーID"    --- ユーザIDを入力
Credential (will not be echoed): "パスワード"  --- パスワードを入力
Connecting to https://my.linbit.com/
[OK] Login successful

IDとパスワードを入力後に”[OK] Login successful”と表示されればアクセス成功です。
次にクラスタの登録画面になります。初回のログインの場合は”*Be first node of a new cluster*”と表示されるので、1を入力してenterキーを押します。

Will this node form a cluster with...

1) *Be first node of a new cluster*

--> Please enter a number in range and press return: 1  --- 1を入力
Writing registration data:
--> Write to file (/var/lib/drbd-support/registration.json)? [y/N] --- yを入力

画面が切り替わり、パッケージの選択画面になります。DRBDは9.0と8.4、Pacemakerは2.0、1.1.21、1.1.15、1.1が選択可能です。

Here are the repositories you can enable:

1) pacemaker-2(Disabled)
2) pacemaker-1.1.21(Disabled)
3) pacemaker-1.1.15(Disabled)
4) pacemaker-1.1(Disabled)
5) drbd-9.0(Disabled)
6) drbd-8.4(Disabled)

Enter the number of the repository you wish to enable/disable. Hit 0 when you are done.

Enable/Disable:

インストールしたいパッケージの番号を入力します。DBRD 9.0とPacemaker 1.1.21を選ぶ場合は、2入力したのち、画面が切り替わったら、次に5を入力します。

Here are the repositories you can enable:

1) pacemaker-2(Disabled)
2) pacemaker-1.1.21(Enabled)
3) pacemaker-1.1.15(Disabled)
4) pacemaker-1.1(Disabled)
5) drbd-9.0(Enabled)
6) drbd-8.4(Disabled)

Enter the number of the repository you wish to enable/disable. Hit 0 when you are done.

Enable/Disable:

DBRD 9.0とPacemaker 1.1.21の後ろに(Enabled)の表示が付いたら0を入力してパッケージ選択画面を終了します。
次にリポジトリ情報が画面に表示されます。[y/N] の表示が2つありますが、ここではyを入力して下さい。

......
......

[pacemaker-1.1.21]
name=LINBIT Packages for pacemaker-1.1.21 - $basearch
baseurl=https://packages.linbit.com/<<ハッシュ番号>>/yum/rhel7/pacemaker-1.1.21/$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/rhel7/drbd-9.0/$basearch
enabled=1
gpgkey=https://packages.linbit.com/package-signing-pubkey.asc
gpgcheck=1


--> Write to file (/etc/yum.repos.d/linbit.repo)? [y/N] y --- yを入力してlibit.repoファイルを作成
[OK] Repository configuration written
Downloading LINBIT yum plugin
Downloading LINBIT yum plugin config
--> Add linbit signing key to keyring now? [y/N] y  --- yを入力してLINBITのリポジトリの証明書を登録
Final Notes:
Please add the following line to your
base, updates, el repo (if enabled), rhel-ha-for-rhel-7-server-rpms (RHEL only), rhel-rs-for-rhel-7-server-rpms (RHEL only)
repositories under /etc/yum.repos.d/
to ensure you are using LINBIT's packages:

exclude=cluster* corosync* drbd kmod-drbd libqb* pacemaker* resource-agents*

Now update your package information and install
LINBIT's kernel module and/or user space utilities
[OK] Congratulations! Your node was successfully configured.
[root@node1 tmp]#

最後に”exclude=cluster*….”と表示されます。これは /etc/yum.repos.d/CentOS-Base.repoに追加する除外設定です。

PacemakerとCorosyncのパッケージはCentOSのBaseシステムに含まれているので、この設定を追加しないとLINBITのパッケージと競合してしまいます。

[root@node1 ~]# cat /etc/yum.repos.d/CentOS-Base.repo 
# CentOS-Base.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.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
exclude=cluster* corosync* drbd kmod-drbd libqb* pacemaker* resource-agents* --- 追加する箇所

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
exclude=cluster* corosync* drbd kmod-drbd libqb* pacemaker* resource-agents*   --- 追加する箇所
.....
.....

以上で、DRBDとPacemakerのリポジトリ情報をの登録ができました。

次にDRBDをインストールします。

DRBDの最低必要なパッケージはkmod-drbdとdrbd-utils.x86_64ですが、加えてbash-completionとdrbd-bash-completionをインストールすると、コマンド入力中に入力補完されて便利です。

[root@node1 yum.repos.d]# yum install kmod-drbd drbd-bash-completion.x86_64 drbd-pacemaker.x86_64 drbd-utils.x86_64 bash-completion

インストールが終わったら、カーネルにDRBDが組み込まれたかlsmodコマンドで確認します。

[root@node1 ~]# lsmod | grep drbd
drbd_transport_tcp 22184 1
drbd 572465 3 drbd_transport_tcp
libcrc32c 12644 4 xfs,drbd,nf_nat,nf_conntrack

もしDRBDが読み込まれない場合は、OSを再起動する必要があります。

次はDRBDの設定と動作確認の方法を紹介します。