作っておぼえる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を動かしています。
項目 | 推奨値・コメント |
---|---|
OS | CentOS 7.8 |
メモリー | 1Gバイト以上 |
ストレージOS用領域 | 8GB |
データ(DRBD)用領域 | 8GB |
OS用のストレージはCentOS 7のBaseシステムをインストールするには十分な大きさです。DRBD領域もテストならば1GBでも十分なのですが、Virtualboxの初期設定にしたがって8GBとしています。
仮想環境にCentOSをインストールします。
OSですが、現時点(2020年12月)はCentOS8の将来性が微妙なので、今回はCentOS7系のものを使いました。
ネットワークのIPアドレスは次のようにしました。
項目 | node1 | node2 | 推奨値・コメント |
---|---|---|---|
enp0s3 | 192.168.3.51 | 192.168.3.52 | メンテ兼サービス用 |
enp0s8 | 10.5.0.1 | 10.5.0.2 | DRBD同期兼死活監視 |
enp0s9 | 10.5.1.1 | 10.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の設定と動作確認の方法を紹介します。