天天看點

marathon參考(9):健康檢查

健康檢查是需要每個應用運作監控檢查任務的。

1.預設的健康檢查是延遲才能讓mesos知道任務的狀态是否健康。

2.marathon提供一個任務資源的健康成員通路的REST API接口。

如果HTTP的響應在逾時時間timeoutSeconds内傳回代碼在200到399之間,那麼健康檢查認為是健康的。如果任務失敗連續超過健康檢查規定的maxConsecutiveFailures次數,這個任務将會被kill掉。

執行個體:

{
  "path": "/api/health",
  "portIndex": ,
  "protocol": "HTTP",
  "gracePeriodSeconds": ,
  "intervalSeconds": ,
  "timeoutSeconds": ,
  "maxConsecutiveFailures": ,
  "ignoreHttp1xx": false
}
           

或者

{
  "portIndex": ,
  "protocol": "TCP",
  "gracePeriodSeconds": ,
  "intervalSeconds": ,
  "timeoutSeconds": ,
  "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": ,
  "intervalSeconds": ,
  "timeoutSeconds": ,
  "maxConsecutiveFailures": 
}
           

健康檢查配置項

首先你需要描述健康檢查的協定:

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表示健康執行個體數

marathon參考(9):健康檢查

繼續閱讀