NFS Service Group

I am looking for a help on configuring two NFS Service Groups (Failover) for a two node VCS 5.0 MP3 cluster on AIX 5.3 TL11. I am using VxVM and VxFS as volume manager and filesystem for my setup. Requirement for the Service Groups are as below:

ServiceGroup1 to contain:

1. Two NFS share filesystems made on two independent VxVM volumes (DG1).

ServiceGroup2 to contain:

1. Two NFS share filesystems made on two independent VxVM volumes (DG2).

Would anyone be able to guide me to a good configuration of all resources required for these service groups, just for your information both service groups may run on a single node at any time. VCS Bundle Agent guide is quite confising.

Symantec recommends that you configure only one NFS resource in a service group on a node. If you have more than one service group that uses the NFS resource, the other service groups can use a Proxy resource. The Proxy resource can point to the NFS resource in the first group. This use of the Proxy resource prevents redundant monitoring of the NFS daemons on the same system.

Gaurav

PS: If you are happy with the answer provided, please mark the post as solution. You can do so by clicking link "Mark as Solution" below the answer provided.

I was going through the docs suggests above, I have some confusion in configuring Proxy resource. I would explain it as below (Relevant resources only have been mentioned, Both service groups are failover service groups):

Service Group - SG1:

NFS test_nfs (

Nservers = 20

)

The above service group (SG1) contains an NFS resource among other resources which I want to use in the 2nd Service Group (SG2) by using a proxy resource. Please help me configuring this resource assuming that the resources may be running on different hosts or on the same host at any point of time.

Service Group - SG2:

Proxy Proxy_NFS (
TargetResName = test_nfs

)

Will this be ok or I will have to add some other attributes like - "TargetSysName". If so then what should be the value for "TargetSysName", assuming the server names - S1 and S2 on which these service groups will run.

I just missed a question above, is there a way to refer to a resource name in a different service group in VCS. For example in the above case if I write "TargetResName = test_nfs" to refer to Resource named - "test_nfs" in SG1, will VCS understand or it should contain the service group name somewhere as well.

Resource names are unique within the cluster - so it is sufficient to specifiy test_nfs as the TargetResName for the Proxy in SG2 (ie: you don't need to specify the group name for the Proxy resource).

Note: if it's possible that SG1 and SG2 may run on separate nodes, it may be better to create the NFS group in a separate Parallel service group (ie: so they can run independently of each other); however if SG1 and SG2 are meant to run on the same node at all times, then you just need to set up the service group dependencies correctly.

Not sure why you are getting this issue, but one thing I did note is that your NFS resource is non-critical in SG1, but the Proxy to it in SG is critical, but presumbly, both service groups should react the same to nfsd failure, so they should both have the same critical settings. I would use a separate service group for NFS and NIC resources as follows:

include "types.cf"

cluster TEST_CLUS (

UserNames = { admin = ePQiPKQStlQQoYQkPN }

Administrators = { admin }

UseFence = SCSI3

)

system SYS1 (

)

system SYS2 (

)

group common (

SystemList = { SYS1 = 0, SYS2 = 1 }

AutoStartList = { SYS1, SYS2 }

AutoFailOver = 0

Parallel = 1

)

NFS NFS_NFS (

Critical = 0

)

NIC NFS_NIC (

Critical = 0

Device @AIX-8 = en0

Device @AIX-9 = en1

NetworkHosts = { "102.10.5.1" }

)

Phantom phantom (

Critical = 0

)

group SG1 (

SystemList = { SYS1 = 0, SYS2 = 1 }

AutoStartList = { SYS1, SYS2 }

)

DiskGroup dg01 (

DiskGroup = dg01

)

IP dNFS_IP (

Critical = 0

Device @SYS1 = en0

Device @SYS2 = en1

Address = "102.10.5.34"

NetMask = "255.255.254.0"

)

Mount dNFS_Mount1 (

Critical = 0

MountPoint = "/11"

BlockDevice = "/dev/vx/dsk/dg01/vol1"

FSType = vxfs

FsckOpt = "-y"

)

Mount dNFS_Mount2 (

Critical = 0

MountPoint = "/12"

BlockDevice = "/dev/vx/dsk/dg01/vol2"

FSType = vxfs

FsckOpt = "-y"

)

Proxy dProxy_NFS (

TargetResName = NFS_NFS

)

Proxy dProxy_NIC (

TargetResName = NFS_NIC

)

Share dNFS_Share1 (

Critical = 0

PathName = "/11"

Options = rw

)

Share dNFS_Share2 (

Critical = 0

PathName = "/12"

Options = rw

)

dNFS_IP requires dNFS_NIC

dNFS_IP requires dNFS_Share1

dNFS_IP requires dNFS_Share2

dNFS_Mount1 requires dg01

dNFS_Mount2 requires dg01

dNFS_Share1 requires dNFS_Mount1

dNFS_Share1 requires dNFS_NFS

dNFS_Share2 requires dNFS_Mount2

dNFS_Share2 requires dNFS_NFS

group SG2 (

SystemList = { SYS1 = 0, SYS2 = 1 }

AutoStartList = { SYS1, SYS2 }

)

DiskGroup dg02 (

DiskGroup = dg02

)

IP sNFS_IP (

Critical = 0

Device @SYS1 = en0

Device @SYS = en1

Address = "102.10.5.36"

NetMask = "255.255.254.0"

)

Mount sNFS_Mount1 (

Critical = 0

MountPoint = "/21"

BlockDevice = "/dev/vx/dsk/dg02/vol1"

FSType = vxfs

FsckOpt = "-y"

)

Mount sNFS_Mount2 (

Critical = 0

MountPoint = "/22"

BlockDevice = "/dev/vx/dsk/dg02/vol2"

FSType = vxfs

FsckOpt = "-y"

)

Proxy sProxy_NIC (

TargetResName = NFS_NIC

)

Proxy sProxy_NFS (

TargetResName = NFS_NFS

)

Share sNFS_Share1 (

Critical = 0

PathName = "/21"

Options = rw

)

Share sNFS_Share2 (

Critical = 0

PathName = "/22"

Options = rw

)

sNFS_IP requires sNFS_NIC

sNFS_IP requires sNFS_Share1

sNFS_IP requires sNFS_Share2

sNFS_Mount1 requires dg02

sNFS_Mount2 requires dg02

sNFS_Share1 requires sNFS_Mount1

sNFS_Share1 requires sProxy_NFS

sNFS_Share2 requires sNFS_Mount2

sNFS_Share2 requires sProxy_NFS

Note, resouces in parallel common SG should be non-critical and the required critical settings you require should be set on the Proxy resources.

"A critical resource indicates the service group is faulted when the resource, or any resource it depends on, faults."

So, on SYS1 the proxy resource looks for the status of dNFS_NFS in SG1 - this is offline (since it's running on SYS2), so this means the proxy is offline. However, because the proxy resource is critical, this causes SG2 to be marked faulted on SYS1. This is expected behaviour, as the target resource is offline on SYS1.

As mentioned earlier, the current configuration has the limitation that SG2 will not be able to online on a separate system to SG1 (ie: you wouldn't be able to have SG1 & SG2 running on separate nodes, eg: SG1 on SYS1 and SG2 on SYS2). If you do want to be able to run the groups on separate nodes, you will need to configure the NFS resource in a parallel group. See the following technote for an example (refers to old VCS versions, but the concept is the same)

NFS type is OnOnly and therefore it can be online on both systems, but the fact that NFS resource is not in a parallel SG, probably is the route of the issue.

The nfsd is usually started by Solaris on boot-up and therefore in the current configuration, when SG1 gets probed it should detect NFS resource is online on SYS1 and report it as online, even though it is online on SYS2 also, but if the Proxy in SG2 gets probed before NFS gets probed, then maybe Proxy reports offline.

In this configuration VCS should allow SG2 to be able to be online on a separate system to SG1 as VCS should allow NFS OnOnly resource to be online on both nodes at the same time and likewise for the Proxy resource in SG2 that points to the NFS resource.

Nevertheless, you still should configure a parallel SG as in my last post, as if for instance nfsd is NOT started by the O/S on SYS1, then VCS will NOT start it as SG1 is a failover SG which is online on SYS2, so VCS will NOT initiate the online (and for SG2, it can initiate an online as it is only a Proxy)