RoseHA 自定义配置
在 RoseHA图形界面内格式如下:
Start Executable: haagent-start c:\test\text.txt
Stop Executable: haagent-stop c:\test\text.txt
Agent: haagent-monc:\test\text.txt
编写txt脚本需要用到这几个命令
Start:运行执行程序后,在StartTimeOut时间后由RoseHA杀掉
Agent:运行执行程序后,RoseHA开始监控此程序
Agentless:运行执行程序后,RoseHA不监控此程序
StartTimeOut:启动程序超时时间值
Stop:运行执行程序后,在StopTimeOut时间后由RoseHA杀掉
StopTimeOut:停止程序超时时间值
例如c:\my_bin\test.txt test.txt内容为
Start:c:\winnt\system32\calc.exe
Agent:c:\winnt\system32\clock.exe
Agentless:c:\winnt\regedit
Stop:c:\winnt\system32\notepad.exe
StartTimeOut:5000
StopTimeOut:5000
在Start Executable栏中输入
“haagent -start c:\my_bin\test.txt”
在Stop Executable栏中输入
“haagent -stop c:\my_bin\test.txt”
在Agent栏中输入
“haagent -mon c:\my_bin\test.txt”
将会有如下结果:
当启动自定义服务时,RoseHA所做动作:
启动 calc.exe,过5秒后终止该程序
启动 clock.exe, RoseHA将去监控clock进程
启动 regedit.exe, RoseHA不关心它的状态,任其自生自灭
当停止自定义服务时,RoseHA所做动作:
执行notepad.exe,过5秒后终止该程序
停止 clock.exe 程序
停止 regedit.exe 程序
在Start Executable、Stop Executable、Agent三项中填入如下格式的命令, 其中:
Start Executable: c:\haapi\start.bat
Stop Executable: c:\haapi\stop.bat
Agent: c:\haapi\haag.exe
特别提醒注意:在Agent编辑框中填写的Agent程序存放的目录名中如有“空格”字符,应该将Agent编辑框中的填写的内容加双引号括起来,例如:
Agent: ”c:\program files\NT cluster\agent.exe”
Start.bat 文件内容:启动clock时钟程序
start /B clock
使用参数“/B”,目的是使程序在后台运行。
stop.bat 文件内容:杀掉 时钟程序和agent 程序,注意有时可能每个语句需要执行两次,也就是说在stop.bat文件中将同一个kill 语句写两遍,“-f”参数是强制杀进程。
kill -f clock
kill -f clock
haag.exe 用户自己编写的监控程序,这里的例子是检测clock进程是否存在。
#include <stdio.h>
#include <stdlib.h>
#include "haapi.h"
#define PROCESS "CLOCK.EXE"
int ExistProcess(char *szName)
{
char bf[256];
FILE *fp;
sprintf(bf,"ps | grep %s",szName);
fp=_popen(bf,"r");
if(fp==NULL)return -1;
bf[0]=0;
fgets(bf,sizeof(bf),fp);
_pclose(fp);
return bf[0]!=0;
}
void main(int argc,char *argv[])
{
int nRet;
char szResource[128];
unsigned int uTime;
if(argc!=3)
{
printf("Usage: haag.exe ResoureName TimeOut");
exit(1);
}
sprintf(szResource,argv[1]);
uTime=atol(argv[2]);
//Open the resource
ApiOpen(szResource);
while(1)
{
nRet=ExistProcess(PROCESS);
if(nRet==1)
ApiOk(szResource);
else
ApiError(szResource);
_sleep(uTime/3+1000);
}
//Close the resource
ApiClose(szResource);
exit(0);
}
在实际配置过程中,用户可以自己的应用放在启动脚本中,停止的时候可以使用系统的kill程序将自己的程序停止,或自己有退出应用的方法,也可以在停止脚本中使用,而Agent程序需要特别注意一个参数:Agent Timeout,此参数缺省为0,表示HA会查这个Agent的
进程,当此进程在,HA认为服务正常,当此进程不在,HA认为服务异常,就会发生切换;而当此值为非0的正值时,HA需要该Agent程序报告检测应用的状况,也就是上面c++例子编写的情况,它需要调用HA的API接口函数来向HA报告检测情况。