1. 程式人生 > >QNX學習筆記 [IMX6Q/TQIMX6Q]QNX HAM 高可用框架

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