Forum Discussion

Jamesb_china's avatar
12 years ago

diskgroup does not start on secondary host

HI All:

I configure a single vcs cluster with vvr.  I save the configuration on the following pictures

Screenshot from 2013-06-21 16:39:36.png

 

Screenshot from 2013-06-21 16:39:44.png

Screenshot from 2013-06-21 16:39:54.png

 

As you see on these pictures, I configure  a service named apache2 using the RVGPrimary of vvrgroup, and set the relation between two service groups with command:

>hagrp -link apache2 vvrgrp online local hard

 
All the service group and resource take online successfully. But on the secondary node of VVR, the disk group is exported and the replication does not occur.
 
vcs2:/var/VRTSvcs/log # vradmin -g data_dg repstatus rvg_b
Replicated Data Set: rvg_b
Primary:
  Host name:                  192.168.100.112
  RVG name:                   rvg_b
  DG name:                    data_dg
  RVG state:                  enabled for I/O
  Data volumes:               1
  VSets:                      0
  SRL name:                   srl_b
  SRL size:                   1.00 G
  Total secondaries:          1
Config Errors:
 192.168.100.111:            disk group missing
 
 
Is there anything wrong in my configuration ?
>cat main.cf
include "OracleASMTypes.cf"
include "types.cf"
include "Db2udbTypes.cf"
include "OracleTypes.cf"
include "SybaseTypes.cf"
 
cluster vcs (
UserNames = { admin = aHGcEBdBGeFBgJHbHFgGIg }
ClusterAddress = "192.168.4.100"
Administrators = { admin }
)
 
system vcs1 (
)
 
system vcs2 (
)
 
group ClusterService (
SystemList = { vcs1 = 0, vcs2 = 1 }
AutoStartList = { vcs1, vcs2 }
OnlineRetryLimit = 3
OnlineRetryInterval = 120
)
 
IP webip (
Device = eth0
Address = "192.168.4.100"
NetMask = "255.255.255.0"
)
 
NIC csgnic (
Device = eth0
)
 
webip requires csgnic
 
 
// resource dependency tree
//
// group ClusterService
// {
// IP webip
//    {
//    NIC csgnic
//    }
// }
 
 
group apache2 (
SystemList = { vcs1 = 0, vcs2 = 1 }
)
 
Application httpd2 (
StartProgram = "/etc/init.d/apache2 start"
StopProgram = "/etc/init.d/apache2 stop"
PidFiles = { "/var/run/httpd2.pid" }
)
 
IP ip_res (
Device = eth0
Address = "192.168.4.200"
NetMask = "255.255.255.0"
)
 
Mount appmount (
MountPoint = "/srv/www/htdocs"
BlockDevice = "/dev/vx/dsk/data_dg/data_volume"
FSType = vxfs
FsckOpt = "-n"
)
 
RVGPrimary DataRVG_pri (
RvgResourceName = DataRVG
)
 
requires group vvrgrp online local hard
appmount requires DataRVG_pri
httpd2 requires appmount
httpd2 requires ip_res
 
 
// resource dependency tree
//
// group apache2
// {
// Application httpd2
//    {
//    IP ip_res
//    Mount appmount
//        {
//        RVGPrimary DataRVG_pri
//        }
//    }
// }
 
 
group vvrgrp (
SystemList = { vcs1 = 0, vcs2 = 1 }
AutoStartList = { vcs1, vcs2 }
)
 
DiskGroup DataDG (
DiskGroup = data_dg
)
 
NIC vvrnic (
Device = eth1
)
 
RVG DataRVG (
RVG = rvg_b
DiskGroup = data_dg
)
 
DataRVG requires DataDG
DataRVG requires vvrnic
 
 
// resource dependency tree
//
// group vvrgrp
// {
// RVG DataRVG
//    {
//    DiskGroup DataDG
//    NIC vvrnic
//    }
// }
 

 

  • Hi James,

    You are missing an IP resource in your VVR service group for replication to use.  In a typical GCO configuration, the VVR service group has an IP resource with its own virtual IP, then replication is configured to use this IP address for that site.  When the VVR service fails over to another node the virtual IP used for replication also fails over.

    What is not clear is where your VVR secondary is located.  If it is somewhere out side of this cluster then you will be fine by adding an IP resource and configuring replication to use it for both nodes in this cluster.

    If however, this is a Replicated Data Cluster and you are replicating the data between vcs1 and vcs2, then the service group need to be altered to a Parallel or Hybird group with an IP resource configured to have unique IPs for each node. and repilclation needs to be setup to use one IP for the VVR primary and the other for the VVR secondary.

    Thank you,

    Wally

  • I use the static dedicated IP 192.168.100.111(vcs1)/112(vcs2)   as the replication link of vvr. Does VVR must use the virtual IP address as the replication link?

     

     

  • You do not need to use virtual IPs, but you must use a hybrid or parallel group for the vvrgrp.  If you are replicating between vcs1 and vcs2 then diskgroup needs to be imported on both nodes, but as vvrgrp is configured as a failover group it is only online on one node.

    I don't think you can change the "Parallel" attribute for a service group that contains resources, so easiest way is to stop VCS and add "Parallel = 1" to service group definition so you have:

     

    group vvrgrp (
    SystemList = { vcs1 = 0, vcs2 = 1 }
    AutoStartList = { vcs1, vcs2 }
    Parallel = 1
    )

    If you use a parallel group with static IPs then this makes it more difficult to add more nodes in the future, so if it is possible you may adds more nodes in the future, then it is better to use virtual IPs for replication and create a hybrid service group (Parallel = 2 which also requires SystemZones to be setup)

    Mike