【RHEL 7 HA アドオン設定例】共有ストレージを利用するためのリソース設定方法

インフラサーバ

はじめに

Red Hat Enterprise Linux 7 の High Availability アドオンについて、クラスタ内で共有ストレージを利用できるようリソース設定する例を記載します。

前提

環境

実装する内容

  • 共有ストレージとして利用できるリソースを作成し、そのリソースが起動しているノードでのみ共有ストレージにアクセスできるようにする、アクティブ/スタンバイな構成とする
  • フローティング IP アドレスリソースを作成して共有ストレージのリソースとグループ化し、アクティブなノードにアクセスできるようにする

共有ストレージに論理ボリュームを作成する

この項の作業はいずれか一つのノードでのみ実施します

共有ストレージに論理ボリュームを作成します。

以下の通り iSCSI デバイス(共有ストレージ)は /dev/sdb です。

[root@ha01 ~]# fdisk /dev/sdb
NAME HCTL       TYPE VENDOR   MODEL             REV TRAN
sda  32:0:0:0   disk VMware,  VMware Virtual S 1.0  spi
sdb  33:0:0:0   disk LIO-ORG  lun0             4.0  iscsi
sr0  3:0:0:0    rom  NECVMWar VMware SATA CD01 1.00 sata

まず fdisk コマンドでパーティションを作成します。

[root@ha01 ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


コマンド (m でヘルプ): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
パーティション番号 (1-4, default 1):
最初 sector (8192-62906367, 初期値 8192):
初期値 8192 を使います
Last sector, +sectors or +size{K,M,G} (8192-62906367, 初期値 62906367):
初期値 62906367 を使います
Partition 1 of type Linux and of size 30 GiB is set

コマンド (m でヘルプ): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

コマンド (m でヘルプ): p

Disk /dev/sdb: 32.2 GB, 32208060416 bytes, 62906368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 4194304 バイト
Disk label type: dos
ディスク識別子: 0xe56e26e1

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/sdb1            8192    62906367    31449088   8e  Linux LVM

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

ioctl() を呼び出してパーティションテーブルを再読込みします。
ディスクを同期しています。
[root@ha01 ~]#

次に pvcreate コマンドで /dev/sdb1 上に物理ボリュームを作成します。

[root@ha01 ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.

次に vgcreate コマンドを使用してボリュームグループ my_vg を作成します。

[root@ha01 ~]# vgcreate my_vg /dev/sdb1
  Volume group "my_vg" successfully created

最後にlvcreate コマンドを使用して論理ボリュームmy_vg を作成します。なお、サイズは空き容量全てとしています。

[root@ha01 ~]# lvcreate -l 100%FREE -n my_lv my_vg
  Logical volume "my_lv" created.

lvs コマンドで論理ボリュームを表示してみます。

[root@ha01 ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  my_lv my_vg -wi-a----- <29.99g
  root  rhel  -wi-ao---- <26.00g
  swap  rhel  -wi-ao----   3.00g

mkfs.ext4 コマンドでファイルシステムを作成します。

[root@ha01 ~]# mkfs.ext4 /dev/my_vg/my_lv
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=1024 blocks
1966080 inodes, 7861248 blocks
393062 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2155872256
240 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

共有ストレージの確認

この項の作業はいずれか一つのノードでのみ実施します

共有ストレージをマウントして後々の確認用でサンプルファイルを作成しておきます。

マウントポイントとなるディレクトリを作成します。/iscsi にマウントすることとします。

[root@ha01 ~]# mkdir /iscsi

/iscsi/dev/my_vg/my_lv をマウントします。

[root@ha01 ~]# mount /dev/my_vg/my_lv /iscsi

共有ストレージ内に空ファイル hoge.piyo を作成します。

[root@ha01 ~]# touch /iscsi/hoge.piyo
[root@ha01 ~]# ls -l /iscsi
合計 16
-rw-r--r--. 1 root root     0  8月 13 14:18 hoge.piyo
drwx------. 2 root root 16384  8月 13 14:08 lost+found

マウントを解除し、物理ボリュームを非アクティブ化します。

[root@ha01 ~]# umount /dev/my_vg/my_lv
[root@ha01 ~]# vgchange -an my_vg
  0 logical volume(s) in volume group "my_vg" now active

ボリュームグループのアクティブ化をクラスタ内に限定する設定

この項の設定はすべてのノードで実施します

LVM ボリュームグループを設定して、クラスタ内のみでボリュームグループをアクティブ化でき(クラスタリソースとしてのみアクティブ化でき)、クラスタ外(個々のノードにおける設定として)ではアクティブ化されないようにします。

/etc/lvm/lvm.conf の設定

まず、以下コマンドを実行します。

  • lvmconf --enable-halvm --services --startstopservices
[root@ha01 ~]# lvmconf --enable-halvm --services --startstopservices
Warning: Stopping lvm2-lvmetad.service, but it can still be activated by:
  lvm2-lvmetad.socket

このコマンドの効果は以下です。

  • /etc/lvm/lvm.conf ファイルの locking_type が 1 に設定される
  • /etc/lvm/lvm.conf ファイルの use_lvmetad が 0 に設定される
  • すべての lvmetad プロセスがすぐに無効になり、停止される

次に、以下コマンドを実行しボリュームグループ一覧を確認します。

  • vgs --noheadings -o vg_name
[root@ha01 ~]# vgs --noheadings -o vg_name
  my_vg
  rhel

リストの中の共有ストレージに対応するボリュームグループ以外を /etc/lvm/lvm.conf ファイルの volume_list 項目の設定値として使用します。/etc/lvm/lvm.conf に対して、以下の通り記載します。(記載位置の参考のため、前後のコメントアウト行も掲載しています。)

        # Example
        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        #
        # This configuration option does not have a default value defined.
        volume_list = [ "rhel" ]

        # Configuration option activation/auto_activation_volume_list.
        # Only LVs selected by this list are auto-activated.
        # This list works like volume_list, but it is used only by

記載対象のボリュームグループが複数ある場合は以下の様にカンマで区切ります。

volume_list = [ "rhel_root", "rhel_home" ]

initramfs 起動イメージの再構築

ノードの起動イメージがクラスタで制御しているボリュームグループを作動させないように initramfs 起動イメージを再構築します。次のコマンドで initramfs デバイスを更新します。このコマンドは完了までに 1 分ほどかかる場合があります。

  • dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)
[root@ha01 ~]# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)

ノードの再起動

ここまでの設定ができたら対象ノードを再起動させます。

[root@ha01 ~]# shutdown -r now

クラスタリソースの設定

この項の作業はいずれか一つのノードでのみ実施します

クラスタのリソースを作成します。なお、ここで作成する各リソースをリソースグループ myGroup に所属させることにします。

ボリュームグループリソースの作成

以下コマンドでボリュームグループリソースを作成します。

  • pcs resource create リソース名 LVM volgrpname=ボリュームグループ名 exclusive=true --group リソースグループ名
    • exclusive=true パラメーターを指定することで、クラスタのみが LVM 論理ボリュームをアクティブ化できるようにします
[root@ha01 ~]# pcs resource create my_lvm LVM volgrpname=my_vg exclusive=true --group myGroup
Assumed agent name 'ocf:heartbeat:LVM' (deduced from 'LVM')

作成したリソースが起動していることを確認します。

[root@ha01 ~]# pcs status
Cluster name: my_cluster
Stack: corosync
Current DC: ha02 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Thu Aug 13 15:02:03 2020
Last change: Thu Aug 13 14:58:50 2020 by root via cibadmin on ha01

2 nodes configured
2 resources configured

Online: [ ha01 ha02 ]

Full list of resources:

 myapc  (stonith:fence_apc_snmp):       Stopped
 Resource Group: myGroup
     my_lvm     (ocf::heartbeat:LVM):   Started ha01

Failed Resource Actions:
* myapc_start_0 on ha01 'unknown error' (1): call=6, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 14:49:10 2020', queued=0ms, exec=13436ms
* myapc_start_0 on ha02 'unknown error' (1): call=32, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 11:38:46 2020', queued=0ms, exec=13425ms

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

※myapc はフェンスエージェントのリソースです。エラーとなっていますが無視してください

ファイルシステムリソースの作成

以下コマンドでファイルシステムリソースを作成します。

  • pcs resource create リソース名 Filesystem device=論理ボリュームのパス directory=マウントポイント fstype=ext4 --group グループ名
[root@ha01 ~]# pcs resource create my_fs Filesystem device=/dev/my_vg/my_lv directory=/iscsi fstype=ext4 --group myGroup
Assumed agent name 'ocf:heartbeat:Filesystem' (deduced from 'Filesystem')

作成したリソースが起動していることを確認します。

[root@ha01 ~]# pcs status
Cluster name: my_cluster
Stack: corosync
Current DC: ha02 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Thu Aug 13 15:09:18 2020
Last change: Thu Aug 13 15:09:14 2020 by root via cibadmin on ha01

2 nodes configured
3 resources configured

Online: [ ha01 ha02 ]

Full list of resources:

 myapc  (stonith:fence_apc_snmp):       Stopped
 Resource Group: myGroup
     my_lvm     (ocf::heartbeat:LVM):   Started ha01
     my_fs      (ocf::heartbeat:Filesystem):    Started ha01

Failed Resource Actions:
* myapc_start_0 on ha01 'unknown error' (1): call=6, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 14:49:10 2020', queued=0ms, exec=13436ms
* myapc_start_0 on ha02 'unknown error' (1): call=32, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 11:38:46 2020', queued=0ms, exec=13425ms

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

この時点で、リソースを持つノードで共有ストレージがマウントされます。

[root@ha01 ~]#  mount | grep my_lv
/dev/mapper/my_vg-my_lv on /iscsi type ext4 (rw,relatime,seclabel,stripe=1024,data=ordered)
[root@ha01 ~]# ls -l /iscsi/
合計 16
-rw-r--r--. 1 root root     0  8月 13 14:18 hoge.piyo
drwx------. 2 root root 16384  8月 13 14:08 lost+found

フローティング IP アドレスリソースの作成

以下コマンドでフローティング IP アドレスリソースを作成します。

  • pcs resource create リソース名 IPaddr2 ip=IPアドレス cidr_netmask=プレフィックス --group リソースグループ名
[root@ha01 ~]# pcs resource create my_ip IPaddr2 ip=192.168.139.200 cidr_netmask=24 --group myGroup
Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPaddr2')

作成したリソースが起動していることを確認します。

[root@ha01 ~]# pcs status
Cluster name: my_cluster
Stack: corosync
Current DC: ha02 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Thu Aug 13 15:24:09 2020
Last change: Thu Aug 13 15:23:43 2020 by root via cibadmin on ha01

2 nodes configured
4 resources configured

Online: [ ha01 ha02 ]

Full list of resources:

 myapc  (stonith:fence_apc_snmp):       Stopped
 Resource Group: myGroup
     my_lvm     (ocf::heartbeat:LVM):   Started ha01
     my_fs      (ocf::heartbeat:Filesystem):    Started ha01
     my_ip      (ocf::heartbeat:IPaddr2):       Started ha01

Failed Resource Actions:
* myapc_start_0 on ha01 'unknown error' (1): call=6, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 14:49:10 2020', queued=0ms, exec=13436ms
* myapc_start_0 on ha02 'unknown error' (1): call=32, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 11:38:46 2020', queued=0ms, exec=13425ms

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

以上でリソースの作成は完了です。

動作確認

フローティング IP アドレスへの疎通確認

クラスタ外の端末からフローティング IP アドレスへ ping を打ってみます。

C:\WINDOWS\system32>ping 192.168.139.200

192.168.139.200 に ping を送信しています 32 バイトのデータ:
192.168.139.200 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.139.200 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.139.200 からの応答: バイト数 =32 時間 <1ms TTL=64
192.168.139.200 からの応答: バイト数 =32 時間 <1ms TTL=64

192.168.139.200 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 0ms、最大 = 0ms、平均 = 0ms

疎通確認ができました。

ボリュームグループの操作権限確認

ha01 がリソースグループを持っている状態で、ha02 にて共有ストレージをマウントできるかを確認します。

[root@ha02 ~]# mount /dev/my_vg/my_lv /iscsi
mount: special device /dev/my_vg/my_lv does not exist

設計の通り、マウントできない状態であることが確認できます。

フェイルオーバー確認

クラスタノード ha01 を standby 状態にして、リソースが ha02 に移動することを確認します。

[root@ha01 ~]# pcs cluster standby
[root@ha01 ~]# pcs status
Cluster name: my_cluster
Stack: corosync
Current DC: ha02 (version 1.1.21-4.el7-f14e36fd43) - partition with quorum
Last updated: Thu Aug 13 15:31:53 2020
Last change: Thu Aug 13 15:31:43 2020 by root via cibadmin on ha01

2 nodes configured
4 resources configured

Node ha01: standby
Online: [ ha02 ]

Full list of resources:

 myapc  (stonith:fence_apc_snmp):       Stopped
 Resource Group: myGroup
     my_lvm     (ocf::heartbeat:LVM):   Started ha02
     my_fs      (ocf::heartbeat:Filesystem):    Started ha02
     my_ip      (ocf::heartbeat:IPaddr2):       Started ha02

Failed Resource Actions:
* myapc_start_0 on ha01 'unknown error' (1): call=6, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 14:49:10 2020', queued=0ms, exec=13436ms
* myapc_start_0 on ha02 'unknown error' (1): call=32, status=Error, exitreason='',
    last-rc-change='Thu Aug 13 11:38:46 2020', queued=0ms, exec=13425ms

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled

各リソースが ha02 に移動していることが確認できます。

ha01 のマウント状況です。共有ストレージがアンマウントされています。

[root@ha01 ~]# mount | grep my_lv
[root@ha01 ~]#
[root@ha01 ~]# ls -l /iscsi/
合計 0

ha02 のマウント状況です。共有ストレージがマウントされています。

[root@ha02 ~]# mount | grep my_lv
/dev/mapper/my_vg-my_lv on /iscsi type ext4 (rw,relatime,seclabel,stripe=1024,data=ordered)
[root@ha02 ~]# ls -l /iscsi/
合計 16
-rw-r--r--. 1 root root     0  8月 13 14:18 hoge.piyo
drwx------. 2 root root 16384  8月 13 14:08 lost+found

以上です。

参考資料

第3章 Red Hat High Availability クラスターのアクティブ/パッシブな NFS サーバー Red Hat Enterprise Linux 7 | Red Hat Customer Portal
The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.

―――――――――――――

タイトルとURLをコピーしました