以四节点为例
1. 四套有效的产品License,包含HA、GCO、VVR功能
2. 配置DNS,至少三个虚拟IP,Web VIP(可和GCO的心跳IP共用)、
SQL VIP、VVR VIP每个节点加入域中
3. 安装对应选件,至少包含以下三个选件
◆
VERITAS Volume Replicator (VVR)
◆ VERITAS Global Clustering Option
◆ VERITAS Cluster
Server Enterprise Agent for Microsoft SQL
4. 配置每个站点的HA,创建ClusterService
服务组
5. 利用VEA在两个站点分别以相同的方法创建相同大小、相同名字的SQL Server数据卷、VVR日志卷、SQL Server注册表卷(不是必须,建议创建)
6. 每个节点以同样的方法安装SQL2K+SP3a
7. 将SQL Server所有主机上的所有服务改为手工启动
8. 在两个站点创建SQL Server服务组,确信在站点内部两节点之间切换SQL Server没问题,然后offline两个SQL Server服务组
9. 在VCS Java GUI界面手工分别添加两个站点VVR的VIP
10. 在主站点Online三个资源,VVR VIP、SQL DG、SQL Mount
11. 在备站点Online一个资源,VVR VIP
12. 创建RDS,等到同步完
13. 删除先前创建的VVR VIP,等会创建RVG SG的时候再启用
14. 在两个站点创建VVR RVG Service Group,选择Start>Programs>VERITAS>VERITAS Cluster Server>Volume Replicator Agent Configuration Wizard
15. 配置WAC,运行VCW->选Edit Existing Cluster->选Configure ClusterService Options->选GCO Option,成功配置完后,在ClusterService组,你将看到增加了一个叫wac的Process
16. 配置GCO,在VCS Java GUI界面Edit->Add/Delete Remote Cluster输入Web VIP ,成功配置完后,校验心跳连接是否是alive,到命令行执行 hahb -display.查看state attribute,如下例:如果state是unknown,重新online 两个站点的ClusterService组,且添加心跳IP到DNS
C:\>hahb -display
#HB Attribute Scope Value
Icmp AYAInterval global 60
Icmp AYARetryLimit global 3
Icmp AYATimeout global 300
Icmp AgentState global ON
Icmp Arguments cluster40 10.196.83.32
Icmp CleanTimeout global 300
Icmp ClusterList global cluster40
Icmp InitTimeout global 300
Icmp LogDbg global
Icmp StartTimeout global 300
Icmp State cluster40 ALIVE
Icmp StopTimeout global 300
如果state显示unknown, offline ClusterService 服务组然后online.
17. 在VCS Java GUI界面Edit->Configure Global Groups,选择要转换成全局组的组名,成功配置完后,你将看到该组名图标上有个圆圈标记。记住只在一个站点配置就行
18. 在主站点创建用户数据库,将被复制到远端站点。
Primary main.cf
include "types.cf"
cluster cluster40 (
UserNames = { admin = HQRjQLqNRmRRpZRlQO }
ClusterAddress = "10.196.83.32"
Administrators = { admin }
CredRenewFrequency = 0
CounterInterval = 5
)
remotecluster srtpc (
ClusterAddress = "10.196.83.47"
)
heartbeat Icmp (
ClusterList = { srtpc }
Arguments @srtpc = { "10.196.83.47" }
)
system COMPAQ1 (
)
system COMPAQ2 (
)
group ClusterService (
SystemList = { COMPAQ1 = 0, COMPAQ2 = 1 }
UserStrGlobal = "LocalCluster@
https://10.196.83.32:8443;"
AutoStartList = { COMPAQ1, COMPAQ2 }
)
IP csg_ip (
Address = "10.196.83.32"
SubNetMask = "255.255.248.0"
MACAddress @COMPAQ1 = "00:50:8B

D:0D:F8"
MACAddress @COMPAQ2 = "00:50:8B

D:0E:15"
)
NIC csg_nic (
MACAddress @COMPAQ1 = "00:50:8B

D:0D:F8"
MACAddress @COMPAQ2 = "00:50:8B:DD:0E:15"
PingHostList = { "10.196.83.37" }
)
Process wac (
StartProgram @COMPAQ1 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wac.exe"
StartProgram @COMPAQ2 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wac.exe"
StopProgram @COMPAQ1 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wacstop.exe"
StopProgram @COMPAQ2 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wacstop.exe"
MonitorProgram @COMPAQ1 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wacmonitor.exe"
MonitorProgram @COMPAQ2 = "C:\\Program Files\\VERITAS\\Cluster Server\\bin\\wacmonitor.exe"
)
VRTSWebApp VCSweb (
AppName = vcs
InstallDir @COMPAQ1 = "C:\\Program Files\\VERITAS\\VRTSweb\\VERITAS"
InstallDir @COMPAQ2 = "C:\\Program Files\\VERITAS\\VRTSweb\\VERITAS"
)
csg_ip requires csg_nic
VCSweb requires csg_ip
wac requires csg_ip
// resource dependency tree
//
// group ClusterService
// {
// VRTSWebApp VCSweb
// {
// IP csg_ip
// {
// NIC csg_nic
// }
// }
// Process wac
// {
// IP csg_ip
// {
// NIC csg_nic
// }
// }
// }
group sql2k (
SystemList = { COMPAQ1 = 1, COMPAQ2 = 2 }
ClusterList = { cluster40 = 1, srtpc = 0 }
Authority = 1
)
IP sql2k-IP (
Address = "10.196.83.33"
SubNetMask = "255.255.248.0"
MACAddress @COMPAQ1 = "00-50-8B-DD-0D-F8"
MACAddress @COMPAQ2 = "00-50-8B-DD-0E-15"
)
Lanman sql2k-Lanman (
VirtualName = VSQL2K
IPResName = sql2k-IP
)
MSSearch sql2k-MSSearch (
AppName = SQLServer
)
MountV sql2k-MountV (
MountPath = "S:"
VolumeName = sqldata
VMDGResName = sql2k-VMDg
)
MountV sql2k-MountV-1 (
MountPath = "R:"
VolumeName = sqlreg
VMDGResName = sql2k-VMDg
)
NIC sql2k-NIC (
MACAddress @COMPAQ1 = "00-50-8B-DD-0D-F8"
MACAddress @COMPAQ2 = "00-50-8B-DD-0E-15"
)
RVGPrimary sql2k-RVGPrimary (
RvgResourceName = sqlrpsg-VvrRvg
)
RegRep sql2k-RegRep-MSSQL (
MountResName = sql2k-MountV-1
ReplicationDirectory = "\\sql2k-RegRep-MSSQL"
Keys = {
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\Providers",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\Replication",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\SQLServerAgent",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\Client" }
ExcludeKeys = {
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\Setup",
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSSQLServer\\SQLServerAgent\\Subsystems" }
)
RegRep sql2k-RegRep-MSSearch (
MountResName = sql2k-MountV-1
ReplicationDirectory = "\\sql2k-RegRep-MSSearch"
Keys = {
"HKLM\\Software\\Microsoft\\Search\\1.0\\Gathering
Manager\\Applications\\SQLServer",
"HKLM\\Software\\Microsoft\\Search\\1.0\\Gather\\Applications\\SQLServer",
"HKLM\\Software\\Microsoft\\Search\\1.0\\Applications\\Applications\\SQLServer",
"HKLM\\Software\\Microsoft\\Search\\1.0\\CatalogNames\\Applications\\SQLServer",
"HKLM\\Software\\Microsoft\\Search\\1.0\\Indexer\\Applications\\SQLServer",
"HKLM\\Software\\Microsoft\\Search\\1.0\\Databases\\Applications\\SQLServer" }
)
SQLServer2000 sql2k-SQLServer2000 (
LanmanResName = sql2k-Lanman
MountResName = sql2k-MountV
)
requires group sqlrpsg online local hard
sql2k-SQLServer2000 requires sql2k-Lanman
sql2k-SQLServer2000 requires sql2k-RegRep-MSSQL
sql2k-SQLServer2000 requires sql2k-MountV
sql2k-MountV requires sql2k-RVGPrimary
sql2k-RegRep-MSSQL requires sql2k-MountV-1
sql2k-MSSearch requires sql2k-RegRep-MSSearch
sql2k-MSSearch requires sql2k-SQLServer2000
sql2k-RegRep-MSSearch requires sql2k-MountV-1
sql2k-MountV-1 requires sql2k-RVGPrimary
sql2k-IP requires sql2k-NIC
sql2k-Lanman requires sql2k-IP
// resource dependency tree
//
// group sql2k
// {
// MSSearch sql2k-MSSearch
// {
// RegRep sql2k-RegRep-MSSearch
// {
// MountV sql2k-MountV-1
// {
// RVGPrimary sql2k-RVGPrimary
// }
// }
// SQLServer2000 sql2k-SQLServer2000
// {
// Lanman sql2k-Lanman
// {
// IP sql2k-IP
// {
// NIC sql2k-NIC
// }
// }
// RegRep sql2k-RegRep-MSSQL
// {
// MountV sql2k-MountV-1
// {
// RVGPrimary sql2k-RVGPrimary
// }
// }
// MountV sql2k-MountV
// {
// RVGPrimary sql2k-RVGPrimary
// }
// }
// }
// }
group sqlrpsg (
SystemList = { COMPAQ1 = 1, COMPAQ2 = 2 }
Authority = 1
)
IP sqlrpsg-IP (
Address = "10.196.83.35"
SubNetMask = "255.255.248.0"
MACAddress @COMPAQ1 = "00-50-8B-DD-0D-F8"
MACAddress @COMPAQ2 = "00-50-8B-DD-0E-15"
)
NIC sqlrpsg-NIC (
MACAddress @COMPAQ1 = "00-50-8B-DD-0D-F8"
MACAddress @COMPAQ2 = "00-50-8B-DD-0E-15"
)
VMDg VMDg (
DiskGroupName = sql2kdg
)
VvrRvg sqlrpsg-VvrRvg (
RVG = sqlrvg
VMDgResName = VMDg
IPResName = sqlrpsg-IP
)
sqlrpsg-VvrRvg requires VMDg
sqlrpsg-VvrRvg requires sqlrpsg-IP
sqlrpsg-IP requires sqlrpsg-NIC
// resource dependency tree
//
// group sqlrpsg
// {
// VvrRvg sqlrpsg-VvrRvg
// {
// VMDg VMDg
// IP sqlrpsg-IP
// {
// NIC sqlrpsg-NIC
// }
// }
// }