RabbitMQ sử dụng cổng nào?


135

RabbitMQ Server sử dụng cổng nào hoặc cần phải mở trên tường lửa cho một cụm nút?

Của tôi /usr/lib/rabbitmq/bin/rabbitmq-envđược đặt dưới đây mà tôi giả sử là cần thiết (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"

Tôi chưa chạm vào rabbitmq.configđể đặt một tùy chỉnh tcp_listenerđể nó sẽ được nghe trên 5672 mặc định.

Dưới đây là các dòng netstat có liên quan:

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

Câu hỏi của tôi là:

  1. để các nút khác có thể kết nối với cụm, tất cả 3 cổng 4369, 5672 và 35197 có cần phải mở không?

  2. Tại sao 5672 không chạy trên tcp mà không chỉ tcp6?


2
Có thể nhận được nhiều phản hồi hơn trên ServerFault thay vì StackOverflow nhưng tôi rất vui vì bạn đã đăng nó ở đây vì đó chính xác là những gì tôi đang tìm kiếm!
Norman H

Câu trả lời:


151

PORT 4369: Erlang sử dụng Portemon Daemon (epmd) để phân giải tên nút trong một cụm. Các nút phải có khả năng tiếp cận với nhau và trình nền của trình ánh xạ cổng để phân cụm hoạt động.

PORT 35197 được thiết lập bởi inet_dist_listen_min / max Tường lửa phải cho phép lưu lượng trong phạm vi này vượt qua giữa các nút được phân cụm

Bảng điều khiển quản lý RabbitMQ:

  • PORT 15672 cho RabbitMQ phiên bản 3.x
  • PORT 55672 cho RabbitMQ trước 3.x

5672Cổng chính RabbitMQ PORT .

Đối với một cụm nút, họ phải mở cửa cho mỗi ngày khác 35197, 43695672.

Đối với bất kỳ máy chủ nào muốn sử dụng hàng đợi tin nhắn, chỉ 5672bắt buộc.


8
Có vẻ như cổng quản lý đã thay đổi thành 15672 trong loạt phát hành 3.x.
kjw0188

1
Có vẻ như cổng quản lý đã thay đổi thành 15672 trong 3.x: rabbitmq.com/manloyment.html#configuration
Greg M. Krsak

3
Có vẻ như các cổng phân cụm là 4369 và 25672 từ: rabbitmq.com/clustering.html
kixorz

76

RabbitMQ sử dụng cổng nào?

Mặc định: 5672, hướng dẫn sử dụng có câu trả lời. Nó được định nghĩa trong RABBITMQ_NODE_PORTbiến.

https://www.rabbitmq.com/configure.html#define-en môi-biến

Số có thể khác nếu được thay đổi bởi ai đó trong tệp cấu hình rabbitmq:

vi /etc/rabbitmq/rabbitmq-env.conf

Yêu cầu máy tính cho bạn biết:

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

Hãy nhìn xem, 5672 và 15672

Sử dụng 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

Ôi nhìn 5672.

sử dụng 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)

sử dụng nmap từ một máy khác, tìm hiểu xem 5672 có mở không:

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

Thử kết nối với cổng theo cách thủ công bằng telnet, 5671 được ĐÓNG:

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

Hãy thử kết nối với một cổng thủ công bằng telnet, 5672 là MỞ:

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

Kiểm tra tường lửa của bạn:

sudo cat /etc/sysconfig/iptables  

Nó sẽ cho bạn biết những cổng nào được mở:

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

Áp dụng lại tường lửa của bạ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
Câu trả lời tuyệt vời. Nếu có bất cứ điều gì, bạn đã quá nhiệt tình một chút.
Darth Egregious

Trong trường hợp ai đó đang tự hỏi - theo mặc định rabbitmq sẽ chỉ liên kết cổng 4369 với giao diện mà bạn chỉ định trong rabbitmq-env.conf; Nếu bạn muốn cho phép tất cả lưu lượng truy cập liên quan đến rabbitmq thông qua giao diện được chỉ định (như bản thân tôi - thông qua liên kết openvpn chuyên dụng) thì bạn sẽ phải định cấu hình rabbitmq để chuyển tất cả lưu lượng truy cập khác qua giao diện đó trong rabbitmq.conf (nếu không các cổng khác sẽ không bị ràng buộc để giao diện bạn chọn nhưng sẽ lắng nghe trên tất cả các cổng thay thế)
Greg0ry

15

Để tìm hiểu những gì rabbitmq sử dụng cổng :

$ epmd -names

Đầu ra:

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

Chạy chúng dưới dạng root:

lsof -i :4369
lsof -i :25672

Thêm về các tùy chọn epmd.


lsoflà rất chậm ... và nó đòi hỏi quyền root. Bạn có thể làm điều tương tự, nhiều hơn nữa nhanh chóng, vớinetstat -an | egrep '\.(4369|25672).*LISTEN'
dland

nó thực sự yêu cầu root? Tôi đã có thể chạy nó tốt như một người dùng bình thường. Có lẽ một cái gì đó thay đổi trong các phiên bản gần đây?
vào

8

Truy cập cổng

Tường lửa và các công cụ bảo mật khác có thể ngăn RabbitMQ liên kết với một cổng. Khi điều đó xảy ra, RabbitMQ sẽ không bắt đầu. Đảm bảo rằng các cổng sau có thể được mở:

4369: epmd, dịch vụ khám phá ngang hàng được sử dụng bởi các nút RabbitMQ và các công cụ CLI

5672, 5671: được sử dụng bởi các máy khách AMQP 0-9-1 và 1.0 mà không có và với TLS

25672: được sử dụng bởi phân phối Erlang cho giao tiếp giữa các nút và công cụ CLI và được phân bổ từ một phạm vi động (giới hạn ở một cổng theo mặc định, được tính là cổng AMQP + 20000). Xem hướng dẫn mạng để biết chi tiết.

15672: Máy khách API HTTP và rabbitmqadmin (chỉ khi plugin quản lý được bật)

61613, 61614: Máy khách STOMP không có và có TLS (chỉ khi plugin STOMP được bật)

1883, 8883: (Máy khách MQTT không có và có TLS, nếu plugin MQTT được bật

15674: Máy khách STOMP over-WebSockets (chỉ khi plugin Web STOMP được bật)

15675: Máy khách MQTT-over-WebSockets (chỉ khi plugin Web MQTT được bật)

Tài liệu tham khảo: https://www.rabbitmq.com/install-windows-manual.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.