RabbitMQ는 어떤 포트를 사용합니까?


135

RabbitMQ Server는 노드 클러스터를 위해 방화벽에서 어떤 포트를 사용하거나 열어야합니까?

내가 /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. 다른 노드가 클러스터에 연결하려면 3 개의 포트 4369, 5672 및 35197을 모두 열어야합니까?

  2. tcp6뿐만 아니라 tcp에서도 5672가 실행되지 않는 이유는 무엇입니까?


2
StackOverflow 대신 ServerFault에 대해 더 많은 응답을 얻을 수는 있지만 정확하게 내가 찾고있는 것이므로 여기에 게시하게되어 기쁩니다!
Norman H

답변:


151

포트 4369 : Erlang은 클러스터에서 노드 이름을 확인하기 위해 포트 매퍼 데몬 (epmd)을 사용합니다. 클러스터링이 작동하려면 노드가 서로 도달하고 포트 맵퍼 데몬에 도달 할 수 있어야합니다.

inet_dist_listen_min / max 방화벽으로 설정된 포트 35197 방화벽은이 범위의 트래픽이 클러스터 된 노드 사이를 통과하도록 허용해야합니다.

RabbitMQ 관리 콘솔 :

  • RabbitMQ 버전 3.x 용 포트 15672
  • RabbitMQ pre 3.x 용 포트 55672

포트 5672RabbitMQ 메인 포트.

노드 클러스터의 35197경우 4369및 에서 서로 열려 있어야합니다 5672.

메시지 대기열을 사용하려는 서버의 경우에만 5672필요합니다.


8
3.x 시리즈 릴리스에서 관리 포트가 15672로 변경된 것 같습니다.
kjw0188

1
3.x에서 관리 포트가 15672로 변경된 것 같습니다 : rabbitmq.com/management.html#configuration
Greg M. Krsak

4
clusterm 포트가 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

텔넷을 사용하여 수동으로 포트에 연결하십시오. 5671이 닫혔습니다.

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

텔넷을 사용하여 수동으로 포트에 연결하십시오. 5672가 열려 있습니다.

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

누군가 궁금해하는 경우-rabbitmq는 기본적으로 rabbitmq-env.conf 내에서 지정한 인터페이스에만 4369 포트를 바인딩합니다. 지정된 인터페이스 (자체-전용 openvpn 링크를 통해)를 통해 rabbitmq 관련 트래픽을 모두 허용하려면 rabbitmq.conf 내의 해당 인터페이스를 통해 다른 모든 트래픽을 전달하도록 rabbitmq를 구성해야합니다 (그렇지 않으면 다른 포트는 바인딩되지 않습니다) 당신의 선택의 인터페이스에하지만 대신 모든 포트에서들을 수 있습니다)
Greg0ry

15

rabbitmq가 사용하는 포트를 찾으려면 다음을 수행하십시오.

$ epmd -names

출력 :

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

이것을 루트로 실행하십시오 :

lsof -i :4369
lsof -i :25672

epmd 옵션에 대한 추가 정보


lsof고통스럽게 느리고 ... 루트 권한이 필요합니다. 당신과 함께, 훨씬 더 빠른 속도로, 같은 작업을 수행 할 수 있습니다netstat -an | egrep '\.(4369|25672).*LISTEN'
dland

정말 루트가 필요합니까? 일반 사용자처럼 잘 실행할 수있었습니다. 최근 버전에서 변경된 내용이 있습니까?
asgs

8

포트 액세스

방화벽 및 기타 보안 도구로 RabbitMQ가 포트에 바인딩되지 않을 수 있습니다. 이 경우 RabbitMQ가 시작되지 않습니다. 다음 포트를 열 수 있는지 확인하십시오.

4369 : RabbitMQ 노드 및 CLI 도구에서 사용하는 피어 검색 서비스 인 epmd

5672, 5671 : TLS가 있거나없는 AMQP 0-9-1 및 1.0 클라이언트에서 사용

25672 : 노드 간 및 CLI 도구 통신을 위해 Erlang 배포에서 사용되며 동적 범위 (기본적으로 단일 포트로 제한되며 AMQP 포트 + 20000으로 계산 됨)에서 할당됩니다. 자세한 내용은 네트워킹 안내서를 참조하십시오.

15672 : HTTP API 클라이언트 및 rabbitmqadmin (관리 플러그인이 사용 가능한 경우에만)

61613, 61614 : TLS가 있거나없는 STOMP 클라이언트 (STOMP 플러그인이 활성화 된 경우에만)

1883, 8883 : (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.