中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OCF便利的函數有哪些

發布時間:2022-01-05 09:26:07 來源:億速云 閱讀:106 作者:iii 欄目:大數據

這篇文章主要講解了“OCF便利的函數有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“OCF便利的函數有哪些”吧!

7 便利的函數

7.1 日志: ocf_log

資源代理應該使用ocf_log函數來進行日志。調用方法如下:

支持如下幾種日志級別:

  • debug ---- debugging 消息。多數的日志配置缺省不使用這個級別。

  • info ---- 是關于資源代理行為和狀態的信息

  • warn ---- 警告。一些不期望的行為,但是不是不可恢復的錯誤

  • err ---- 錯誤。這些日志在出現資源代理以一定錯誤碼exit之前

  • crit ---- 臨界錯誤。以為有err級別。crit級別就非常少用,出發資源代理也以一定的錯誤碼退出

7.2 檢查二進制:have_binary和 check_binary

資源代理可能需要測試特定可執行文件的可用性。可以使用have_binary函數:

1

2

3

if ! have_binary  frobnicate; then

  ocf_log  warn "Missing frobnicate binary, frobnication disabled!"

fi

如果二進制文件缺失是一個致命的錯誤,就應該提前調用check_binary函數:

1

check_binary frobnicate

使用check_binary是檢查文件存在(并且可執行)的一個很便捷的方法,如果沒找到或不可執行的話,以$OCF_ERR_INSTALLED退出。

注意:have_binary和check_binary會在$PATH 定義的目錄下去找指定的二進制文件。建議最好是做全路徑檢查,分布式環境里面,用戶策略的變化都會使得文件路徑發生變化。

7.3 執行命令并收集輸出:ocf_run

任何時候需要執行一個命令并獲得其輸出都可以使用ocf_run函數,像下面的例子這樣:

1

ocf_run "frobnicate  --spam=eggs" || exit $OCF_ERR_GENERIC

通過上面的命令,資源代理會調用frobnicate --spam=eggs 并捕捉其輸出和退出碼。如果退出碼非零(代表一種錯誤),ocf_run 以 err級別將輸出記錄到日志,資源代理隨后退出。如果退出碼是0(表示成功),則輸出將以info級別記錄到日志。

如果資源代理希望忽略成功執行的輸出,可以使用 -q 參數。在下面的例子中,ocf_run 只會將退出碼非零的執行輸出結果導入日志。

1

ocf_run -q "frobnicate  --spam=eggs" || exit $OCF_ERR_GENERIC

最后,如果資源代理想以不同的日志級別(非 err )記錄那些返回碼非零的執行結果,可以通過使用 -info 或者 -warn參數:

1

ocf_run -warn "frobnicate  --spam=eggs"

7.4 鎖:ocf_take_lock和 ocf_release_lock_on_exit

偶然也會出現這種情況,按集群配置,相同類型的不同資源不能同時并行運行。資源代理需要保證在相同機器上不會并行:

1

2

3

4

5

6

7

8

LOCKFILE=${HA_RSCTMP}/foobar

ocf_release_lock_on_exit $LOCKFILE


foobar_start() {

   ...

   ocf_take_lock  $LOCKFILE

   ...

}

ocf_take_lock 試圖獲得指定的$LOCKFILE。不可得時,它sleep 0到1秒間一個隨機的時間,再重試。ocf_release_lock_on_exit 會在資源代理退出的時候釋放鎖文件。

7.5 數值檢測

對于參數檢測,這個函數可以用來檢測一個值是否是一個數。例子如下:

1

2

3

4

5

6

7

8

9

10

LOCKFILE=${HA_RSCTMP}/foobar

ocf_release_lock_on_exit $LOCKFILE


foobar_validate_all() {

   if !  ocf_is_decimal $OCF_RESKEY_eggs; then

       ocf_log  err "eggs is not numeric!"

       exit $OCF_ERR_CONFIGURED

   fi

   ...

}

7.6 boolean值檢測

當資源代理定義一個boolean類型的參數,用戶會將這個參數指定為0/1, true/false, 或者 on/off。在資源代理里面,去檢測這些值是很麻煩的,所以應該用ocf_is_true函數比較方便:

1

2

3

if ocf_is_true  $OCF_RESKEY_superfrobnicate; then

   ocf_run "frobnicate  --super"

fi

注意:ocf_is_true 不可以對空的或者不存在的變量使用。它總是返回退出碼 1,相當于 false。

7.7 偽資源:ha_pseudo_resource

偽資源是那種不像實際可運行進程一樣可以真實啟動和停止的資源代理,它們僅僅執行單個的行為,并以某種方式跟蹤這個行為執行了還是沒有。portblock資源代理是這樣的一個例子。

偽資源的資源代理可以使用ha_pseudo_resource,  它石永紅tracking file(跟蹤文件)開保存資源狀態的標簽。如果foobar是為資源的資源代理,其start的行為應該像下面這個樣子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

foobar_start() {

   # exit  immediately if configuration is not valid

   foobar_validate_all  || exit $?


   # if resource is  already running, bail out early

   if foobar_monitor; then

       ocf_log  info "Resource is already running"

       return $OCF_SUCCESS

   fi


   # start the  pseudo resource

   ha_pseudo_resource  ${OCF_RESOURCE_INSTANCE} start


   # After the  resource has been started, check whether it started up

   # correctly. If  the resource starts asynchronously, the agent may

   # spin on the  monitor function here -- if the resource does not

   # start up within  the defined timeout, the cluster manager will

   # consider the  start action failed

   while !  foobar_monitor; do

       ocf_log  debug "Resource has not started yet, waiting"

       sleep 1

   done


   # only return  $OCF_SUCCESS if _everything_ succeeded as expected

   return $OCF_SUCCESS

}

感謝各位的閱讀,以上就是“OCF便利的函數有哪些”的內容了,經過本文的學習后,相信大家對OCF便利的函數有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ocf
AI

红安县| 宁河县| 贵州省| 关岭| 宝鸡市| 岑巩县| 东山县| 常山县| 同德县| 石首市| 丰台区| 禹城市| 定边县| 岳西县| 鲁甸县| 乌鲁木齐市| 文登市| 双柏县| 青河县| 西乌珠穆沁旗| 黔西县| 琼结县| 青神县| 双桥区| 泾源县| 岳池县| 白玉县| 东阿县| 嘉兴市| 武清区| 电白县| 虎林市| 南华县| 崇仁县| 子洲县| 通城县| 花莲市| 大庆市| 习水县| 冀州市| 芦溪县|