marathon参考(9):健康检查

健康检查是需要每个应用运行监控检查任务的。 

1.默认的健康检查是延迟才能让mesos知道任务的状态是否健康。 

2.marathon提供一个任务资源的健康成员访问的REST API接口。

如果HTTP的响应在超时时间timeoutSeconds内返回代码在200到399之间,那么健康检查认为是健康的。如果任务失败连续超过健康检查规定的maxConsecutiveFailures次数,这个任务将会被kill掉。

实例:

{

  "path": "/api/health",

  "portIndex": 0,

  "protocol": "HTTP",

  "gracePeriodSeconds": 300,

  "intervalSeconds": 60,

  "timeoutSeconds": 20,

  "maxConsecutiveFailures": 3,

  "ignoreHttp1xx": false

}

 

或者

 

 

{

  "portIndex": 0,

  "protocol": "TCP",

  "gracePeriodSeconds": 300,

  "intervalSeconds": 60,

  "timeoutSeconds": 20,

  "maxConsecutiveFailures": 

或者 

注意:在和Docker化的任务组合中,命令健康检查mesos 0.23.0和0.24.0版本中有bug。在0.23.1和0.24.1中已经得到修复。 

想要了解更多,请查看https://issues.apache.org/jira/browse/MESOS-3136。

{

  "protocol": "COMMAND",

  "command": { "value": "curl -f -X GET http://$HOST:$PORT0/health" },

  "gracePeriodSeconds": 300,

  "intervalSeconds": 60,

  "timeoutSeconds": 20,

  "maxConsecutiveFailures": 3

}

 

健康检查配置项

 

首先你需要描述健康检查的协议: 

protocol(可选,默认为HTTP):请求的协议有三种,分别是HTTP/TCP/COMMAND

HTTP/TCP健康检查被marathon执行,因此当前marathon leader必须是可以访问的。COMMAND健康检查是通过在代理服务上的mesos运行一个类似的任务在本地执行的。

下面的配置项适合所有协议: 

gracePeriodSeconds(可选,默认为300):健康检查失败在多少秒内被忽略,或者直到任务状态变成健康。 

intervalSeconds(可选,默认60):健康检查间隔时间 

maxConsecutiveFailures(可选,默认3):健康检查连续失败3次后,不健康的任务会被kill。如果这个值是0,即使健康检查失败,任务也不好被删除。 

timeoutSeconds(可选,默认20):健康检查请求没有会的响应的时限。

对TCP/HTTP健康检查,port和portIndex也许会使用到。如果没有提供,portIndex会被设定。如果提供了port,它会优先覆盖所有的portIndex选项。 

portIndex(可选,默认为0):这个应用的ports或portDefinitions数组的索引。所以应用可能会使用随机端口,例如[0,0,0],任务可能会使用$PORT1这个环境变量。 

port(可选,没有默认值):健康检查额端口号。

下面的配置只适用于HTTP健康检查: 

path(可选,默认为/):任务暴露一个终端点用于健康检查。例如:/path/to/health 

ignoreHttp1xx(可选,默认为false):忽略HTTP状态为100到199的信息。如果这个HTTP健康检查返回这个状态的信息,结果被丢弃和任务的健康状态保持不变。

健康生命周期

 

应用的健康生命周期如下图所示。 

在图中: 

i表示请求实例数 

r表示运行实例数 

h表示健康实例数 

这里写图片描述

 

这里写图片描述

 

http://blog.csdn.net/zhuchuangang/article/details/51120177

猜你喜欢

转载自m635674608.iteye.com/blog/2351475
今日推荐