Resin 的 watchdog(看门狗)介绍
為了穩(wěn)定和安全,Resin使用一個獨(dú)立的watchdog進(jìn)程來啟動和監(jiān)視Resin服務(wù)器。watchdog連續(xù)你檢測Resin服務(wù)器的狀 態(tài),如果其沒有反應(yīng)或者遲鈍,將會重啟Resin服務(wù)器進(jìn)程。大多數(shù)情況下,watchdog從resin.xml中讀取配置信息,而不需要其它的附加配 置。某些ISP服務(wù)商可能使用特別的配置,為了安全他們會配置watchdog來隔離JVM(Java虛擬主機(jī))。
概述?
因為watchdog作為一個服務(wù)運(yùn)行,大多數(shù)情況下你根本不需要注意它。標(biāo)準(zhǔn)的配置下,一個機(jī)器上的watchdog可以監(jiān)視這個機(jī)器上所有JVM,因 此大部分情況下你不需要修改watchdog的配置。需要你管理watchdog的任務(wù)就是,如果機(jī)器發(fā)生了問題,停止watchdog,并檢查 watchdog日志中Resin服務(wù)器的重啟事件。
watchdog自動重啟崩潰和退出的Resin服務(wù)。因此如果你想停止Resin,你需要告訴watchdog來停止Resin實例,或者完 全停止watchdog。使用resin.ar中的主程序(main)來控制watchdog,有用來啟動、停止、重啟Resin實例的命令,同樣還有報 告watchdog狀態(tài)的命令。
大多數(shù)用戶不需要特別的配置watchdog,但是ISP和大的站點(diǎn)可能創(chuàng)建特殊的watchdog.xml(包含<watchdog- manager>標(biāo)簽)來控制watchdog。<watchdog-manager>允許ISP控制watchdog,為他們用戶的 Resin實例指定附加的命令行參數(shù),包括為他們的用戶創(chuàng)建安全的chroot環(huán)境的能力。典型地,watchdog以root帳號運(yùn)行,然而用戶實例使 用他們各自的用戶id。
命令行
resin.jar中的主類ResinBoot的命令行用來控制watchdog。主要的操作包括:start、stop、restart、shutdown和status。
start
"start"命令使用給定的server id啟動一個新的Resin實例。ResinBoot首先會嘗試在當(dāng)前機(jī)器上的watchdog,在需要時會啟動一個新的watchdog。在resin.xml中定義的server id必須是惟一的。
例如: watchdog啟動
resin-3.2.x> java -jar lib/resin.jar -conf conf/test.conf -server a start
Resin/3.2.x started -server 'a' for watchdog at 127.0.0.1:6700
stop?
"stop"命令使用給定的server id停止Resin實例。如果停止的實例是watchdog管理的最后一個Resin實例,watchdog也會自動退出。如果沒有指定 -server 參數(shù),watchdog使用默認(rèn)的 -server "" 。
例子: watchdog停止
resin-3.2.x> java -jar lib/resin.jar stop
Resin/3.2.x started -server '' for watchdog at 127.0.0.1:6600
status?
"status"命令統(tǒng)計被watchdog服務(wù)管理的Resin實例的狀態(tài)。
例子: watchdog狀態(tài)
resin-3.2.x> java -jar lib/resin.jar status
Resin/3.2.x status for watchdog at 127.0.0.1:6600
server '' : active
? password: missing
? user: ferg
? root: /home/test/resin/
? conf: /etc/resin/resin.xml
單一Resin實例?
這個例子顯示了一個單一服務(wù)器站點(diǎn),其監(jiān)聽標(biāo)準(zhǔn)的HTTP端口80,并以resin這個用戶身份運(yùn)行。在這個例子中watchdog是以root用戶身份運(yùn)行的,因此其能夠綁定到特殊的端口80上,但是Resin實例是以resin身份運(yùn)行的。
因為使用了默認(rèn)的配置,watchdog監(jiān)聽6600端口來獲取命令。
例子: /etc/resin/resin.xml
<resin xmlns="http://caucho.com/ns/resin?">
<cluster id="">
? <server id="app-a" address="127.0.0.1">
??? <user-name>resin</user-name>
??? <group-name>resin</group-name>
??? <http port="80" />
? </server>
? <resin:import path="${resin.home}/conf/app-default.xml" />
? <host id="">
??? <web-app id="" path="/var/www/htdocs" />
? </host>
</cluster>
</resin>
在一個機(jī)器上使用共享的watchdog實現(xiàn)負(fù)載平衡?
當(dāng)在一個機(jī)器上運(yùn)行多個Resin實例的時候,一個watchdog-manager就能管理所有的Resin實例。指定server id用來決定那個Resin實例是start或者stop。
在這個例子中,有一個web-tier服務(wù)器做為負(fù)載平衡器,兩個app-tier服務(wù)器處理后臺數(shù)據(jù),它們都在一個機(jī)器上。為了維護(hù)和升級方便,一個站點(diǎn)可能需要多個app-rier服務(wù)器。當(dāng)一個停機(jī)的時候,第二個服務(wù)器可以繼續(xù)服務(wù)。
這個例子使用默認(rèn)的watchdog配置,其讀取的是標(biāo)準(zhǔn)的resin.xml文件。watchdog進(jìn)程和ResinBoot都讀取resin.xml 配置文件,因此不需要特別的watchdog配置。watchdog能夠自動發(fā)現(xiàn)運(yùn)行在這個機(jī)器上的多個Resin實例并管理它們。
同一機(jī)器使用不同的watchdog來實現(xiàn)負(fù)載平衡?
在某些情況下,最好讓每個Resin實例有其自己的watchdog,例如當(dāng)多個用戶在使用相同的機(jī)器。每個<server>塊配置一 個<watchdog-port>。因為watchdog將讀取resin.xml使用<server>塊匹配命令行參數(shù)中的 -server id,每個watchdog將啟動期自己的端口。
例子: /etc/resin/resin.xml
總結(jié)
以上是生活随笔為你收集整理的Resin 的 watchdog(看门狗)介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: chrome 主进程cpu占用50%怎么
- 下一篇: linux find 排除某目录或文