Hi,
I'm trying to make one of our in-house apps highly available using WCF. The app uses IIS, SQL, Win Services & MSMQ. I've had no issues configuring the Windows Failover Cluster for the windows services and SQL etc, but I'm stuck on MSMQ. The two nodes are in Azure.
Note that MSMQ is used for the Windows Services using PRIVATE$ queues. My goal for clustering MSMQ is should any queues get backlogged, and a failover occurs, the data is not lost.
I've configured the MSMQ Role in the Cluster just fine. Due to lack of documentation, I followed the setup for Clustering in Azure for SQL. I created a new frontend IP on the Azure ILB using a floating IP with HA ports then setup the probe as below. All good so far....
# MSMQ Azure LB Probe Configuration#####
$ClusterNetworkName = "Cluster Network 1"
$IPResourceName = "IP Address 10.1.0.10"
$ILBIP = "10.1.0.10"
[int]$ProbePort = 39999
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Get-ClusterResource $IPResourceName | Get-ClusterParameter
Since I'm using HA Ports, I verified the front end ip by RDPing to the IP and I could. I also see from the azure LB hitting on the above probe port too in Wireshark.
I can also right click on the MSMQ Role and select Manage MSMQ and Computer Management loads and I see the Clustered MSMQ which is empty, as it should be.
I create a queue and give Everyone full permissions on the clustered MSMQ, then I run the below code to test.
Add-Type -AssemblyName System.Messaging
$MyQueuePath = 'MSMQ\private$\test'
$MyQueue = if([System.Messaging.MessageQueue]::Exists($MyQueuePath)) {
New-Object System.Messaging.MessageQueue $MyQueuePath
} else {
[System.Messaging.MessageQueue]::Create($MyQueuePath)
}
$myQueuePath.Send("Test Text", "test")
But here is where I get Invalid Path. Ive tried using FormatName, FQDN etc with no luck.
Any ideas?
Thanks in advance,
Brad