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