今日登陆RabbitMQ管理后台,发现一台节点不在运行,顿时很懵,心想一直运行的好好的为啥就出问题了呢?很尴尬。。。
登陆节点服务器后发现磁盘容量已满,这就更尴尬了。。。没有收到任何告警短信。。。无语中。。。
1.先把log日志给清一清,腾出空间,因为RabbitMQ节点是 Disk 节点。
2.启动RabbitMQ service rabbitmq-server start,显示成功了,但是加入到集群中就显示nodedown,证明rabbitmq server 没有启动成功,去查看一下日志,发现了问题所在
error 日志中显示
Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
log日志中有详细的错误
Error description:
{could_not_start,rabbit,
{{badmatch,
{error,
{{{badmatch,
{error,
{not_a_dets_file,
"/var/lib/rabbitmq/mnesia/rabbit@p1fu4aql/recovery.dets"}}},
[{rabbit_recovery_terms,open_table,0,[]},
{rabbit_recovery_terms,init,1,[]},
{gen_server,init_it,6,[{file,"gen_server.erl"},{line,306}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,237}]}]},
{child,undefined,rabbit_recovery_terms,
{rabbit_recovery_terms,start_link,[]},
transient,4294967295,worker,
[rabbit_recovery_terms]}}}},
[{rabbit_queue_index,start,1,[]},
{rabbit_variable_queue,start,1,[]},
{rabbit_priority_queue,start,1,[]},
{rabbit_amqqueue,recover,0,[]},
{rabbit,recover,0,[]},
{rabbit,'-run_step/2-lc$^1/1-1-',1,[]},
{rabbit,run_step,2,[]},
{rabbit,'-run_boot_steps/1-lc$^0/1-0-',1,[]}]}}
Log files (may contain more information):
/var/log/rabbitmq/rabbit@p1fu4aql.log
/var/log/rabbitmq/rabbit@p1fu4aql-sasl.log
从日志中看出 这个/var/lib/rabbitmq/mnesia/rabbit@p1fu4aql/recovery.dets 文件出错
我们找到这个文件并删除它
启动RabbitMQ service rabbitmq-server start 成功
加入集群 rabbitmqctl start_app 成功
至此问题处理完成。