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,[],[]}]}。在二郎, undef 指示在運行時無法解析函數或模組。在這種情況下,這意味著 Erlang VM 無法載入 RabbitMQ 應用程式模組。不相容或不正確的 Erlang 運行時用法會導致 RabbitMQ 啟動失敗。
Resolution
如果其他應用程式不需要它們,請從系統中刪除它們。您可以使用下列命令檢查:
rpm -q --whatrequires erlang
如果返回了軟體包,您必須諮詢操作系統管理員,瞭解找到的任何 Erlang 軟體包以及是否可以刪除它們。
若要移除 Erlang,請用:
dnf remove erlang\*
移除 Erlang 後,請在 NetWorker 伺服器上,從根提示字元執行下列步驟:
- 取得目前安裝的 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 偵錯