RabbitMQはどのポートを使用しますか?


135

RabbitMQサーバーは、ノードのクラスターのファイアウォールでどのポートを使用するか、ファイアウォール上で開く必要がありますか?

/usr/lib/rabbitmq/bin/rabbitmq-envは、私が必要と想定している以下に設定されています(35197)。

SERVER_ERL_ARGS="+K true +A30 +P 1048576 \   
-kernel inet_default_connect_options [{nodelay,true}] \  
-kernel inet_dist_listen_min 35197 \   
-kernel inet_dist_listen_max 35197"

rabbitmq.configカスタムの設定には触れなかったtcp_listenerため、デフォルトの5672でリッスンする必要があります。

関連するnetstat行は次のとおりです。

tcp        0      0 0.0.0.0:4369           0.0.0.0:*           LISTEN      728/epmd 
tcp        0      0 0.0.0.0:35197          0.0.0.0:*           LISTEN      5126/beam
tcp6       0      0 :::5672                :::*                LISTEN      5126/beam

私の質問は:

  1. 他のノードがクラスターに接続できるようにするには、4369、5672、35197の3つのポートすべてを開く必要がありますか?

  2. 5672がtcp6だけでなくtcpでも実行されないのはなぜですか?


2
StackOverflowの代わりにServerFaultでより多くの応答を受け取る可能性がありますが、それがまさに私が探しているものであるため、ここに投稿してくれてうれしいです!
Norman H

回答:


151

ポート4369:Erlangはクラスター内のノード名の解決にポートマッパーデーモン(epmd)を使用します。クラスタリングが機能するためには、ノードが互いに到達し、ポートマッパーデーモンに到達できる必要があります。

inet_dist_listen_min / maxファイアウォールによって設定されたポート35197ファイアウォールは、この範囲のトラフィックがクラスター化されたノード間を通過することを許可する必要があります

RabbitMQ管理コンソール:

  • RabbitMQバージョン3.xのポート15672
  • RabbitMQ 3.xより前のPORT 55672

PORT 5672RabbitMQメインポート。

ノードのクラスタの場合、彼らはお互いにまで開いていなければなりません3519743695672

メッセージキューを使用するサーバーの場合5672は、必須です。


8
3.xシリーズのリリースでは、管理ポートが15672に変更されたようです。
kjw0188 2013

1
3.xで管理ポートが15672に変更されたようです:rabbitmq.com/management.html#configuration
Greg M. Krsak

4
クラスタ化ポートは4369と25672であるようです。これらはrabbitmq.com/clustering.html
kixorz

76

RabbitMQはどのポートを使用していますか?

デフォルト:5672、マニュアルには答えがあります。RABBITMQ_NODE_PORT変数で定義されています。

https://www.rabbitmq.com/configure.html#define-environment-variables

rabbitmq設定ファイルで誰かが変更した場合、番号は異なる場合があります。

vi /etc/rabbitmq/rabbitmq-env.conf

コンピュータにあなたに言うように頼んでください:

sudo nmap -p 1-65535 localhost

Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:50 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00041s latency).
PORT      STATE         SERVICE
443/tcp   open          https
5672/tcp  open          amqp
15672/tcp open  unknown
35102/tcp open  unknown
59440/tcp open  unknown

ああ、5672、15672

netstatを使用します。

netstat -lntu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:15672               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:55672               0.0.0.0:*                   LISTEN
tcp        0      0 :::5672                     :::*                        LISTEN

5672を見てください。

lsofを使用:

eric@dev ~$ sudo lsof -i | grep beam
beam.smp  21216    rabbitmq   17u  IPv4 33148214      0t0  TCP *:55672 (LISTEN)
beam.smp  21216    rabbitmq   18u  IPv4 33148219      0t0  TCP *:15672 (LISTEN)

別のマシンからnmapを使用し、5672が開いているかどうかを確認します。

sudo nmap -p 5672 10.0.1.71
Starting Nmap 5.51 ( http://nmap.org ) at 2014-09-19 13:19 EDT
Nmap scan report for 10.0.1.71
Host is up (0.00011s latency).
PORT     STATE SERVICE
5672/tcp open  amqp
MAC Address: 0A:40:0E:8C:75:6C (Unknown)    
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds

telnetを使用して手動でポートに接続してみてください、5671は閉じています:

telnet localhost 5671
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused

telnetを使用して手動でポートに接続してみてください。5762は開いています:

telnet localhost 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

ファイアウォールを確認します。

sudo cat /etc/sysconfig/iptables  

どのポートが開いているかが表示されます。

-A INPUT -p tcp -m tcp --dport 5672 -j ACCEPT

ファイアウォールを再適用します。

sudo service iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

1
すばらしい答えです。どちらかと言えば、あなたは少し船外に行きました。
Darth Egregious、2015年

誰かが疑問に思っている場合-デフォルトでは、rabbitmqは4369ポートをrabbitmq-env.conf内で指定したインターフェイスにのみバインドします。指定されたインターフェースを介してすべてのrabbitmq関連のトラフィックを許可したい場合(自分自身-専用のopenvpnリンクを介して)、rabbitmq.conf内のそのインターフェースを介して他のすべてのトラフィックを通過させるようにrabbitmqを構成する必要があります(それ以外の場合、他のポートはバインドされません)選択したインターフェイスに接続しますが、代わりにすべてのポートでリッスンします)
Greg0ry

15

rabbitmqが使用するポートを確認するには

$ epmd -names

出力:

epmd: up and running on port 4369 with data:
name rabbit at port 25672

これらをrootとして実行します。

lsof -i :4369
lsof -i :25672

epmdオプションの詳細。


lsof非常に遅いです...そしてそれはルート権限を必要とします。あなたは同じことをはるかに迅速に行うことができますnetstat -an | egrep '\.(4369|25672).*LISTEN'
dland

それは本当にルートを必要としますか?通常のユーザーとしては問題なく実行できました。最近のバージョンで何か変更されたのでしょうか?
asgs

8

ポートアクセス

ファイアウォールやその他のセキュリティツールにより、RabbitMQがポートにバインドできない場合があります。その場合、RabbitMQは起動に失敗します。次のポートを開くことができることを確認してください。

4369:epmd、RabbitMQノードとCLIツールで使用されるピア検出サービス

5672、5671:AMQP 0-9-1および1.0クライアントで使用され、TLSあり、なし

25672:Erlangディストリビューションでノード間およびCLIツールの通信に使用され、ダイナミックレンジから割り当てられます(デフォルトでは、AMQPポート+ 20000として計算される単一ポートに制限されます)。詳細については、ネットワークガイドを参照してください。

15672:HTTP APIクライアントとrabbitmqadmin(管理プラグインが有効な場合のみ)

61613、61614:TLSの有無にかかわらずSTOMPクライアント(STOMPプラグインが有効な場合のみ)

1883、8833:(MQTTプラグインが有効になっている場合、TLSの有無にかかわらずMQTTクライアント

15674:STOMP-over-WebSocketsクライアント(Web STOMPプラグインが有効な場合のみ)

15675:MQTT-over-WebSocketsクライアント(Web MQTTプラグインが有効な場合のみ)

参考資料:https : //www.rabbitmq.com/install-windows-manual.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.