RabbitMQ在Ubuntu 14.04服务器配置上

时间:2014-05-09 23:59:28

标签: ubuntu amazon-ec2 rabbitmq pika

我在Amazon EC2和另一家公司的另一家VPS上遇到此问题,我无法从外部访问rabbitmq服务器以使用5672端口连接到服务器。在这两种情况下命令:

telnet <ip> 5672

回归此:

telnet: Unable to connect to remote host: Connection timed out
使用pika库在python中使用

和简单的hellow world代码示例:

 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安全配置中:

All ICMP 0.0.0.0/0 everywhere
ALL TCP 0.0.0.0/0 everywhere
ALL UDP 0.0.0.0/0 everywhere

和端口22上的SSH。

更新&amp;另一个场景:

我真的在努力解决这个问题,并且为了更具体地记录我的问题,在单个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_ADDRESS设置为0.0.0.0但仍未成功。 (我也将这个场景发布到了rabbitmq mailing list here

1 个答案:

答案 0 :(得分:0)

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

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