問題1
使用命令啟動
service rabbitmq-server start
報錯如下:
Starting rabbitmq-server (via systemctl): Job for rabbitmq-server.service failed because the control process exited with error code. See "systemctl status rabbitmq-server.service" and "journalctl -xe" for details.
[FAILED]
解決辦法:
嘗試下面的操作:
禁用 SELinux ,修改 /etc/selinux/config
SELINUX=disabled
修改后重啟系統
問題2:
一般使用命令
rabbitmq-server start
可以查看啟動相關日志的
BOOT FAILED
===========
Error description:
{could_not_start,rabbit,
{{badmatch,
{error,
{{{badmatch,
{error,
{not_a_dets_file,
"/var/lib/rabbitmq/mnesia/rabbit@n1/recovery.dets"}}},
[{rabbit_recovery_terms,open_table,0,
[{file,"src/rabbit_recovery_terms.erl"},{line,126}]},
{rabbit_recovery_terms,init,1,
[{file,"src/rabbit_recovery_terms.erl"},{line,107}]},
{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,247}]}]},
{child,undefined,rabbit_recovery_terms,
{rabbit_recovery_terms,start_link,[]},
transient,30000,worker,
[rabbit_recovery_terms]}}}},
[{rabbit_queue_index,start,1,
[{file,"src/rabbit_queue_index.erl"},{line,491}]},
{rabbit_variable_queue,start,1,
[{file,"src/rabbit_variable_queue.erl"},{line,466}]},
{rabbit_priority_queue,start,1,
[{file,"src/rabbit_priority_queue.erl"},{line,92}]},
{rabbit_amqqueue,recover,0,
[{file,"src/rabbit_amqqueue.erl"},{line,240}]},
{rabbit,recover,0,[{file,"src/rabbit.erl"},{line,800}]},
{rabbit_boot_steps,'-run_step/2-lc$^1/1-1-',1,
[{file,"src/rabbit_boot_steps.erl"},{line,49}]},
{rabbit_boot_steps,run_step,2,
[{file,"src/rabbit_boot_steps.erl"},{line,49}]},
{rabbit_boot_steps,'-run_boot_steps/1-lc$^0/1-0-',1,
[{file,"src/rabbit_boot_steps.erl"},{line,26}]}]}}
Log files (may contain more information):
/var/log/rabbitmq/rabbit@n1.log
/var/log/rabbitmq/rabbit@n1-sasl.log
{"init terminating in do_boot",{could_not_start,rabbit,{{badmatch,{error,{{{badmatch,{error,{not_a_dets_file,"/var/lib/rabbitmq/mnesia/rabbit@n1/recovery.dets"}}},[{rabbit_recovery_terms,open_table,0,[{file,"src/rabbit_recovery_terms.erl"},{line,126}]},{rabbit_recovery_terms,init,1,[{file,"src/rabbit_recovery_terms.erl"},{line,107}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,328}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]},{child,undefined,rabbit_recovery_terms,{rabbit_recovery_terms,start_link,[]},transient,30000,worker,[rabbit_recovery_terms]}}}},[{rabbit_queue_index,start,1,[{file,"src/rabbit_queue_index.erl"},{line,491}]},{rabbit_variable_queue,start,1,[{file,"src/rabbit_variable_queue.erl"},{line,466}]},{rabbit_priority_queue,start,1,[{file,"src/rabbit_priority_queue.erl"},{line,92}]},{rabbit_amqqueue,recover,0,[{file,"src/rabbit_amqqueue.erl"},{line,240}]},{rabbit,recover,0,[{file,"src/rabbit.erl"},{line,800}]},{rabbit_boot_steps,'-run_step/2-lc$^1/1-1-',1,[{file,"src/rabbit_boot_steps.erl"},{line,49}]},{rabbit_boot_steps,run_step,2,[{file,"src/rabbit_boot_steps.erl"},{line,49}]},{rabbit_boot_steps,'-run_boot_steps/1-lc$^0/1-0-',1,[{file,"src/rabbit_boot_steps.erl"},{line,26}]}]}}}
init terminating in do_boot ()
Crash dump is being written to: erl_crash.dump...done
解決辦法:
find / -name recovery.dets
然后使用 rm 命令刪除掉 recoer.dets 文件
問題4 :
使用命令
rabbitmq-server start
報錯如下: 提示 no space left on device
/usr/lib/rabbitmq/bin/rabbitmq-server: line 51: echo: write error: No space left on device
Failed to write pid file: /var/lib/rabbitmq/mnesia/rabbit@n3.pid
解決辦法:
查看磁盤占用情況
df -h
然后使用
cd / #回到根目錄
du -sh * # 查看各個文件夾占用磁盤情況
然后看哪個盤數據多, 就cd 進入哪個盤,然后進行最終找到數據量大的文件。一般是日志文件的話,刪除即可。
啟動異常
rabbitmq-server start
報錯如下:
BOOT FAILED
===========
Error description:
{error,{inconsistent_cluster,"Node rabbit@node1 thinks it's clustered with node rabbit@node2, but rabbit@node2 disagrees"}}
Log files (may contain more information):
/usr/local/rabbitmq_server-3.6.2/var/log/rabbitmq/rabbit@node1.log
/usr/local/rabbitmq_server-3.6.2/var/log/rabbitmq/rabbit@node1-sasl.log
Stack trace:
[{rabbit_mnesia,check_cluster_consistency,0,
[{file,"src/rabbit_mnesia.erl"},{line,593}]},
{rabbit,'-boot/0-fun-0-',0,[{file,"src/rabbit.erl"},{line,279}]},
{rabbit,start_it,1,[{file,"src/rabbit.erl"},{line,407}]},
{init,start_it,1,[]},
{init,start_em,1,[]}]
{"init terminating in do_boot",{error,{inconsistent_cluster,"Node rabbit@node1 thinks it's clustered with node rabbit@node2, but rabbit@node2 disagrees"}}}
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
如何解決無錫人流醫院哪家好 http://www.ytsg029.com/
問題分析,從node1的啟動報錯來看,像是集群信息殘留。在node2上操作將node1移除集群,node1的rabbitmq服務已經down掉了,所以數據庫無法同步更新,記載的仍是舊的集群信息(數據庫記錄里自身節點仍屬於集群),而node2和node3的數據庫記錄已經更新(數據庫信息里面集群不包含node1節點了)。
那么就得將這個節點mnesia 數據刪掉
找到mnseia 目錄
mv mnesia/ /tmp/
如果刪了,發現 啟動還是報錯,很有可能你 刪錯了 mnesia
find / -name mnesia
查找下,然后再次刪除,然后重啟
問題,節點加入集群后出現黃框
解決辦法:
rabbitmq-plugins enable rabbitmq_management
增加用戶 並且賦予角色
rabbitmqctl add_user root root
rabbitmqctl set_user_tags root administrator
問題:
如果節點啟動
rabbitmq-server start
報錯如下:
BOOT FAILED
===========
Timeout contacting cluster nodes: [rabbit@node2].
BACKGROUND
==========
This cluster node was shut down while other nodes were still running.
To avoid losing data, you should start the other nodes first, then
start this one. To force this node to start, first invoke
"rabbitmqctl force_boot". If you do so, any changes made on other
cluster nodes after this one was shut down may be lost.
DIAGNOSTICS
===========
attempted to contact: [rabbit@node2]
rabbit@node2:
* connected to epmd (port 4369) on node2
* node rabbit@node2 up, 'rabbit' application running
current node details:
- node name: rabbit@node1
- home dir: /root
- cookie hash: jIUJ2lMKMbDhJLdCJgFDAA==
{"init terminating in do_boot",timeout_waiting_for_tables}
解決辦法:
rabbitmqctl force_boot
問題:
rabbitmq-server: unrecognized service
解決辦法
hostname
查看hostname是否正確
如果使用
vi /etc/hosts
修改了host但是不生效, 那么查看
/etc/sysconfig/network
這個目錄下的hostname 是否寫死了, 把它修改了,然后重啟 reboot
https://img-blog.csdn.net/20180322135423539
nohup啟動
nohup ./rabbitmq-server start &