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. เหตุใด 5672 จึงไม่ทำงานบน tcp และไม่ใช่แค่ tcp6


2
อาจได้รับการตอบสนองมากขึ้นบน ServerFault แทนที่จะเป็น StackOverflow แต่ฉันดีใจที่คุณโพสต์ที่นี่เพราะเป็นสิ่งที่ฉันกำลังมองหา!
Norman H

คำตอบ:


151

PORT 4369: Erlang ใช้ประโยชน์จาก Port Mapper Daemon (epmd) สำหรับการแก้ปัญหาชื่อโหนดในคลัสเตอร์ โหนดต้องสามารถเข้าถึงกันได้และ port mapper daemon เพื่อให้คลัสเตอร์ทำงานได้

PORT 35197 ที่ตั้งค่าโดย inet_dist_listen_min / max Firewalls ต้องอนุญาตการรับส่งข้อมูลในช่วงนี้เพื่อส่งผ่านระหว่างโหนดคลัสเตอร์

คอนโซลการจัดการ RabbitMQ:

  • PORT 15672 สำหรับ RabbitMQ เวอร์ชัน 3.x
  • PORT 55672 สำหรับ RabbitMQ ก่อน 3.x

PORT 5672RabbitMQ พอร์ตหลัก

สำหรับกลุ่มของโหนดที่พวกเขาจะต้องเปิดให้แต่ละอื่น ๆ35197, และ43695672

สำหรับเซิร์ฟเวอร์ใด ๆ ที่ต้องการใช้คิวข้อความ5672จำเป็นต้องมีเท่านั้น


8
ดูเหมือนว่าพอร์ตการจัดการได้เปลี่ยนเป็น 15672 ในรุ่น 3.x
kjw0188

1
ดูเหมือนว่าพอร์ตการจัดการเปลี่ยนเป็น 15672 ใน 3.x: rabbitmq.com/management.html#configuration
Greg M. Krsak

4
ดูเหมือนว่าพอร์ตการทำคลัสเตอร์คือ 4369 และ 25672 from: 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 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 จะผูกเฉพาะพอร์ต 4369 กับอินเตอร์เฟสที่คุณระบุภายใน rabbitmq-env.conf หากคุณต้องการอนุญาตการรับส่งข้อมูลที่เกี่ยวข้องกับ rabbitmq ทั้งหมดผ่านอินเทอร์เฟซที่ระบุ (เช่นตัวฉันเอง - ผ่านลิงก์ openvpn เฉพาะ) คุณจะต้องกำหนดค่า rabbitmq ให้ส่งการรับส่งข้อมูลอื่น ๆ ทั้งหมดผ่านอินเทอร์เฟซนั้นภายใน rabbitmq.conf (มิฉะนั้นพอร์ตอื่น ๆ จะไม่ถูกผูกไว้ ไปยังอินเทอร์เฟซที่คุณเลือก แต่จะฟังบนพอร์ตทั้งหมดแทน)
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: epmd บริการค้นหาเพียร์ที่ใช้โดยโหนด RabbitMQ และเครื่องมือ CLI

5672, 5671: ใช้โดยไคลเอนต์ AMQP 0-9-1 และ 1.0 โดยไม่มีและกับ TLS

25672: ใช้โดยการกระจาย Erlang สำหรับการสื่อสารระหว่างโหนดและเครื่องมือ CLI และจัดสรรจากช่วงไดนามิก (จำกัด ไว้ที่พอร์ตเดียวโดยค่าเริ่มต้นคำนวณเป็นพอร์ต AMQP + 20000) ดูรายละเอียดในคู่มือระบบเครือข่าย

15672: ไคลเอนต์ HTTP API และ rabbitmqadmin (เฉพาะเมื่อเปิดใช้งานปลั๊กอินการจัดการ)

61613, 61614: ไคลเอ็นต์ STOMP ที่ไม่มีและมี TLS (เฉพาะเมื่อเปิดใช้งานปลั๊กอิน 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.