Forum Discussion

Ryan_Chun's avatar
Ryan_Chun
Level 2
16 years ago
Solved

VCS dependency question - Service group is not runninng on the intended node upon cluster startup.

Dear All,

I have a questions regarding the service group dependency.

I have two parent service group "Group1" and "Group2" . They are dependent on a child service group "ServerGroup1_DG" which has been configured as parallel service.

In the main.cf file, I have configured the service group "Group1" to be started on Node1 and service group "Group2" to be started on Node2. However, I don't know why the cluster do not start the service group "ServerGroup1_DG" on Node2 before starting the service group "Group2".

During the cluster startup, the cluster evaluated Node1 to be a target node for service group "Group2", and it went on to online the service group on Node1.

This is not the wanted behaviour. I would like to have the service group "Group1" running on Node1 and service group "Group2" running on Node2 when the cluster starts up.

Can anyone help to shed some light on how I can solve this problem? Thanks.

p/s: The VCS version is 5.0 on solaris platform.

main.cf:-

group Group1 (
    SystemList = { Node1 = 1, Node2 = 2 }
    AutoStartList = { Node1, Node2 }
    )
    requires group ServerGroup1_DG online local firm

group Group2 (
    SystemList = { Node1 = 2, Node2 = 1 }
    AutoStartList = { Node2, Node1 }
    )
    requires group ServerGroup1_DG online local firm

group ServerGroup1_DG (
    SystemList = { Node1 = 0, Node2 = 1 }
    AutoFailOver = 0
    Parallel = 1
    AutoStartList = { Node1, Node2 }
    )

    CFSMount cfsmount2 (
        Critical = 0
        MountPoint = "/var/opt/xxxx/ServerGroup1"
        BlockDevice = "/dev/vx/dsk/xxxxdg/vol01"
        MountOpt @Node1 = "cluster"
        MountOpt @Node2 = "cluster"
        NodeList = { Node1, Node2 }
        )

    CVMVolDg cvmvoldg2 (
        Critical = 0
        CVMDiskGroup = xxxxdg
        CVMActivation @Node1 = sw
        CVMActivation @Node2 = sw
        )

    requires group cvm online local firm
    cfsmount2 requires cvmvoldg2

Engine Log:-

2010/06/25 16:05:47 VCS NOTICE V-16-1-10447 Group ServerGroup1_DG is online on system Node1
2010/06/25 16:05:47 VCS WARNING V-16-1-50045 Initiating online of parent group Group3, PM will select the best node
2010/06/25 16:05:47 VCS WARNING V-16-1-50045 Initiating online of parent group Group2, PM will select the best node
2010/06/25 16:05:47 VCS WARNING V-16-1-50045 Initiating online of parent group Group1, PM will select the best node
2010/06/25 16:05:47 VCS INFO V-16-1-10493 Evaluating Node2 as potential target node for group Group3
2010/06/25 16:05:47 VCS INFO V-16-1-10163 Group dependency is not met if group Group3 goes online on system Node2
2010/06/25 16:05:47 VCS INFO V-16-1-10493 Evaluating Node1 as potential target node for group Group3
2010/06/25 16:05:47 VCS INFO V-16-1-10493 Evaluating Node2 as potential target node for group Group2
2010/06/25 16:05:47 VCS INFO V-16-1-10163 Group dependency is not met if group Group2 goes online on system Node2
2010/06/25 16:05:47 VCS INFO V-16-1-10493 Evaluating Node1 as potential target node for group Group2
2010/06/25 16:06:15 VCS NOTICE V-16-1-10447 Group ServerGroup1_DG is online on system Node2

Regards,
Ryan



  • Hello Ryan,

    Sounds interesting, it seems to be a timing issue to me.... If we carefully see the engine log above, points to notice are:

    a) Group ServerGroup1_DG is online on Node 1  (Not on Node 2 yet)
    b) As soon ServerGroup1_DG went online, by default VCS is attempting to online the parent groups
    c) Once above attempt of online is done, now ServerGroup1_DG is onlined on Node 2

    So what I understand is happening is, as soon ServerGroup1_DG is onlined on node 1, by default parent groups are attempted online, In this process only, PM is selecting the best node & thus taking a decision to bring group2 online on node 1 only.

    So, to solve this, we need to introduce some kind of delay so that parent group is not attempted to bring online unless the parallel group comes online on all the nodes in the cluster...... Two possible solution I can think here is:

    -- Use triggers, you would like to configure a pre-online trigger, check sample_triggers in your server under /opt/VRTSvcs/bin/sample_triggers/      folder. To use PreOnline trigger, you will need to set  PreOnline=1 for your parent groups. I believe reading the sample trigger would give you a fair idea on how to use this.

    Or alternatively, (little tedious)

    -- You can add a "RemoteGroup" resource in Group1 & 2, Attributes of this should be "onlineonly" & " ServerGroup1_DG" .this remote group should like as below in resource dependency tree. What will happen with this one is, none of the resources will start onlining unless remotegroup resource is onlined & for remotegroup to be online, the group which you have defined as attribute (Servergroup1_dg) should be onlined....

    Hope this helps..

    Gaurav

2 Replies


  • Hello Ryan,

    Sounds interesting, it seems to be a timing issue to me.... If we carefully see the engine log above, points to notice are:

    a) Group ServerGroup1_DG is online on Node 1  (Not on Node 2 yet)
    b) As soon ServerGroup1_DG went online, by default VCS is attempting to online the parent groups
    c) Once above attempt of online is done, now ServerGroup1_DG is onlined on Node 2

    So what I understand is happening is, as soon ServerGroup1_DG is onlined on node 1, by default parent groups are attempted online, In this process only, PM is selecting the best node & thus taking a decision to bring group2 online on node 1 only.

    So, to solve this, we need to introduce some kind of delay so that parent group is not attempted to bring online unless the parallel group comes online on all the nodes in the cluster...... Two possible solution I can think here is:

    -- Use triggers, you would like to configure a pre-online trigger, check sample_triggers in your server under /opt/VRTSvcs/bin/sample_triggers/      folder. To use PreOnline trigger, you will need to set  PreOnline=1 for your parent groups. I believe reading the sample trigger would give you a fair idea on how to use this.

    Or alternatively, (little tedious)

    -- You can add a "RemoteGroup" resource in Group1 & 2, Attributes of this should be "onlineonly" & " ServerGroup1_DG" .this remote group should like as below in resource dependency tree. What will happen with this one is, none of the resources will start onlining unless remotegroup resource is onlined & for remotegroup to be online, the group which you have defined as attribute (Servergroup1_dg) should be onlined....

    Hope this helps..

    Gaurav