我在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。
我真的在努力解决这个问题,并且为了更具体地记录我的问题,在单个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)
答案 0 :(得分:0)
行。 我发现问题是我的VPN。在我的情况下,我在我的本地ubuntu机器上使用了Kerio,当我退出kerio服务器时,我可以telnet到我的服务器。
检查以下内容是一个很好的提示: - 你的防火墙 - 你的连接(在我的情况下,Kerio VPN导致问题)