[原創]Linux下使用Daemon實現服務器永久存活


很多服務器端設計者,很少會考慮到服務器永久存活或熱替換的問題,貌似真的很少

其中永久存活最大的理論支持就是,我們如何真正的保證一組服務器持續的存在,即便宕機?

 

其實沒有人能保證自己寫的代碼那么完美無瑕,因為它的存在就是必須去崩潰,必須暴露更多的錯誤才能更加完美無瑕,所以除了自己有大量的測試代碼外,其實對於程序本身的測試很多是無法達到的,那么我們就需要更多的外部支持,那么在實際運營中,最好的就是Daemon這樣的系統。

 

1、什么是Daemon

其實Daemon是一種進程守護者(守護進程),他保護你的系統免於遭受外部或異常錯誤而導致的崩潰,並在最短的時間內使其迅速恢復的一種機制或系統。

當然我在這里可不是教你怎么去寫一種Daemon,因為對很多團隊,那個成本很沒必要(我們有更省錢的做法)。

那就是 http://libslack.org/ 的自制軟件Daemon,它將自動保護任意進程,並保證程序持續穩定運行,直到你將其KILL或Stop掉,前提自然是要關閉掉Daemon本身。

 

2、安裝Daemon

首先直接從地址:http://libslack.org/daemon/download/daemon-0.6.4.tar.gz 中下載Daemon的最新源碼。

然后上傳至Linux服務器

tar -xvf daemon-0.6.4.tar.gz 

cd daemon-0.6.4

注意:在這一步是不可以配置Daemon的安裝路徑的,它將被默認安裝至 /usr/local/bin 中,但會創建全局快捷方式,即可直接使用 daemon來運行程序。

./config

make -j8

make install-daemon

注意:這一步是為了安裝Daemon的配置文件 默認被安裝至 /etc/daemon.conf

make install-daemon-conf

 

3、配置Daemon以及參數說明

 其實Daemon本身的參數是可以直接放入 /etc/daemon.conf 中的,那么基本上配置文件使用起來是非常容易的。

打開遠端的daemon.conf

其配置文件格式為

配置名稱(配置名稱與參數列表間,使用空格分隔) 參數列表(多參數使用 英文字母 逗號分隔),例如:

test_server respwan

 

參數說明(部分):

 

-h, --help                - 打印幫助信息

 -V, --version             - 打印版本信息

 -v, --verbose[=level]     - 設置冗余級別

 -d, --debug[=level]       - 設置調試級別

 -C, --config=path         - 指定特殊的配置文件路徑,默認為:/etc/daemon.conf

 -N, --noconfig            - 將不讀取任何配置文件信息即不讀取 /etc/daemon.conf

 -n, --name=name           - 配置項目的名稱,將載入目標名稱參數信息

 -X, --command=cmd         - 定義特殊的后綴參數,例如需要參數啟動的話

  -D, --chdir=path          - 改變運行目錄

 -m, --umask=umask         - 改變目標執行程序的MASK

 -U, --unsafe              - 運行無安全狀態執行程序

 -S, --safe                - 運行安全執行程序

 -c, --core                - 生成核心文件,用於調試

 -r, --respawn             - 當程序關閉時,是否重新啟動程序

 -f, --foreground          - 前台運行程序

 -p, --pty[=noecho]        - Allocate a pseudo terminal for the client

 -l, --errlog=spec         - 定義DAEMON的目標錯誤日志位置

 -b, --dbglog=spec         - 調試日志位置

 -o, --output=spec         - 輸出運行程序的日志

 -O, --stdout=spec         - 輸出運行程序的輸出

 -E, --stderr=spec         - 輸出運行程序的錯誤日志

     --running             - 檢測此名稱的程序是否已經運行

     --restart             - 重新啟動此程序名稱程序

     --stop                - 結束此名稱的程序

 

4、開始使用Daemon

 使用時,首先配置目標程序的參數,默認情況下,會添加參數 respawn 用於檢測當程序關閉時重新啟動程序,例如daemon.conf中增加此選項

test_server respwan,chdir=/home/test_server

例如此時我要啟動test_server那么,直接在shell中輸入

daemon --name=test_server /home/test_server/test_server

此進程將被守護,直到整個運行周期完成。

此處啟動的是位於:/home/test_server 下的 test_server 程序

 

5、應用場合以及擴展探索

 此系統非常適合應用於需要強力保護的程序,如配合其他異常捕捉系統,將可以很好的保證整個服務器的運行以及崩潰BUG的修復情況。

也可以通過其他外部程序,控制或監控daemon的運行情況,可以合理的控制整個系統的開啟以及結束,太棒了這東西


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM