if ($args.count -ne 2){
write-host "usage: installcluster.ps1 10.0.0.1(virtual ip of the cluster) PRBMSGHUB001(file share wittness name)"
break}
else{
$clusterVname = ((hostname).substring(0,(hostname).Length - 1)+'v') -replace "PRB","PRC"
$clusterBname = (hostname).substring(0,(hostname).Length - 1)+'b'
$creds = get-credential
$ClusterSvc = $creds.Username
$ClusterPwd = $creds.Password
$clusterVIPAddress = $args[0]
$fswName = $args[1]
write-host""
write-host "Cluster Configuration Parameters:"
write-host "=================================================="
write-host ""
write-host "Virtual cluster name: " $clusterVName
write-host "Cluster IP address: " $clusterVIPAddress
write-host "Cluster service account: " $clusterSvc
write-host "=================================================="
write-host ""
write-host "The cluster configuration will execute in 10 seconds. To cancel, press Ctrl-C"
start-sleep -s 10
Cluster.exe /cluster:$clustervname /create /node:(hostname) /ipaddress:$clusterVIPAddress /user:$ClusterSvc /min
Cluster.exe $clusterVName res "Majority Node Set" /create /group:`"Cluster Group`" /type:`"Majority Node Set`"
Cluster.exe $clusterVName res `"Majority Node Set`" /online
Cluster.exe $clusterVName /quorum:`"Majority Node Set`"
Cluster.exe $clusterVName res `"Local Quorum`" /offline
Cluster.exe $clusterVName res `"Local Quorum`" /delete
write-host "================================================="
write-host "Completed the cluster configuration for node A."
write-host ""
write-host "WARNING: Node $clusterbname will be added in 10 seconds. To cancel, press Ctrl+C"
start-sleep -s 10
cluster.exe $clusterVName /add:$clusterbname /min
write-host "================================================="
write-host "Completed the cluster configuration for node B."
write-host "Creating File Share Witness share:"
new-item \\$fswname\c$\MNS_FSW_$clusterVName -type directory
$Class = "Win32_Share"
$Method = "Create"
$MC = [WmiClass]"\\$FSWName\ROOT\CIMV2:$Class"
$InParams = $mc.psbase.GetMethodParameters($Method)
$InParams.Access = $null
$InParams.Description = "$clusterVName file share witness"
$InParams.MaximumAllowed = 10
$InParams.Name = [string]"MNS_FSW_$clusterVname"
$InParams.Password = $null
$InParams.Path = "C:\MNS_FSW_$clusterVname"
$InParams.Type = [uint32]0
$result = $mc.PSBase.InvokeMethod($Method, $inParams, $Null)
if ($result.ReturnValue -ne 0) {
write-host "Failed to create MNS Share"
}
else
{
write-host "Created MNS share succesfully. Please set appropriate security ACLs on the share (by default, everyone has full access = VERY BAD)."
cluster.exe $clusterVName res `"Majority Node Set`" /priv MNSFIleShare=\\$fswName\MNS_FSW_$clusterVName
cluster.exe $clusterVName group `"Cluster Group`" /move
cluster.exe $clusterVName res `"Majority Node Set`" /priv
cluster.exe $clustervName /priv HeartBeatLostInterfaceTicks=10:DWORD
cluster.exe $clustervName /priv HeartBeatLostNodeTicks=10:DWORD
cluster.exe $clusterVname network "Heartbeat" /prop Role=1
cluster.exe $clusterVname /setnetpri:"Heartbeat","Team"
write-host "Please reboot each cluster node to complete configuration."
write-host "It is also necessary to change share permissions on the MNS FSW"
}
No comments:
Post a Comment