记录本案例的目的,主要是自己录问题定位的思路,而不是具体的解决措施。
rabbitmq-server启动失败,通过journalctl -xe -u rabbitmq-server查看错误日志如下:
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: Error: unable to connect to node 'rabbit@QHHD-SABC-CPC01': nodedown
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: DIAGNOSTICS
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: ===========
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: attempted to contact: ['rabbit@QHHD-SABC-CPC01']
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: rabbit@QHHD-SABC-CPC01:
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: * connected to epmd (port 4369) on QHHD-SABC-CPC01
7月 06 14:50:26 QHHD-SABC-CPC01 rabbitmqctl[25978]: * epmd reports: node 'rabbit' not running at all
7月 06 14:50:26 QHHD-SABC-CPC01 systemd[1]: Failed to start RabbitMQ broker.
7月 06 14:50:26 QHHD-SABC-CPC01 systemd[1]: Unit rabbitmq-server.service entered failed state.
7月 06 14:50:26 QHHD-SABC-CPC01 systemd[1]: rabbitmq-server.service failed.

猛一看,还以为是网络问题呢!网上查相关文章,解决方法无非就是(并没有给出问题到底出在了哪!):
1、清理/var/lib/rabbitmq/mnesia下的文件后重启服务
2、初始化/etc/rabbitmq/rabbitmq.config

但是都无法解决我的问题~

类似于这种被systemd管理,通过systemctl status或者journalctl获取日志信息,无法定位到问题。我们不妨直接运行启动文件
# systemctl cat rabbitmq-server
ExecStart=/usr/sbin/rabbitmq-server
……
# /usr/sbin/rabbitmq-server
……
{"init terminating in do_boot",{error,{cannot_read_enabled_plugins_file,"/etc/rabbitmq/enabled_plugins",eacces}}}

可以看到,直接启动服务的二进制可执行程序依然会失败,但是错误信息就很清晰:cannot_read_enabled_plugins_file。进一步分析是否文件权限问题、是否文件损坏、是否selinux的安全上下文设置不当等。

本案例确实是文件权限问题,赋权(chmod a+r /etc/rabbitmq/enabled_plugins )后问题解决。

今天在华为的EulerOS上部署RabbitMQ启动倒是没有失败,但是执行rabbitmq-plugins enable rabbitmq_management命令失败,报错:

cannot_read_enabled_plugins_file, '/etc/rabbitmq/enabled_plugins'

显而易见,同样是文件权限问题,但是无论是chmod赋权还是chown修改所有者,甚至修改rabbitmq-server.service启动User和Group(rabbitmq必须是rabbitmq用户启动)都不管用。

原因:umask过于严格导致新创建文件权限是600;

解决:将/etc/login.defs /etc/bashrc中umask从077修改为037。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐