Networking

Pacemaker - 記錄 ping 檢查的結果?

  • November 30, 2021

我閱讀了此頁面和下一個頁面:https ://clusterlabs.org/pacemaker/doc/deprecated/en-US/Pacemaker/1.1/html/Pacemaker_Explained/_moving_resources_due_to_connectivity_changes.html

它還解釋瞭如何設置可以連結到資源分配的 ping。

雖然這可行,但如果我有超過 1 個 URL 或超過 1 個 ping 檢查,我怎麼知道哪個失敗了?

如果發生這種情況,似乎沒有記錄在任何地方。它剛剛發生,起搏器做出決定……

閱讀此原始碼:https ://github.com/ClusterLabs/pacemaker/blob/master/extra/resources/ping

似乎需要啟用調試環境變數。我寧願不這樣做,假設我必須為它重新啟動起搏器並因此搞亂分配,再加上任何數量的額外日誌現在都將佔用磁碟空間。

如果 ping 失敗,有沒有辦法只記錄一行,只說這一點,而不影響其他任何事情?

事實證明,調試選項不僅僅是一個環境變數,它可以在 ping 資源本身上設置,如下所示:

pcs resource update ping debug=1

唯一的缺點是:日誌沒有/var/log/pacemaker.log按預期出現,而是出現在/var/log/syslog.

查看資源代理 (RA) 的原始碼,似乎通過將其設置為啟用調試選項warn是您想要做的。

如果由於某種原因該行為不是您想要的,則如下所示更改函式中的1)case 語句ping_check()(ping RA 中的第 305 行)可能是您要查找的內容:

ping_check() {
   active=0
   for host in $OCF_RESKEY_host_list; do
       p_exe=ping

       case $(uname) in
           Linux) p_args="-n -q -W $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts";;
           Darwin) p_args="-n -q -t $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts -o";;
           FreeBSD) p_args="-n -q -t $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts -o";;
           *) ocf_log err "Unknown host type: $(uname)"; exit $OCF_ERR_INSTALLED;;
       esac

       case "$host" in
           *:*) p_exe=ping6
       esac

       ping_output=$($p_exe $p_args $OCF_RESKEY_options $host 2>&1); rc=$?

       case $rc in
           0)
               active=$(expr $active + 1)
               if [ $OCF_RESKEY_debug -gt 1 ]; then
                   ping_conditional_log info "$ping_output"
               fi
               ;;
           1) ocf_log warn "$host is inactive: $ping_output";;
           *) ocf_log err "Unexpected result for '$p_exe $p_args $OCF_RESKEY_options $host' $rc: $ping_output";;
       esac

但是這種更改看起來將遵循與設置 param 相同的邏輯debug=warn。我沒有對此進行測試,只是遵循 RA 中的邏輯。

maintenance-mode=true此外,如果您出於某種原因確實需要重新啟動 Pacemaker,您始終可以在這樣做之前將集群放入其中。如果maintenance-mode=true設置 Pacemaker 即使在重新啟動時也不會啟動/停止/監控服務。完成後請記住設置maintenance-mode=false

引用自:https://serverfault.com/questions/1083792