QNX學習筆記 [IMX6Q/TQIMX6Q]QNX HAM 高可用框架
1.HAM概念
Hign Availability Framework 類似於軟體看門狗,可以檢測系統任意程序的狀態,並在指定的事件發生後(如程序死亡),作出特定的動作(如程序重啟),從而使得關鍵程序失敗後可以迅速恢復,保證全系統的可用性。
2.HAM基本元素
(1)Entities 實體
指的是HAM監測的具體實體,包括
Self-attached entities:即通過主動呼叫HA ham_attach_self() ham_detach_self() 等API 使得自身受到HAM模組
監測的程序實體。其可以自主選擇加入監測 退出監測 監測動作觸發條件 或者進行心跳檢測。
Externally attached entities : 即外部被動監測實體,如程序A說如果程序B死亡則通知我,則程序B被動的加入監測。
Global entity: 並非一個具體的實體,指的是可以指定系統的任意感興趣的事件,並在該事件發生時,設定特定的動作。
(2)conditions
條件與實體相關聯,指定動作觸發的條件,包括:
CONDDEATH : 程序消亡
CONDABNORMALDEATH:程序非正常消亡(即產生了core dump檔案的非正常退出)
CONDDETACH :程序退出監測
CONDHBEATMISSEDHIGH: 程序漏發一個高嚴重性的心跳包
CONDHBEATMISSEDLOW:程序漏發一個低嚴重性的心跳包
CONDRESTART: 程序重啟
CONDRAISE CONDSTATE : 外部報告的條件,並提交給HAM
CONDANY:任意條件
以上所有條件中,除CONDRAISE CONDSTATE CONDANY,其他條件均由HAM模組探測並觸發。
(3)action
action 與 condition相關聯,一個condition可關聯多個action,當該condition發生時,與之關聯的action以fifo的形式順序執行。
action 包括:
重啟,執行某個命令,產生pulse,產生signal,wait_for ,log等。
(4)action fail actions
指的是action執行失敗後,可指定執行的action列表,與action基本一致,但無 restart ,heartbeat_healthy