2014-05-09 64 views
2

我在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实例安全组设置: my ec2 security group configuration

/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_ADDRESS0.0.0.0,仍然没有成功。 (我也已将此场景发布到rabbitmq mailing list here

+0

你可以从EC2添加您的安全组设置你的问题?你的rabbitmq conf文件也是? –

+0

@jpsf我已经添加了你在最后问的问题,谢谢 – NOVIA

+0

你能从安装它的同一台机器上访问rabbitmq吗?例如,如果你用'localhost'替代'',请输入 – Vor

回答

0

好的。 我发现问题是我的VPN。在我的情况下,我在本地ubuntu机器上使用了Kerio,当我离开Kerio服务器时,我可以telnet到我的服务器。

这是一个很好的提示检查以下内容: - 你的防火墙 - 你的连接(在我的情况的Kerio VPN是造成问题)