首先確認RabbitMQ服務是否正在運行,使用以下命令查看服務狀態:
sudo systemctl status rabbitmq-server
若服務未運行,啟動服務并設置開機自啟:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
服務狀態應為“active (running)”,若未運行,需檢查系統日志(journalctl -xe)排查啟動失敗原因。
確??蛻舳伺cRabbitMQ服務器之間的網絡可達:
ping <RabbitMQ服務器IP>,確認網絡連通性。telnet <RabbitMQ服務器IP> 5672(AMQP默認端口)或telnet <RabbitMQ服務器IP> 15672(管理界面端口),若連接失敗,說明網絡或防火墻阻斷。確認RabbitMQ是否在正確端口監聽:
sudo ss -tulnp | grep beam # 或使用 sudo lsof -i :5672
正常應輸出類似以下內容(LISTEN狀態表示端口開放):
beam.smp 1234 rabbitmq 25u IPv6 12345 0t0 TCP *:5672 (LISTEN)
若未監聽,需檢查RabbitMQ配置文件(/etc/rabbitmq/rabbitmq.conf)中的listeners.tcp.default設置。
CentOS的防火墻(firewalld)或SELinux可能阻止端口訪問:
sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
sudo firewall-cmd --reload
Enforcing模式,臨時設置為Permissive測試是否解決問題:sudo setenforce 0
若問題解決,需調整SELinux策略(如semanage port -a -t amqp_port_t -p tcp 5672)。日志文件位于/var/log/rabbitmq/,文件名為rabbit@<hostname>.log。使用以下命令查看實時日志或錯誤信息:
sudo tail -f /var/log/rabbitmq/rabbit@$(hostname).log # 實時追蹤日志
sudo grep -i "error" /var/log/rabbitmq/rabbit@$(hostname).log # 篩選錯誤日志
常見錯誤包括:
connection refused:服務未啟動或端口未開放;disk alarm:磁盤空間不足(需清理/var/lib/rabbitmq/目錄);access_refused:用戶權限不足(需通過rabbitmqctl set_permissions調整)。確認配置文件(/etc/rabbitmq/rabbitmq.conf或/etc/rabbitmq/rabbitmq-env.conf)中的關鍵參數正確:
nodename = rabbit@$(hostname)(需與集群節點名稱一致);listeners.tcp.default = 5672(默認AMQP端口);rabbitmqctl set_permissions -p / myuser ".*" ".*" ".*")。啟用RabbitMQ管理插件,通過Web界面查看隊列、連接、用戶等狀態:
sudo rabbitmq-plugins enable rabbitmq_management
訪問http://<RabbitMQ服務器IP>:15672,使用默認用戶名guest/密碼guest登錄(僅限本地訪問,遠程訪問需創建新用戶并授權)。通過界面可直觀查看:
Connections):是否達到上限;Queues):是否有積壓;Overview):內存、磁盤使用情況。RabbitMQ對內存、磁盤空間敏感,需確保資源充足:
free -m查看內存使用,若available內存不足,調整vm_memory_high_watermark(默認0.4,即40%內存);df -h /var/lib/rabbitmq/查看磁盤剩余空間,建議保留至少1GB;top或htop查看CPU使用率,過高可能導致連接超時。確??蛻舳诉B接參數(主機名、端口、用戶名、密碼、vhost)與RabbitMQ配置一致:
configure、write、read權限。