我在Amazon EC2和其他公司的另一个VPS上都遇到了这个问题,我无法从外部访问rabbitmq服务器以使用5672端口连接到服务器。在这两种情况下的命令:RabbitMQ在Ubuntu 14.04服务器配置
telnet <ip> 5672
returnes这样的:
telnet: Unable to connect to remote host: Connection timed out
,并在Python简单hellow世界的代码示例使用鼠库:
import pika
credentials = pika.PlainCredentials('admin', 'password')
connection = pika.BlockingConnection(pika.ConnectionParameters('<ip>', 5672, "/", credentials))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()
抛出此异常:
No handlers could be found for logger "pika.adapters.base_connection"
Traceback (most recent call last):
File "/home/.../Send.py", line 7, in <module>
connection = pika.BlockingConnection(pika.ConnectionParameters('<ip>', 5672, "/", credentials))
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 61, in __init__
File "/usr/local/lib/python2.7/dist-packages/pika/connection.py", line 513, in __init__
File "/usr/local/lib/python2.7/dist-packages/pika/connection.py", line 804, in _connect
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 138, in _adapter_connect
File "/usr/local/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 120, in _adapter_connect
pika.exceptions.AMQPConnectionError: 2.0
在ec2上,我允许所有实例端口上的所有安全组上的TCP,ICMP和UDP(用于测试目的),并在this tutorial, 中进行了简单的安装说明,我可以在ec2上成功创建rabbitmq的双节点集群,但我无法访问任何来自外部的集群节点,就允许在所有端口上的访问,还是一样的telnet的结果,我也使管理插件,发行:
wget <ip>:15672
在EC2实例保存的HTML文件,这意味着管理插件正在工作并可从每个节点访问。我在/ etc/hosts中使用私有IP地址使节点在/ etc/hosts中找到彼此。
我决定在ubuntu 14.04 vps上安装一个简单的rabbitmq服务器,这次我的目的只是为了使访问成为可能,我所做的几乎是工作流程解释in here和所有在本地服务器上工作但仍然一开始就解释了同样的问题。
与禁用的Ubuntu防火墙 :
# ufw disable
,并发出命令:
# iptables -F
为了发出任何问题没有帮助去除防火墙或iptable的。 我想不出任何额外的配置,我应该从外部访问rabbitmq服务器,任何想法?
谢谢。
这里是我的rabbitmq.config:
[
{kernel,
[{inet_dist_listen_min, 45000},
{inet_dist_listen_max, 45000}
]
}
].
在我的EC2安全CONFIGS
:
All ICMP 0.0.0.0/0 everywhere
ALL TCP 0.0.0.0/0 everywhere
ALL UDP 0.0.0.0/0 everywhere
和SSH端口22上
更新&另外一种情况:
我非常努力解决这个问题,并且为了记录m y更具体的问题,在一个单一的Ubuntu 14的情况下。04比如我想从我的个人计算机上EC2访问单个的RabbitMQ服务器实例,这不能是硬:(这里都可以了解个案的详情解释:
的Ubuntu 14.04 EC2实例安全组设置:
我/etc/rabbitmq/rabbitmq-env.conf文件:
NODE_IP_ADDRESS=<instance private ip taken from ifconfig = 177.31.*.*>
我/etc/hosts中文件:
127.0.0.1 localhost
172.31.*.* ip-172-31-*-*
# 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
ff02::3 ip6-allhosts
我netstat -vpln
命令的输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 927/sshd
tcp 0 0 172.31.*.*:5672 0.0.0.0:* LISTEN 4662/beam
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 4662/beam
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 2089/epmd
tcp6 0 0 :::22 :::* LISTEN 927/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 501/dhclient
udp 0 0 0.0.0.0:45419 0.0.0.0:* 501/dhclient
udp6 0 0 :::61763 :::* 501/dhclient
,但每当从我个人的电脑我执行:
$ telnet <instance public IP > 5672
Trying 54.86.*.*
telnet: Unable to connect to remote host: Connection timed out
我已经设置了NODE_IP_ADDRESS
到0.0.0.0
,仍然没有成功。 (我也已将此场景发布到rabbitmq mailing list here)
你可以从EC2添加您的安全组设置你的问题?你的rabbitmq conf文件也是? –
@jpsf我已经添加了你在最后问的问题,谢谢 – NOVIA
你能从安装它的同一台机器上访问rabbitmq吗?例如,如果你用'localhost'替代'',请输入 –
Vor