第8章 Red Hat High Availability クラスターでのアクティブ/アクティブ Samba サーバーの設定

Red Hat High Availability Add-On は、アクティブ/アクティブクラスター設定で Samba を設定するためのサポートを提供します。次の例では、2 ノードの RHEL クラスターでアクティブ/アクティブ Samba サーバーを設定します。

Samba のサポートポリシーについては、Red Hat Customer Portal の RHEL High Availability のサポートポリシー - ctdb 一般ポリシー および RHEL 復元ストレージのサポートポリシー - 他のプロトコルを介した gfs2 コンテンツのエクスポート を参照してください。

アクティブ/アクティブクラスターで Samba を設定するには:

  1. GFS2 ファイルシステムとそれに関連するクラスターリソースを設定します。
  2. クラスターノードで Samba を設定します。
  3. Samba クラスターリソースを設定します。
  4. 設定した Samba サーバーをテストします。

8.1. 高可用性クラスターでの Samba サービス用の GFS2 ファイルシステムの設定

Pacemaker クラスターでアクティブ/アクティブ Samba サービスを設定する前に、クラスターの GFS2 ファイルシステムを設定します。

前提条件

  • ノードごとにフェンシングが設定された 2 ノードの Red Hat High Availability クラスター
  • 各クラスターノードで利用可能な共有ストレージ
  • 各クラスターノードの AppStream チャネルと Resilient Storage チャネルへのサブスクリプション

Pacemaker クラスターの作成とクラスターのフェンシングの設定については、Pacemaker を使用した Red Hat High Availability クラスターの作成 を参照してください。

手順

  1. クラスター内の両方のノードで、次の初期設定手順を実行します。

    1. システムアーキテクチャーに対応する Resilient Storage のリポジトリーを有効にします。たとえば、x86_64 システムの Resilient Storage リポジトリーを有効にするには、次の subscription-manager コマンドを入力します。

      # subscription-manager repos --enable=rhel-9-for-x86_64-resilientstorage-rpms

      Resilient Storage リポジトリーは、High Availability リポジトリーのスーパーセットです。Resilient Storage リポジトリーを有効にする場合は、High Availability リポジトリーを有効にする必要はありません。

    2. lvm2-lockdgfs2-utils、および dlm パッケージをインストールします。

      # yum install lvm2-lockd gfs2-utils dlm
    3. /etc/lvm/lvm.conf ファイルの use_lvmlockd 設定オプションを use_lvmlockd=1 に設定します。

      ...
      
      use_lvmlockd = 1
      
      ...
  2. クラスター内の 1 つのノードで、Pacemaker のグローバルパラメーター no-quorum-policyfreeze に設定します。

    注記

    デフォルトでは、no-quorum-policy の値は stop に設定され、定足数が失われると、残りのパーティションのリソースがすべて即座に停止されます。通常、このデフォルト設定は最も安全なオプションで最適なおプションですが、ほとんどのリソースとは異なり、GFS2 が機能するにはクォーラムが必要です。クォーラムが失われると、GFS2 マウントを使用したアプリケーション、GFS2 マウント自体の両方が正しく停止できません。クォーラムなしでこれらのリソースを停止しようとすると失敗し、最終的にクォーラムが失われるたびにクラスター全体がフェンスされます。

    この状況に対処するには、GFS2 の使用時の no-quorum-policyfreeze に設定します。この設定では、クォーラムが失われると、クォーラムが回復するまで残りのパーティションは何もしません。

    [root@z1 ~]# pcs property set no-quorum-policy=freeze
  3. dlm リソースをセットアップします。これは、クラスター内で GFS2 ファイルシステムを設定するために必要な依存関係です。この例では、dlm リソースを作成し、リソースグループ locking に追加します。以前にクラスターのフェンシングを設定していない場合、この手順は失敗し、pcs status コマンドはリソース障害メッセージを表示します。

    [root@z1 ~]# pcs resource create dlm --group locking ocf:pacemaker:controld op monitor interval=30s on-fail=fence
  4. リソースグループがクラスターの両方のノードでアクティブになるように、locking リソースグループのクローンを作成します。

    [root@z1 ~]# pcs resource clone locking interleave=true
  5. locking リソースグループの一部として lvmlockd リソースを設定します。

    [root@z1 ~]# pcs resource create lvmlockd --group locking ocf:heartbeat:lvmlockd op monitor interval=30s on-fail=fence
  6. 共有デバイス /dev/vdb に物理ボリュームと共有ボリュームグループを作成します。この例では、共有ボリュームグループ csmb_vg を作成します。

    [root@z1 ~]# pvcreate /dev/vdb
    [root@z1 ~]# vgcreate -Ay --shared csmb_vg /dev/vdb
    Volume group "csmb_vg" successfully created
    VG csmb_vg starting dlm lockspace
    Starting locking.  Waiting until locks are ready
  7. クラスター内の 2 番目のノードで以下を実行します。
  8. lvm.conf ファイルの use_devicesfile = 1 パラメーターでデバイスファイルの使用が有効になっている場合は、クラスター内の 2 番目のノードのデバイスファイルに共有デバイスを追加します。この機能はデフォルトで有効化されています。

    [root@z2 ~]# lvmdevices --adddev /dev/vdb
    1. 共有ボリュームグループのロックマネージャーを起動します。

      [root@z2 ~]# vgchange --lockstart csmb_vg
        VG csmb_vg starting dlm lockspace
        Starting locking.  Waiting until locks are ready...
  9. クラスター内の 1 つのノードで論理ボリュームを作成し、CTDB が内部ロックのために排他的に使用する GFS2 ファイルシステムでボリュームをフォーマットします。デプロイメントで複数の共有をエクスポートする場合でも、クラスター内に必要なファイルシステムは 1 つだけです。

    mkfs.gfs2 コマンドの -t オプションでロックテーブル名を指定する場合は、指定する clustername:filesystemname の最初の要素がクラスターの名前と一致していることを確認してください。この例では、クラスター名は my_cluster です。

    [root@z1 ~]# lvcreate -L1G -n ctdb_lv csmb_vg
    [root@z1 ~]# mkfs.gfs2 -j3 -p lock_dlm -t my_cluster:ctdb /dev/csmb_vg/ctdb_lv
  10. Samba で共有される GFS2 ファイルシステムごとに論理ボリュームを作成し、そのボリュームを GFS2 ファイルシステムでフォーマットします。この例では、単一の GFS2 ファイルシステムと Samba 共有を作成しますが、複数のファイルシステムと共有を作成できます。

    [root@z1 ~]# lvcreate -L50G -n csmb_lv1 csmb_vg
    [root@z1 ~]# mkfs.gfs2 -j3 -p lock_dlm -t my_cluster:csmb1 /dev/csmb_vg/csmb_lv1
  11. LVM_Activate リソースをセットアップして、必要な共有ボリュームがアクティブ化されるようにします。この例では、LVM_Activate リソースをリソースグループ shared_vg の一部として作成し、そのリソースグループのクローンを作成して、クラスター内のすべてのノードで実行されるようにします。

    必要な順序の制約を設定する前にリソースが自動的に開始されないように、リソースを無効にして作成します。

    [root@z1 ~]# pcs resource create --disabled --group shared_vg ctdb_lv ocf:heartbeat:LVM-activate lvname=ctdb_lv vgname=csmb_vg activation_mode=shared vg_access_mode=lvmlockd
    [root@z1 ~]# pcs resource create --disabled --group shared_vg csmb_lv1 ocf:heartbeat:LVM-activate lvname=csmb_lv1 vgname=csmb_vg activation_mode=shared vg_access_mode=lvmlockd
    [root@z1 ~]# pcs resource clone shared_vg interleave=true
  12. shared_vg リソースグループのメンバーの前に、locking リソースグループのすべてのメンバーを開始するように、順序制約を設定します。

    [root@z1 ~]# pcs constraint order start locking-clone then shared_vg-clone
    Adding locking-clone shared_vg-clone (kind: Mandatory) (Options: first-action=start then-action=start)
  13. LVM-activate リソースを有効にします。

    [root@z1 ~]# pcs resource enable ctdb_lv csmb_lv1
  14. クラスター内の 1 つのノードで、次の手順を実行して、必要な Filesystem リソースを作成します。

    1. 以前に LVM ボリュームに設定した GFS2 ファイルシステムを使用して、クローンリソースとして Filesystem リソースを作成します。これにより、Pacemaker がファイルシステムをマウントおよび管理するように設定されます。

      注記

      このファイルシステムは Pacemaker のクラスターリソースとして管理されるため、/etc/fstab ファイルには追加しないでください。options=options を使用して、リソース設定の一部としてマウントオプションを指定できます。すべての設定オプションを確認する場合は、pcs resource describe Filesystem コマンドを実行します。

      [root@z1 ~]# pcs resource create ctdb_fs Filesystem device="/dev/csmb_vg/ctdb_lv" directory="/mnt/ctdb" fstype="gfs2" op monitor interval=10s on-fail=fence clone interleave=true
      [root@z1 ~]# pcs resource create csmb_fs1 Filesystem device="/dev/csmb_vg/csmb_lv1" directory="/srv/samba/share1" fstype="gfs2" op monitor interval=10s on-fail=fence clone interleave=true
    2. 共有ボリュームグループ shared_vg の起動後に Pacemaker がファイルシステムをマウントするように、順序制約を設定します。

      [root@z1 ~]# pcs constraint order start shared_vg-clone then ctdb_fs-clone
      Adding shared_vg-clone ctdb_fs-clone (kind: Mandatory) (Options: first-action=start then-action=start)
      [root@z1 ~]# pcs constraint order start shared_vg-clone then csmb_fs1-clone
      Adding shared_vg-clone csmb_fs1-clone (kind: Mandatory) (Options: first-action=start then-action=start)