RabbitMQ hangi portları kullanıyor?


135

RabbitMQ Server bir düğüm kümesi için güvenlik duvarında hangi bağlantı noktalarını kullanır veya açık olması gerekir?

Benim /usr/lib/rabbitmq/bin/rabbitmq-envayarlandığım altta ayarlanmıştır (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.configBir özel ayarlamak için dokunmadım, tcp_listenerbu yüzden varsayılan 5672'de dinliyor olmalı.

İlgili netstat hatları şunlardır:

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

Sorularım:

  1. diğer düğümlerin kümeye bağlanabilmesi için 4369, 5672 ve 35197 numaralı tüm bağlantı noktalarının açık olması gerekir mi?

  2. Neden 5672 sadece tcp6'da değil tcp'de çalışmıyor?


2
StackOverflow yerine ServerFault üzerinde daha fazla yanıt alabilir ama tam olarak aradığım şey olduğu gibi buraya gönderdi sevindim!
Norman H

Yanıtlar:


151

PORT 4369: Erlang, bir kümedeki düğüm adlarının çözümlenmesi için bir Bağlantı Noktası Eşleyici Daemon'u (epmd) kullanır. Kümelenmenin çalışması için düğümlerin birbirine ve bağlantı noktası eşleyici arka plan programına erişebilmesi gerekir.

İnet_dist_listen_min / max tarafından ayarlanan PORT 35197 Güvenlik duvarları, bu aralıktaki trafiğin kümelenmiş düğümler arasında geçişine izin vermelidir

RabbitMQ Yönetim konsolu:

  • RabbitMQ sürüm 3.x için PORT 15672
  • RabbitMQ pre 3.x için PORT 55672

PORT 5672RabbitMQ ana bağlantı noktası.

Bir düğüm kümesi için 35197, 4369ve üzerinde birbirlerine açık olmalıdırlar 5672.

İleti kuyruğunu kullanmak isteyen tüm sunucular için yalnızca 5672gereklidir.


8
3.x sürüm serisinde yönetim limanı 15672 olarak değişmiş gibi görünüyor.
kjw0188

1
Yönetim bağlantı noktası 3.x'te 15672 olarak
Greg M. Krsak

4
Küme bağlantı noktaları 4369 ve 25672 gibi görünüyor: rabbitmq.com/clustering.html
kixorz

76

RabbitMQ hangi portları kullanıyor?

Varsayılan: 5672, kılavuzun cevabı var. RABBITMQ_NODE_PORTDeğişkende tanımlanır .

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

Rabbitmq yapılandırma dosyasındaki bir kişi tarafından değiştirilirse sayı farklı olabilir:

vi /etc/rabbitmq/rabbitmq-env.conf

Bilgisayardan size şunları söylemesini isteyin:

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

Oh bak, 5672 ve 15672

Netstat kullanın:

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

Oh bak 5672.

lsof kullanın:

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)

Farklı bir makineden nmap kullanın, 5672'nin açık olup olmadığını öğrenin:

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 ile manuel olarak bir bağlantı noktasına bağlanmayı deneyin, 5671 KAPALI:

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

Telnet ile manuel olarak bir bağlantı noktasına bağlanmaya çalışın, 5672 AÇIK:

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

Güvenlik duvarınızı kontrol edin:

sudo cat /etc/sysconfig/iptables  

Hangi portların açık hale getirildiğini söylemelidir:

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

Güvenlik duvarınızı yeniden uygulayın:

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
Mükemmel cevap. Eğer bir şey varsa, biraz denize düştün.
Darth Egregious

Birisi merak ederse - varsayılan olarak rabbitmq, 4369 portunu rabbitmq-env.conf içinde belirttiğiniz arabirime bağlar; Belirtilen arabirimden (kendim gibi - ayrılmış openvpn bağlantısı aracılığıyla) tüm tavşan trafiği ile ilgili trafiğe izin vermek istiyorsanız, rabbitmq'yi bu arabirimden tüm diğer trafiği rabbitmq.conf içinde bu arabirimden geçirecek şekilde yapılandırmanız gerekir (aksi takdirde diğer bağlantı noktaları bağlanmayacaktır)
Arayın

15

Rabbitmq'in hangi bağlantı noktalarını kullandığını öğrenmek için :

$ epmd -names

Çıktılar:

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

Bunları root olarak çalıştırın:

lsof -i :4369
lsof -i :25672

Epmd seçenekleri hakkında daha fazla bilgi.


lsofacı verici bir şekilde yavaştır ... ve kök ayrıcalıkları gerektirir. Aynı şeyi, çok daha hızlı bir şekilde yapabilirsiniznetstat -an | egrep '\.(4369|25672).*LISTEN'
dland

gerçekten kök gerektiriyor mu? Normal bir kullanıcı olarak iyi çalıştırabildim. Belki son sürümlerde bir şeyler değişti?
17'de

8

Liman Erişimi

Güvenlik duvarları ve diğer güvenlik araçları RabbitMQ'nun bir bağlantı noktasına bağlanmasını engelleyebilir. Bu olduğunda, RabbitMQ başlatılamaz. Aşağıdaki bağlantı noktalarının açılabildiğinden emin olun:

4369: RabbitMQ düğümleri ve CLI araçları tarafından kullanılan bir eş bulma hizmeti olan epmd

5672, 5671: TLQ'suz ve TLS'li AMQP 0-9-1 ve 1.0 istemcileri tarafından kullanılır

25672: düğümler arası ve CLI araçları iletişimi için Erlang dağıtımı tarafından kullanılır ve dinamik bir aralıktan ayrılır (varsayılan olarak tek bir bağlantı noktasıyla sınırlıdır, AMQP bağlantı noktası + 20000 olarak hesaplanır). Ayrıntılar için ağ kılavuzuna bakın.

15672: HTTP API istemcileri ve rabbitmqadmin (yalnızca yönetim eklentisi etkinse)

61613, 61614: TLS'siz ve TLS'li STOMP istemcileri (yalnızca STOMP eklentisi etkinse)

1883, 8883: (MQTT eklentisi etkinleştirilmişse TLS'siz ve TLS'li MQTT istemcileri

15674: WebSockets üzerinden STOMP istemcileri (yalnızca Web STOMP eklentisi etkinse)

15675: WebSockets üzerinden MQTT istemcileri (yalnızca Web MQTT eklentisi etkinse)

Referans dokümanı: https://www.rabbitmq.com/install-windows-manual.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.