We have some problems migrating our software to Azure. Our solution consists of 2 websites (frontend, backend) and webjob (a winning service when installing on our equipment). These nodes communicate using the RabbitMQ cluster (2 Ubuntu VM). We don’t have any problems on the premises, but when installing on Azure, we see many errors, such as:
Publisher did not confirm message
or
Publish not confirmed before channel closed
or
SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 104.40.186.27:5672
In RabbitMQ we see errors like this:
closing AMQP connection <0.390.0> (100.73.204.90:61152 -> 100.73.205.2:5672):
{handshake_timeout,handshake}
As a result, messages are often not received correctly.
We use MassTransit on top of RabbitMQ to exchange actual messages. Here is our environment setup procedure:
Ubuntu 14.04 (A3: 4 , 7 ) .
2 5672 15672. - Azure .
powershel script 2 VM:
$imageName = "b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20140927-en-us-30GB"
$vmc = New-AzureVMConfig -Name $machineName -InstanceSize "Small" -Image $imageName -AvailabilitySetName $serviceName
$null = $vmc | Add-AzureProvisioningConfig -Linux -LinuxUser $user -Password $password
$null = $vmc | New-AzureVM -ServiceName $serviceName -WaitForBoot
$vm = Get-AzureVM -Name $machineName -ServiceName $serviceName
$null = Add-RabbitMQEndpoint -vm $vm -port 5672 -name "RabbitMQ-Main"
$null = Add-RabbitMQEndpoint -vm $vm -port 15672 -name "RabbitMQ-Mgmt"
$null = $vm | Update-AzureVM
Function Add-RabbitMQEndpoint($vm,$port,$name)
{
$lbName = $name + "_LB"
$null = Add-AzureEndpoint -VM $vm -LocalPort $port -PublicPort $port -Name $name -Protocol tcp -LBSetName $lbName -ProbePort $port -ProbeProtocol tcp -ProbeIntervalInSeconds 15
}
script RabbitMQ :
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'"
sudo apt-get update
sudo apt-get -q -y
sudo invoke-rc.d rabbitmq-server stop
echo 'MYCOOKIEVALUE' | sudo tee /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
sudo invoke-rc.d rabbitmq-server start
sudo rabbitmq-plugins enable rabbitmq_management
sudo invoke-rc.d rabbitmq-server stop
sudo invoke-rc.d rabbitmq-server start
sudo rabbitmqctl add_user user1 pwd1
sudo rabbitmqctl set_user_tags user1 administrator
sudo rabbitmqctl set_permissions -p / user1 '.*' '.*' '.*'
, :
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@$mymachinename
sudo rabbitmqctl start_app
sudo rabbitmqctl set_cluster_name my_cluster_name
(, 4369 25672), , . ?
rabbitmq , . RabbitMQ.
? , - -? ?