Ubuntu 24.04
Sponsored Link

Pacemaker : Set Cluster Resource (NFS)2024/07/23

 

Set NFS Cluster Resource and Configure Active/Passive NFS Server.

This example is based on the environment like follows.
  1) Basic Cluster setting is done
  2) Fence Device is configured
  3) LVM shared storage is configured

                       +--------------------+
                       | [  ISCSI Target  ] |
                       |    dlp.srv.world   |
                       +----------+---------+
                         10.0.0.30|
                                  |
+----------------------+          |          +----------------------+
| [  Cluster Node#1  ] |10.0.0.51 | 10.0.0.52| [  Cluster Node#2  ] |
|   node01.srv.world   +----------+----------+   node02.srv.world   |
|      NFS Server      |          |          |      NFS Server      |
+----------------------+          |          +----------------------+
                            vip:10.0.0.60
                                  |
                       +----------+---------+
                       | [   NFS Clients  ] |
                       |                    |
                       +--------------------+

[1] On all Cluster Nodes, Install NFS tools.
root@node01:~#
apt -y install nfs-kernel-server nfs-common resource-agents-extra
[2] On a Node that LVM shared storage is active in Cluster, Add NFS resource.
[/dev/vg_ha/lv_ha] on the example below is LVM shared storage.
# current status

root@node01:~#
pcs status

Cluster name: ha_cluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node01.srv.world (version 2.1.6-6fdc9deea29) - partition with quorum
  * Last updated: Tue Jul 23 03:59:32 2024 on node01.srv.world
  * Last change:  Tue Jul 23 03:58:31 2024 by root via cibadmin on node01.srv.world
  * 2 nodes configured
  * 2 resource instances configured

Node List:
  * Online: [ node01.srv.world node02.srv.world ]

Full List of Resources:
  * scsi-shooter        (stonith:fence_scsi):    Started node01.srv.world
  * Resource Group: ha_group:
    * lvm_ha    (ocf:heartbeat:LVM-activate):    Started node01.srv.world

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

# create a directory for NFS filesystem

root@node01:~#
mkdir /home/nfs-share
# set Filesystem resource
# [nfs_share] : any name
# [device=***] : shared storage
# [directory=***] : mount point
# [group ***] : set in the same group with shared storage

root@node01:~#
pcs resource create nfs_share ocf:heartbeat:Filesystem device=/dev/vg_ha/lv_ha directory=/home/nfs-share fstype=ext4 group ha_group --future
root@node01:~#
pcs status

Cluster name: ha_cluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node01.srv.world (version 2.1.6-6fdc9deea29) - partition with quorum
  * Last updated: Tue Jul 23 04:06:22 2024 on node01.srv.world
  * Last change:  Tue Jul 23 04:05:40 2024 by root via cibadmin on node01.srv.world
  * 2 nodes configured
  * 3 resource instances configured

Node List:
  * Online: [ node01.srv.world node02.srv.world ]

Full List of Resources:
  * scsi-shooter        (stonith:fence_scsi):    Started node01.srv.world
  * Resource Group: ha_group:
    * lvm_ha    (ocf:heartbeat:LVM-activate):    Started node01.srv.world
    * nfs_share (ocf:heartbeat:Filesystem):      Started node01.srv.world

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

# mount automatically on a node that resources started

root@node01:~#
df -hT /home/nfs-share

Filesystem              Type  Size  Used Avail Use% Mounted on
/dev/mapper/vg_ha-lv_ha ext4  9.8G   24K  9.3G   1% /home/nfs-share

# set nfsserver resource
# [nfs_daemon] : any name
# [nfs_shared_infodir=***] : specify a directory that NFS server related files are located

root@node01:~#
pcs resource create nfs_daemon ocf:heartbeat:nfsserver nfs_shared_infodir=/home/nfs-share/nfsinfo nfs_no_notify=true group ha_group --future
# set IPaddr2 resource
# virtual IP address clients access to NFS service

root@node01:~#
pcs resource create nfs_vip ocf:heartbeat:IPaddr2 ip=10.0.0.60 cidr_netmask=24 group ha_group --future
root@node01:~#
pcs status

Cluster name: ha_cluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node01.srv.world (version 2.1.6-6fdc9deea29) - partition with quorum
  * Last updated: Tue Jul 23 04:09:11 2024 on node01.srv.world
  * Last change:  Tue Jul 23 04:09:04 2024 by root via cibadmin on node01.srv.world
  * 2 nodes configured
  * 5 resource instances configured

Node List:
  * Online: [ node01.srv.world node02.srv.world ]

Full List of Resources:
  * scsi-shooter        (stonith:fence_scsi):    Started node01.srv.world
  * Resource Group: ha_group:
    * lvm_ha    (ocf:heartbeat:LVM-activate):    Started node01.srv.world
    * nfs_share (ocf:heartbeat:Filesystem):      Started node01.srv.world
    * nfs_daemon        (ocf:heartbeat:nfsserver):       Started node01.srv.world
    * nfs_vip   (ocf:heartbeat:IPaddr2):         Started node01.srv.world

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
[3] On an active Node NFS filesystem mounted, set exportfs setting.
# create a directory for exportfs

root@node01:~#
mkdir -p /home/nfs-share/nfs-root/share01
# set exportfs resource
# [nfs_root] : any name
# [clientspec=*** options=*** directory=***] : exports setting
# [fsid=0] : root point on NFSv4

root@node01:~#
pcs resource create nfs_root ocf:heartbeat:exportfs clientspec=10.0.0.0/255.255.255.0 options=rw,sync,no_root_squash directory=/home/nfs-share/nfs-root fsid=0 group ha_group --future

# set exportfs resource

root@node01:~#
pcs resource create nfs_share01 ocf:heartbeat:exportfs clientspec=10.0.0.0/255.255.255.0 options=rw,sync,no_root_squash directory=/home/nfs-share/nfs-root/share01 fsid=1 group ha_group --future
root@node01:~#
pcs status

Cluster name: ha_cluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: node01.srv.world (version 2.1.6-6fdc9deea29) - partition with quorum
  * Last updated: Tue Jul 23 04:11:18 2024 on node01.srv.world
  * Last change:  Tue Jul 23 04:11:09 2024 by root via cibadmin on node01.srv.world
  * 2 nodes configured
  * 7 resource instances configured

Node List:
  * Online: [ node01.srv.world node02.srv.world ]

Full List of Resources:
  * scsi-shooter        (stonith:fence_scsi):    Started node01.srv.world
  * Resource Group: ha_group:
    * lvm_ha    (ocf:heartbeat:LVM-activate):    Started node01.srv.world
    * nfs_share (ocf:heartbeat:Filesystem):      Started node01.srv.world
    * nfs_daemon        (ocf:heartbeat:nfsserver):       Started node01.srv.world
    * nfs_vip   (ocf:heartbeat:IPaddr2):         Started node01.srv.world
    * nfs_root  (ocf:heartbeat:exportfs):        Started node01.srv.world
    * nfs_share01       (ocf:heartbeat:exportfs):        Started node01.srv.world

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

root@node01:~#
showmount -e

Export list for node01.srv.world:
/home/nfs-share/nfs-root         10.0.0.0/255.255.255.0
/home/nfs-share/nfs-root/share01 10.0.0.0/255.255.255.0
[4] Verify settings to access to virtual IP address with NFS from any client computer.
root@client:~#
mount -t nfs4 10.0.0.60:share01 /mnt

root@client:~#
df -hT /mnt

Filesystem         Type  Size  Used Avail Use% Mounted on
10.0.0.60:/share01 nfs4  9.8G     0  9.3G   0% /mnt
Matched Content