Apache DolphinScheduler如何開啟開機自啟動功能?

海豚调度發表於2024-07-08

轉載自東華果汁哥

Apache DolphinScheduler 是一個分散式、去中心化的大資料工作流排程系統,支援大資料任務排程。若要設定 DolphinScheduler 開機自啟動,通常需要將其配置為系統服務。以下是一般步驟,具體操作可能因作業系統的不同而有所差異:

Linux 系統

  1. 建立系統服務檔案:
    • 編輯一個名為 dolphinscheduler.service 的檔案,通常放在 /etc/systemd/system/ 目錄下。
    • 根據你的 DolphinScheduler 安裝路徑和配置填寫服務檔案。
      例如:

[Unit]
Description=DolphinScheduler Service
After=network.target
[Service]
type=exec
ExecStart=/opt/module/dolphinscheduler/bin/start-all.sh
ExecStop=/opt/module/dolphinscheduler/bin/stop-all.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

  1. 啟動服務並設定開機自啟:
    • 使用 systemctl 命令啟動服務並設定開機自啟:
systemctl daemon-reload
systemctl start dolphinscheduler.service
systemctl enable dolphinscheduler.service
  1. 驗證服務狀態:
    使用以下命令來檢查服務狀態:
systemctl status dolphinscheduler.service

Windows 系統

  1. 建立批處理檔案:
    • 建立一個批處理檔案(例如:start-dolphinscheduler.bat),用於啟動 DolphinScheduler。
    • 在批處理檔案中新增啟動 DolphinScheduler 的命令。
  2. 將批處理檔案新增到啟動資料夾:
    • 將批處理檔案放置在 Windows 的啟動資料夾中:
      • Win + R 開啟執行對話方塊。
      • 輸入 shell:startup 開啟啟動資料夾。
      • 將批處理檔案拖放到啟動資料夾中。
  3. 重啟驗證:
    • 重啟計算機,檢查 DolphinScheduler 是否隨系統啟動。

請注意,以上步驟可能需要根據你的具體環境和 DolphinScheduler 的版本進行調整。在進行這些操作時,確保你有足夠的許可權,並對系統服務有一定的瞭解,以避免可能的服務衝突或系統不穩定。

如果 DolphinScheduler 的服務在重啟後短暫顯示為綠色(表示服務正在執行),然後又變為非綠色狀態(通常表示服務不再執行),但相關的程序實際上仍在執行,這可能是由於服務管理器(systemd)認為服務已經停止,因為它沒有檢測到持續執行的主程序。

這種情況通常發生在以下幾種情況:

  1. 服務指令碼的問題:如果服務指令碼(start-all.sh)執行完畢後沒有保持任何程序在後臺執行,systemd 會認為服務已經停止。
  2. 服務型別配置不當:在 systemd 服務檔案中,Type 的配置可能不正確。如果服務被設定為 simple,而實際上它應該是 forkingoneshot,那麼 systemd 可能會在指令碼執行完畢後立即認為服務已經停止。
  3. 程序退出碼問題:如果服務指令碼正確地啟動了所有必要的程序,但是指令碼本身很快就退出了(例如,因為指令碼中的命令很快就執行完畢),systemd 可能會根據指令碼的退出碼來判斷服務狀態。

為了解決這個問題,您可以嘗試以下步驟:

  • 檢查服務指令碼:確保 start-all.sh 指令碼在啟動所有必要的程序後能夠保持執行狀態。如果指令碼執行完畢後沒有保持任何程序在後臺執行,您可能需要在指令碼中新增一些邏輯來保持其執行。
  • 調整服務檔案:如果您確認指令碼正確地啟動了所有必要的程序,並且這些程序在後臺執行,那麼您可能需要調整 systemd 服務檔案中的 Type 和其他配置選項。
  • 使用 Type=forking:如果您的服務指令碼是一個 fork 程序的指令碼,確保在 systemd 服務檔案中使用 Type=forking。這樣,systemd 會等待指令碼建立的子程序。
  • 使用 Type=notify(如果支援):如果 DolphinScheduler 支援與服務管理器通訊,您可以使用 Type=notify。這樣,服務可以透過 sd_notify() 函式向 systemd 傳送狀態通知。
  • 使用 RemainAfterExit=yes:如果服務指令碼啟動的程序獨立於指令碼本身執行,您可以在 systemd 服務檔案中使用 RemainAfterExit=yes,這樣即使指令碼本身已經退出,systemd 也會認為服務仍然在執行。
  • 重新載入並重啟服務:在修改服務檔案後,重新載入 systemd 並重啟服務:
systemctl daemon-reload
systemctl restart dolphinscheduler.service
  • 檢查服務狀態:再次檢查服務狀態,看是否為 active (running)。
  • 如果上述步驟都無法解決問題,您可能需要更詳細地檢查 DolphinScheduler 的日誌檔案或服務指令碼的輸出,以確定為什麼 systemd 認為服務已經停止。

最終配置,成功。

原文連結:https://blog.csdn.net/u013421629/article/details/138523187

相關文章