- 论坛徽章:
- 0
|
在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报告检测情况。
[ 本帖最后由 jiayanzhao 于 2008-5-1 19:37 编辑 ] |
|