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是造成問題)