daemontools(http://cr.yp.to/daemontools.html)是一個管理UNIX下服務的工具集。supervise監視一個服務。它啓動一個服務、當服務停掉時它會重起服務。
Zookeeper在運行過程中,如果出現一些無法處理的異常,會直接退出進程,也就是所謂的快速失敗(fail fast)模式。daemontools 能夠幫助你監控ZK進程,一旦進程退出後,能夠自動重啓進程,從而使down掉的機器能夠重新加入到集羣中去。
安裝daemontools
mkdir /package
chmod 755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
vim src/error.h 找到:extern int errno; 改成:#include <errno.h>
package/install
監控Zookeeper
在/service下,新建文件夾zookeeper,新建run文件:
cd /service
mkdir zookeeper
cd zookeeper
vim run
chmod 755 run
run內容:
#!/bin/bash
exec 2>&1
exec /zk/zookeeper-3.4.4/bin/zkServer.sh start
運行:
supervise /service/zookeeper
//或者可以用nohup以後臺方式運行。如下:
nohup supervise /service/zookeeper &
如果出現
supervise: fatal: unable to acquire /service/zookeeper/supervise/lock: temporary failure
快速rm /service/zookeeper/supervise 重新執行 supervise /service/zookeeper 即可
驗證監控zookeeper是否成功:
kill zookeeper進程,查看zookeeper的進程是否自動重啓
ps -aux|grep Dzookeeper //查看zookeeper的進程
參考文獻: http://cr.yp.to/daemontools/faq/create.html