NetWorker:服务器 RabbitMQ 进程在启动期间崩溃
Summary: 在 Linux 主机上安装或升级 NetWorker 服务器软件后,RabbitMQ 初始化立即失败。
Symptoms
NetWorker 服务器 /nsr/logs/daemon.raw 报告以下错误:
127106 1777471849 1 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR notice 44 Startup in progress; starting all daemons... 0
144355 1777471849 1 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR notice 21 Daemon %s is running. 1 0 8 rmq-epmd
144355 1777471851 1 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR notice 21 Daemon %s is running. 1 0 3 rmq
0 1777471852 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 3 rmq 0 103 {"init terminating in do_boot",{undef,[{rabbit,boot,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]}}
0 1777471852 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 3 rmq 0 101 init terminating in do_boot ({undef,[{rabbit,boot,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]})
0 1777471852 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 3 rmq 0 1
0 1777471852 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 3 rmq 0 73 Crash dump is being written to: /nsr/tmp/rabbitmq/cores/erl_crash.dump...
0 1777471852 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 3 rmq 0 5 done
144354 1777471852 1 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR notice 21 Daemon %s terminated. 1 0 3 rmq
144359 1777471852 3 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR error 45 Scheduling restart of daemon %s in %u seconds 2 20 50 /opt/nsr/rabbitmq-server-4.1.1/bin/rabbitmq-server 5 1 5
137911 1777471852 5 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR critical 29 Aborting startup sequence: %s 1 49 148 137909 66 Process %s exited in less than %d seconds at startup: exit code %d 3 20 50 /opt/nsr/rabbitmq-server-4.1.1/bin/rabbitmq-server 1 2 10 1 1 1
127108 1777471852 5 5 0 2845669184 13680 0 NW_SERVERNAME nsrctld NSR critical 45 Failed to start all daemons; shutting down... 0
0 1777471853 1 5 0 2777708288 13680 0 NW_SERVERNAME nsrctld NSR notice 6 %s: %s 2 0 8 rmq-epmd 0 65 epmd: Wed Apr 29 08:10:53 2026: got KILL_REQ - terminates normal
要呈现 daemon.raw看到:NetWorker:如何使用nsr_render_log呈现.raw日志文件
而 /nsr/tmp/rabbitmq/cores/erl_crash.dump 报告:
Current Process Internal State: ACT_PRIO_NORMAL | USR_PRIO_NORMAL | PRQ_PRIO_NORMAL | ACTIVE | RUNNING | ACTIVE_SYS
Current Process Program counter: 0x00007faebd5b1ed0 (init:boot_loop/2 + 56)
Current Process CP: 0x00005651bc4d68b8 (<terminate process normally>)
而 /opt/nsr/rabbitmq-server-#.#.#/var 未创建目录。
rabbitmq-server 文件夹版本会根据安装的 NetWorker 版本而变化。
NetWorker 服务关闭。
Cause
主机上安装了第三方 Erlang 软件包,导致 erl 二进制输入 /usr/bin。
[root@nsr ~]# which erl /usr/bin/erl
在工作情形中,这不应返回任何内容:
[root@nsr ~]# which erl /usr/bin/which: no erl in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)
RabbitMQ 的 NetWorker 服务器实施提供了自己的 erl 二进制文件 rabbitmq-server 文件夹路径,它不在 /usr/bin。操作系统 erl 软件包与 NetWorker 所需的版本不同:
[root@nsr ~]# /opt/nsr/rabbitmq-server-4.1.1/erts-14.2.5.11/bin/erl -version Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 14.2.5.11 [root@nsr ~]# /usr/bin/erl -version Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 10.4.4
在此实例中,RabbitMQ 4.1.1 尝试使用 erl 10.4.4,这是不可能的。这会导致观察到 rmq 报告崩溃。例如,本文中显示的版本仅用于目的。
在操作系统上可找到 Erlang 软件包:
rpm -qa | grep erlang
Erlang 不是标准的操作系统软件包,除非在环境系统映像中或由操作系统管理员安装,否则不应安装它。而 erl 上述命令不会返回 NetWorker 使用的实施。显示的任何 Erlang 软件包都是独立于 NetWorker 安装的。操作系统安装的 Erlang 软件包与 NetWorker 冲突。
从 erl_crash.dump,存在 init:boot_loop/2 表示在 Erlang 运行时初始化过程中发生故障。RabbitMQ 永远不会进行应用程序初始化,这解释了为什么不会创建 RabbitMQ var 目录。
NetWorker 启动报告 init terminating in do_boot with {undef,[{rabbit,boot,[],[]}]}。在 Erlang 中, undef 表示在运行时无法解析函数或模块。在此上下文中,这意味着 Erlang VM 无法加载 RabbitMQ 应用程序模块。不兼容或不正确的 Erlang 运行时使用将导致 RabbitMQ 启动失败。
Resolution
如果其他应用程序不需要它们,请将其从系统中删除。您可以使用以下命令进行检查:
rpm -q --whatrequires erlang
如果返回软件包,您必须咨询操作系统管理员,了解找到的任何 Erlang 软件包以及是否可以删除它们。
要删除 Erlang,请使用:
dnf remove erlang\*
删除 Erlang 后,在 NetWorker 服务器上的 root 提示符下执行以下步骤:
- 获取当前安装的 NetWorker 软件的列表:
rpm -qa | grep lgto
- 卸载上述命令返回的每个 NetWorker 软件包:
rpm -e package1 package2 package3 package4 so_forth
- 重命名 RabbitMQ 文件夹。您必须指定 NetWorker 安装的文件夹版本名称。
mv /opt/nsr/rabbitmq-server-#.#.# /opt/nsr/rabbitmq-server-#.#.#_$(date -I) mv /nsr/rabbitmq /nsr/rabbitmq_$(date -I)
- 重新安装 NetWorker:
yum localinstall --nogpgcheck -y package1 package2 package3 package4 so_forth
- 运行安装后 AUTHC 配置脚本:
/opt/nsr/authc-server/scripts/authc_configure.sh
- 启动 NetWorker 服务:
systemctl start networker
- 监视服务器
/nsr/logs/daemon.raw确认服务器启动。
NetWorker:如何使用nsr_render_log呈现.raw日志文件
如果 NetWorker 服务器也是 NetWorker Management Console (NMC) 或 NetWorker Web 用户界面 (NWUI) 服务器,请运行其配置脚本:
/opt/lgtonmc/bin/nmc_config /opt/nwui/scripts/nwui_configure.sh
Additional Information
RabbitMQ 可能因本文所述原因以外的其他原因而无法启动。在此特定场景中,RabbitMQ /var 未创建目录。如果 /var 已创建并且日志可用,请查看其他 RabbitMQ 日志以获得更多见解。可能还需要 RabbitMQ 调试:NetWorker:如何启用 RabbitMQ 调试