我通过apt-get在Ubuntu 12.04.2 LTS上安装了新鲜的RabbitMQ 3.1.3,并试图在同一台服务器上启动消费者,但是我有连接问题:
[PhpAmqpLib\Exception\AMQPRuntimeException] Error Connecting to server(113): No route to host
有工作服务器的状态:
Status of node rabbit@ns1 ... [{pid,2106}, {running_applications,[{rabbit,"RabbitMQ","3.1.3"}, {mnesia,"MNESIA CXC 138 12","4.5"}, {os_mon,"CPO CXC 138 46","2.2.7"}, {xmerl,"XML parser","1.2.10"}, {sasl,"SASL CXC 138 11","2.1.10"}, {stdlib,"ERTS CXC 138 10","1.17.5"}, {kernel,"ERTS CXC 138 10","2.14.5"}]}, {os,{unix,linux}}, {erlang_version,"Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:30] [kernel-poll:true]\n"}, {memory,[{total,27728944}, {connection_procs,2704}, {queue_procs,5408}, {plugins,0}, {other_proc,9021680}, {mnesia,60016}, {mgmt_db,0}, {msg_index,31144}, {other_ets,770736}, {binary,1968}, {code,14560395}, {atom,1356081}, {other_system,1918812}]}, {vm_memory_high_watermark,0.4}, {vm_memory_limit,1262847590}, {disk_free_limit,1000000000}, {disk_free,214706556928}, {file_descriptors,[{total_limit,924}, {total_used,3}, {sockets_limit,829}, {sockets_used,1}]}, {processes,[{limit,1048576},{used,125}]}, {run_queue,0}, {uptime,1265}] ...done.
我没有任何iptables(端口)的限制:
Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
和etc/hosts
是好的。
127.0.0.1 localhost {IP-ADDRESS} ns1.***.org ns1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
我是不是做错了?
UPD: sudo netstat -nlp | grep 5672
sudo netstat -nlp | grep 5672
返回: tcp6 0 0 :::5672 :::* LISTEN 2106/beam.smp
从rabbitMQ日志:
=INFO REPORT==== 2-Jul-2013::16:05:11 === started TCP Listener on [::]:5672 =INFO REPORT==== 2-Jul-2013::16:05:11 === Server startup complete; 0 plugins started. =INFO REPORT==== 2-Jul-2013::16:35:04 === accepting AMQP connection <0.1130.0> (127.0.0.1:44112 -> 127.0.0.1:5672) =ERROR REPORT==== 2-Jul-2013::16:35:14 === closing AMQP connection <0.1130.0> (127.0.0.1:44112 -> 127.0.0.1:5672): {handshake_timeout,handshake}
我试图将localhost
更改为ip6-localhost
,有时尝试启动消费者时,返回:
[PhpAmqpLib\Exception\AMQPRuntimeException] Error Connecting to server(110): Connection timed out
UPD2如果我用debugging标志和--env=prod
( php .../app/console rabbitmq:consumer -w -d consumer_name
)开始php .../app/console rabbitmq:consumer -w -d consumer_name
,则使用者启动并正在工作。
如果rabbitmq服务器上没有打开必要的端口,客户端尝试连接时会出现“No route to host”错误。
要修复它,确保端口是打开的,如果没有,打开它们:
sudo iptables -I INPUT -p tcp --dport 5672 --syn -j ACCEPT sudo iptables -I INPUT -p tcp --dport 5673 --syn -j ACCEPT sudo iptables -I INPUT -p tcp --dport 15672 --syn -j ACCEPT
这将暂时设置它。 用你的iptables永久性地设置它。
sudo vi /etc/sysconfig/iptables
然后重启:
sudo service iptables restart
通过重新配置从0.0.0.0:5672到127.0.0.1:5672的监听地址以及OS中的小安全修复,问题得到了解决。