健康檢查是需要每個應用執行監控檢查任務的。
1.預設的健康檢查是延遲才能讓mesos知道任務的狀態是否健康。
2.marathon提供乙個任務資源的健康成員訪問的rest api介面。
如果http的響應在超時時間timeoutseconds內返回**在200到399之間,那麼健康檢查認為是健康的。如果任務失敗連續超過健康檢查規定的maxconsecutivefailures次數,這個任務將會被kill掉。
例項:
或者
,
"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表示健康例項數
lvs mysql健康檢查 lvs 健康檢查方式
一 tcp 4層檢查 virtual server 192.168.2.213 80 delay loop 6 lb algo wlc 採取權重式最少鏈結分配 lb kind dr 採取dr模式 protocol tcp real server 192.168.2.220 80 tcp check ...
Nginx被動健康檢查和主動健康檢查
1.被動健康檢查 nginx自帶有健康檢查模組 ngx http upstream module,可以做到基本的健康檢查,配置如下 upstream cluster server nginx只有當有訪問時後,才發起對後端節點探測。如果本次請求中,節點正好出現故障,nginx依然將請求轉交給故障的節點...
應用健康檢查
我們的應用是都是走自動化指令碼發布的,當發布完成後,通常的做法可能是直接看發布日誌是否有報錯,但這需要人工去操作,所以我們寫了乙個健康檢查的頁面,在發布完成後用指令碼去訪問這個健康頁面,看是否能正常訪問,從而確定應用是否正常啟動。servlet private static final long s...