Heartbeat基礎知識-運維小結

散盡浮華發表於2017-01-04

 

在日常的叢集系統架構中,一般用到Heartbeat的主要就2種:
1)高可用(High Availability)HA叢集, 使用Heartbeat實現,也稱為”雙機熱備”, “雙機互備”, “雙機”;
2)負載均衡群集(Load Balance Cluster),使用Linux Virtual Server(LVS)實現;

Heartbeat 的介紹
Heartbeat是Linux-HA專案中的一個元件,它實現了一個高可用叢集系統。心跳服務和叢集通訊是高可用叢集的兩個關鍵元件,在 Heartbeat專案裡,由heartbeat模組實現了這兩個功能。Heartbeat是目前開源HA專案中十分成功的一個例子,它提供了所有 HA 軟體所需要的基本功能,比如心跳檢測和資源接管、監測群集中的系統服務、在群集中的節點間轉移共享 IP 地址的所有者等,自1999年開始到現在,Heartbeat在行業內得到了廣泛的應用。heartbeat最核心的功能包括兩個部分,心跳監測和資源接管。心跳監測可以通過網路鏈路和串列埠進行,而且支援冗 餘鏈路,它們之間相互傳送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方傳送的報文,那麼就認為對方失效,這時需啟動資源接管模組來接管執行在對方主機上的資源或者服務。

Hearbeat和Keepalived區別
1) Keepalived使用的VRRP協議方式,虛擬路由冗餘協議 (Virtual Router Redundancy Protocol,簡稱VRRP);
2) Heartbeat是基於主機或網路的服務的高可用方式;
3) Keepalived的目的是模擬路由器的雙機;
4) Heartbeat的目的是使用者Service的雙機;
5) LVS的高可用建議用Keepavlived;
6) 業務的高可用用Heartbeat;

Keepalived 主要控制IP飄移,配置應用簡單,而且分層,layer3,4,5,各自配置極為簡單
Heartbeat 不但可以控制IP飄移,更擅長對資源服務的控制,配置,應用比較複雜;

HA叢集中的相關術語

.節點(node)
執行heartbeat程式的一個獨立主機,稱為節點,節點是HA的核心組成部分,每個節點上執行著作業系統和heartbeat軟體服務,在heartbeat叢集中,節點有主次之分,分別稱為主節點和備用/備份節點,每個節點擁有唯一的主機名,並且擁有屬於自己的一組資源,例如,磁碟、檔案系統、網路地址和應用服務等。主節點上一般執行著一個或多個應用服務。而備用節點一般處於監控狀態。

.資源(resource)
資源是一個節點可以控制的實體,並且當節點發生故障時,這些資源能夠被其它節點接管,heartbeat中,可以當做資源的實體有:
-  磁碟分割槽、檔案系統
-  IP地址
-  應用程式服務
-  NFS檔案系統

.事件(event)
叢集中可能發生的事情,例如節點系統故障、網路連通故障、網路卡故障、應用程式故障等。這些事件都會導致節點的資源發生轉移,HA的測試也是基於這些事件來進行的。

.動作(action)
 事件發生時HA的響應方式,動作是由shell腳步控制的,例如當某個節點發生故障後,備份節點將通過事先設定好的執行指令碼進行服務關閉或啟動, 進而接管故障節點的資源。

HeartBeat 的組成

Heartbeat提供了高可用叢集最基本的功能,例如,節點間的內部通訊方式、叢集合作管理機制、監控工具和失效切換功能等等,目前的最新版本是Heartbeat2.x,下面講述也是以Heartbeat2.x為主,主要介紹Heartbeat2.0的內部組成,主要分為以下幾大部分:
heartbeat: 節點間通訊檢測模組
ha-logd: 叢集事件日誌服務
CCM(Consensus Cluster Membership):叢集成員一致性管理模組
LRM (Local Resource Manager):本地資源管理模組
Stonith Daemon: 使出現問題的節點從叢集環境中脫離
CRM(Cluster resource management):叢集資源管理模組
Cluster policy engine: 叢集策略引擎
Cluster transition engine:叢集轉移引擎

   下圖顯示的是Heartbeat2.0內部結構組成

Heartbeat僅僅是個HA軟體,它僅能完成心跳監控和資源接管,不會監視它控制的資源或應用程式,要監控資源和應用程式是否執行正常,必須使用第三方的外掛,例如ipfail、Mon、Ldirector等Heartbeat自身包含了幾個外掛,分別是ipfail、Stonith和Ldirectord,介紹如下:

ipfail外掛的功能直接包含在Heartbeat裡面,主要用於檢測網路故障,並作出合理的反應,為了實現這個功能,ipfail使用ping節點或者ping節點組來檢測網路連線是否出現故障,從而及時的做出轉移措施。

Stonith外掛可以在一個沒有響應的節點恢復後,合理接管叢集服務資源,防止資料衝突,當一個節點失效後,會從叢集中刪除,如果不使用Stonith外掛,那麼失效的節點可能會導致叢集服務在多於一個節點執行,從而造成資料衝突甚至是系統崩潰。因此,使用Stonith外掛可以保證共享儲存環境中的資料完整性。

Ldirector外掛是一個監控叢集服務節點執行狀態的外掛。Ldirector如果監控到叢集節點中某個服務出現故障,就遮蔽此節點的對外連線功能,同時將後續請求轉移到正常的節點提供服務,這個外掛經常用在LVS負載均衡叢集中。

同樣,對於作業系統自身出現的問題,Heartbeat也無法監控,如果主節點作業系統掛起,一方面可能導致服務中斷,另一方面由於主節點資源無法釋放,而備份節點卻接管了主節點的資源,此時就發生了兩個節點同時爭用一個資源的狀況針對這個問題,就需要在linux核心中啟用一個叫watchdog的模組,watchdog是一個Linux核心模組,它通過定時向/dev/watchdog裝置檔案執行寫操作,從而確定系統是否正常執行,如果watchdog認為核心掛起,就會重新啟動系統,進而釋放節點資源。

在linux中完成watchdog功能的軟體叫softdog,softdog維護一個內部計時器,此計時器在一個程式寫入/dev/watchdog裝置檔案時更新,如果softdog沒有看到程式寫入/dev/watchdog檔案,就認為核心可能出了故障。watchdog超時週期預設是一分鐘,可以通過將watchdog整合到Heartbeat中,從而通過Heartbeat來監控系統是否正常執行。

HeartBeat 的作用
通過HeartBeat,可以將資源(IP以及程式服務等資源)從一臺已經故障的計算機快速轉移到另一臺正常運轉的機器上繼續提供服務,一般稱之為高可用的服務。在實際的生產應用場景中,heartbeat的功能和另一個高可用的開源軟體keepalived有很多的相同之處,在我們實際的生產業務中也是有區別的。

HeartBeat 的工作原理
heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網路鏈路和串列埠進行,而且支援冗 餘鏈路,它們之間相互傳送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方傳送的報文,那麼就認為對方失效,這時需啟動資源接管模組來接管執行在對方主機上的資源或者服務。

Heartbeat: (心跳檢測)本身是整個叢集的基礎(cluster messaging layer),負責維護叢集各節點的資訊以及它們之前通訊;只提供主從備份功能,並不能對各個節點進行監控,需要安裝ldirectord。
Resource-agent: (資源代理)就是各種的資源的ocf指令碼,這些指令碼將被LRM呼叫從而實現各種資源啟動、停止、監控等等。
Cluster-glue: 相當於一箇中間層,可以將heartbeat和crm(pacemaker)聯絡起來,主要包含2個部分,LRM和STONITH;
Ldirectord: 負責realserver的健康檢查,可以自動將realserver中當機的機器移除,不再分配請求。

通過修改Heartbeat的軟體的配置檔案,可以制定那一臺Heartbeat伺服器作為主伺服器,則另一臺將自動成為熱備伺服器。然後在熱備伺服器上配置Heartbeat守護程式來監聽來自主伺服器的心跳訊息。如果熱備伺服器在指定時間內為監聽到來自主伺服器的心跳,就會啟動故障轉義程式,並取得主伺服器上的相關資源服務的所有權,接替主伺服器繼續不間斷的提供服務,從而達到資源以及服務高可用的目的。

以上的描述heartbeat的主備模式,heartbeat還支援主主模式,即兩臺伺服器互為主備,這是他們之間還會互相傳送報文來告訴對方自己的當前的狀態,如果在指定的時間內未收到對方傳送的心跳報文,那麼,一方就會認為對方失效或者是已經當機了,這時每個執行正常的主機就會啟動自身的資源接管模組來接管執行在對方主機上的資源或者是服務,繼續為使用者提供服務。一般情況下,可以較好的實現一臺主機故障後,企業業務能夠不間斷的持續的提供服務(注意:所謂的業務不間斷)。在故障轉移期間也是需要切換時間的,heartbeat的切換時間是5-20秒。(伺服器當機的切換比人工切換要快).

另外,和keepalived高可用軟體一樣,heartbeat高可用是作業系統級別的,不是服務(軟體)級別的,可以通過簡單的指令碼控制,實現服務級別的高可用! 

故障切換的常見條件:
1)主機伺服器物理當機(硬體損壞,作業系統故障)
2)Heartbeat服務本身故障
3)兩臺主備伺服器之間的連線線路故障
應用服務故障則不會產生切換,可以通過服務當機把heartbeat服務停掉。

heartbeat內部結構有三大部分組成
叢集成員一致性管理模組(CCM用於管理叢集節點成員,同時管理成員之間的關係和節點間資源的分配,heartbeat模組負責檢測主次節點的執行狀態,以決定節點是否失效。ha-logd模組用於記錄叢集中所有模組和服務的執行資訊。

本地資源管理器(LRM)負責本地資源的啟動,停止和監控,一般由LRM守護程式lrmd和節點監控程式(Stonith Daemon)組成,lrmd守護程式負責節點間的通訊,Stonith Daemon通常是一個Fence裝置,主要用於監控節點狀態,當一個節點出現問題時處於正常狀態的節點會通過Fence裝置將其重啟或關機以釋放IP、磁碟等資源,始終保持資源被一個節點擁有,防止資源爭用的發生。

叢集資源管理模組(CRM)用於處理節點和資源之間的依賴關係,同時,管理節點對資源的使用,一般由CRM守護程式crmd、叢集策略引擎和叢集轉移引擎三個部分組成,叢集策略引擎(Cluster policy engine)具體實施這些管理和依賴,叢集轉移引擎(Cluster transition engine)監控CRM模組的狀態,當一個節點出現故障時,負責協調另一個節點上的程式進行合理的資源接管。

在Heartbeat叢集中,最核心的是heartbeat模組的心跳監測部分和叢集資源管理模組的資源接管部分,心跳監測一般由序列介面通過串列埠線來實現,兩個節點之間通過串列埠線相互傳送報文來告訴對方自己當前的狀態,如果在指定時間內未收到對方傳送的報文,則就認為對方失效,這時資源接管模組將啟動,用來接管執行在對方主機上的資源或者服務。

HeartBeat 的心跳連線
高可用叢集是指一組通過硬體和軟體連線起來的獨立計算機,它們在使用者面前表現為一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點停止工作,服務會從故障節點切換到正常工作的節點上執行,不會引起服務中斷。從這個定義可以看出,叢集必須檢測節點和服務何時失效,何時恢復為可用。這個任務通常由一組被稱為“心跳”的程式碼完成。在Linux-HA裡這個功能由一個叫做heartbeat的程式完成。
通過上面的描述,要部署heartbeat服務,至少需要兩臺主機才能完成。那麼,要實現高可用服務,這兩臺主機之間,是如何做到互相通訊互相監控的呢?
下面是兩臺heartbeat主機之間通訊的一些常用的可行方法
1)序列電纜,即所謂的串列埠(首選,缺點是距離不能太遠)
2)一根乙太網電纜量網口直連(生產環境中常用的方式)
3)乙太網電纜,通過交換機等網路裝置連線(次選,原因是增加了故障點,不好排查故障,同時線路不是專用的心跳線,容易受其他資料傳輸的影響,導致心跳報文傳送問題)

Heartbeat 的裂腦
什麼是裂腦?
由於兩臺高可用伺服器之間在指定的時間內,無法互相檢測到對方心跳而各自啟動故障轉移功能,取得了資源以及服務的所有權,而此時的兩臺高可用伺服器對都還活著並作正常執行,這樣就會導致同一個IP湖綜合服務在兩端同時啟動而發生衝突的嚴重問題,最嚴重的就是兩臺主機同時佔用一個VIP的地址,當使用者寫入資料的時候可能會分別寫入到兩端,這樣可能會導致伺服器兩端的資料不一致或造成資料的丟失,這種情況就本成為裂腦,也有的人稱之為分割槽叢集或者大腦垂直分隔!

簡單來說, Hearbeat腦裂說的就是兩臺服務都正常,但是就是檢測不到對方的心跳資訊(心跳通訊出現故障),兩臺heartbeat都繫結VIP,這就是腦裂,由於相互失去聯絡,兩臺伺服器本能的爭取接管資源,最嚴重的後果:共享資源被瓜分,服務都起不起來了,又或者服務都起來,但是共享資源同時寫,最後資料就被破壞了!

導致裂腦發生的原因:  
一般來說,裂腦的發生,主要是由以下的幾個原因導致的:
1)高可用伺服器對之間心跳線路故障,導致無法正常的通訊。原因比如:
    1--心跳線本身就壞了(包括斷了,老化);
    2--網路卡以及相關驅動壞了,IP配置及衝突問題;
    3--心跳線間連線的裝置故障(交換機的故障或者是網路卡的故障);
    4--仲裁的伺服器出現問題。
2)高可用伺服器對上開啟了防火牆阻擋了心跳訊息的傳輸;
3)高可用伺服器對上的心跳網路卡地址等資訊配置的不正確,導致傳送心跳失敗;
4)其他服務配置不當等原因,如心跳的方式不同,心跳廣播衝突,軟體出現了BUG等。

簡單來說,Heartbeat腦裂的原因可能就是:
1)心跳鏈路故障,導致無法正常通訊;(比如: 網線誤拔,心跳線斷了,無法通訊;心跳線之間的中轉裝置壞了,仲裁裝置壞了;)
2)開啟了防火牆阻擋了心跳資訊傳輸;
3)心跳網路卡地址等配置不正確;使用網路直連時,網路卡驅動壞了,區域網IP衝突;
4)心跳方式,心跳廣播衝突,軟體bug;

防止腦裂發生的方法:
發生腦裂的時候,對業務的影響是及其嚴重的,有的時候甚至是致命的。
比如:兩臺高可用的伺服器對之間發生腦裂,導致互相競爭同一個IP資源,就如同我們區域網內常見的IP地址衝突一樣,兩個機器就會有一個或者兩個不正常,影響使用者正常訪問伺服器。如果是應用在資料庫或者是儲存服務這種極重要的高可用上,那就導致使用者釋出的資料間斷的寫在兩臺伺服器上的惡果,最終資料恢復及困難或者是難已恢復
實際的生產環境中,我們可以從以下幾個方面來防止裂腦的發生:
1)同時使用序列電纜和乙太網電纜連線,同時用兩條心跳線路,這樣一條線路壞了,另一個線路還是好的,依然能傳送訊息(推薦的)
2)檢測到裂腦的時候強行的關閉一個心跳節點(需要特殊的節點支援,如stonith,fence),相當於程式上備節點發現心跳線故障,傳送關機命令到主節點。
3)做好對裂腦的監控報警(如郵件以及手機簡訊等),在問題發生的時候能夠人為的介入到仲裁,降低損失。當然,在實施高可用方案的時候,要根據業務的實際需求確定是否能夠容忍這樣的損失。對於一般的網站業務,這個損失是可控的(公司使用)
4)啟用磁碟鎖。正在服務一方鎖住共享磁碟,腦裂發生的時候,讓對方完全搶不走共享的磁碟資源。但使用鎖磁碟也會有一個不小的問題,如果佔用共享盤的乙方不主動解鎖,另一方就永遠得不到共享磁碟。現實中介入服務節點突然當機或者崩潰,另一方就永遠不可能執行解鎖命令。後備節點也就截關不了共享的資源和應用服務。於是有人在HA中涉及了“智慧”鎖,正在服務的一方只在發現心跳線全部斷開時才啟用磁碟鎖,平時就不上鎖了
5)報警報在伺服器接管之前,給人員處理留足夠的時間就是1分鐘內報警了,但是伺服器不接管,而是5分鐘之後接管,接管的時間較長。資料不會丟失,但就是會導致使用者無法寫資料。
6)報警後,不直接自動伺服器接管,而是由人員接管。
7)增加仲裁的機制,確定誰該獲得資源,這裡面有幾個參考的思路:
    1--增加一個仲裁機制。例如設定參考的IP,當心跳完全斷開的時候,2個節點各自都ping一下參考的IP,不同則表明斷點就出現在本段,這樣就主動放棄競爭,讓能夠ping通參考IP的一端去接管服務。
    2--通過第三方軟體仲裁誰該獲得資源,這個在阿里有類似的軟體應用

簡單來說,防止Heartbeat腦裂的辦法:
1)同時使用序列電纜和乙太網電纜連線,同時使用兩條心跳線;
2)檢測到裂腦時,強制關閉一個節點,(需要特殊裝置支援,如stonish和fence),相當於程式上的備節點發現心跳故障,傳送關機指令到主節點;
3)做好監控預警,即做好腦裂監控報警(在仲裁裝置上做),仲裁方式停服;
4)多個仲裁機制(仲裁裝置,第三方仲裁軟體,並確定讓那個節點接管服務);
5) 一旦報警,簡訊電話通知運維人員,服務不要自動接管服務,有人員操作;
5)啟用磁碟鎖;

HeartBeat 的配置檔案
heartbeat主要的配置檔案有3個:
1)認證檔案authkeys
2)主配置檔案ha.cf
3)資原始檔haresources

接下來就重點說一下這3個檔案的具體功能以及配置:
1)heartbeat的認證配置檔案authkeys,內容如下
    auth 1
    1 crc
    2 sha1 HI!
    3 md5 Hello!
該檔案主要是用於叢集中兩個節點的認證,採用的演算法和金鑰(如果有的話)在叢集中節點上必須相同,目前提供了3種演算法:md5,sha1和crc。
其中crc不能夠提供認證,它只能夠用於校驗資料包是否損壞而sha1,md5需要一個金鑰來進行認證,從資源消耗的角度來講,md5消耗的比較多,sha1次之,因此建議一般使用sha1演算法
如果要採用sha1演算法,只需要將authkeys中的auth 指令(去掉註釋符)改為2,而對應的2 sha1行則需要去掉註釋符(#),後面的金鑰自己改變(兩節點上必須相同)。改完之後,儲存,同時需要改變該檔案的屬性為600,否則heartbeat啟動將失敗

2)heartbeat的主要配置檔案ha.cf
第一個是ha.cf該檔案位於在安裝後建立的/etc/ha.d目錄中。該檔案中包括為Heartbeat使用何種介質通路和如何配置他們的資訊。在原始碼目錄中的ha.cf檔案包含了您可以使用的全部選項,詳述如下:

debugfile /var/log/ha-debug     用於記錄heartbeat的除錯資訊
logfile /var/log/ha-log        用於記錄heartbeat的日誌資訊
如果未定義上述的日誌檔案,那麼日誌資訊將送往local0(對應的#/var/log/messages),如果這3個日誌檔案都未定義,那麼heartbeat預設情況下
將在/var/log下建立ha-debug和ha-log來記錄相應的日誌資訊。

keepalive 2        傳送心跳報文的間隔,預設單位為秒,如果你毫秒為單位,那麼需要在後面跟ms單位,如1500ms即代表1.5s
deadtime 30      用於配置認為對方節點菪掉的間隔
warntime 10      發出最後的心跳警告報文的間隔
initdead 120      網路啟動的時間
udpport 694       廣播/單播通訊使用的udp埠
bcast eth0 Linux      心跳所使用的網路介面

baud 19200      波特率,串列埠通訊的速度。
udpport 694     使用埠694進行bcast和ucast通訊。這是預設的,並且在IANA官方註冊的埠號。

mcast eth0 225.0.0.1 694 1 0
如果採用組播通訊,在這裡可以設定組播通訊所使用的介面,繫結的組播ip地#址(在224.0.0.0 - 239.255.255.255間),通訊埠,ttl(time to live)所能經過路由的#跳數,是否允許環回(也就是本地發出的資料包時候還接收)

ucast eth0 192.168.1.2       如果採用單播,那麼可以配置其網路介面以及所使用的ip地址
auto_failback on        該選項是必須配置的!用於決定當擁有該資源的屬主恢復之後,資源是否變遷:是遷移到屬主上,還是在當前節點上繼續執行,直到當前節點出現故障。
stonith baytech /etc/ha.d/conf/stonith.baytech        用於共享資源的叢集環境中,採用stonith防禦技術來保證資料的一致性

watchdog /dev/watchdog       該指令是用於設定看門狗定時器,如果節點一分鐘內都沒有心跳,那麼節點將重新啟動
node ken3      設定叢集中的節點,注意:節點名必須與uname –n相匹配

node primary.mydomain.com    該選項是必須配置的。叢集中機器的主機名,與“uname –n”的輸出相同。
node backup.mydomain.com    該選項是必須配置的。同上。
respawn     該選項是可選配置的:列出將要執行和監控的命令。例如:要執行ccm守護程式,則要新增如下的內容:


ping 10.10.10.254
ping指令以及下面的ping_group指令是用於建立偽叢集成員,它們必須與下述#的ipfail指令一起使用,它們的作用是監測物理鏈路,也就是說如果叢集節點與上述偽裝置不相通,那麼該節點也將無權接管資源或服務,它將釋放掉資源。

respawn hacluster /usr/lib/heartbeat/ccm
使得Heartbeat以userid(在本例中為hacluster)的身份來執行該程式並監視該程式的執行情況,如果其死亡便重啟之。
對於ipfail,則應該是:
respawn hacluster /usr/lib/heartbeat/ipfail
對於pingd則應該是:
respawn hacluster /usr/lib64/heartbeat/pingd -m 100 -d 5s

注意:如果結束程式的退出程式碼為100,則不會重啟該程式。
apiauth pingd gid=haclient uid=hacluster

apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster 設定你所指定的啟動程式的許可權

3)heartbeat的資源配置檔案haresources
配置好ha.cf檔案之後,便是haresources檔案。
該檔案列出叢集所提供的服務以及服務的預設所有者,該檔案主要是為部署的叢集配置資源或者服務。
注意:兩個叢集節點上的該檔案必須相同。叢集的IP地址是該選項是必須配置的,不能在haresources檔案以外配置該地址, haresources檔案用於指定雙機系統的主節點、叢集IP、子網掩碼、廣播地址以及啟動的服務等。

它的每一有效行的格式如下:
node-name resource1 resource2 ... resourceN
其中node-name即為叢集中某一節點的名稱,必須與uname –n相同,
後面的資源組resource1 resource2 …resourceN中每一個資源都是一個shell指令碼,它們的搜尋路徑為/etc/init.d/和/usr/local/etc/ha.d/resource.d(該路徑根據你所安裝heartbeat的路徑有所不同),heartbeat為我們提供了一個非常好的資源擴充套件框架,如果我們需要控制一種自己的資源,只需要實現一個支援start和stop引數的shell指令碼就可以了,目前heartbeat所支援的資源指令碼可以在我提供的上述路徑中去檢視。

如下配置進行說明:
node-name network-config
其中node-name指定雙機系統的主節點,取值必須匹配ha.cf檔案中node選項設定的主機名中的一個,node選項設定的另一個主機名成為從節點。network-config用於網路設定,包括指定叢集IP、子網掩碼、廣播地址等。resource-group用於設定heartbeat啟動的服務,該服務最終由雙機系統通過叢集IP對外提供。在本文中我們假設要配置的HA服務為Apache和Samba。
在haresources檔案中需要如下內容:
primary.mydomain.com 192.168.85.3 httpd smb
該行指定在啟動時,節點linuxha1得到IP地址192.168.85.3,並啟動Apache和Samba。在停止時,Heartbeat將首先停止smb,然後停止Apache,最後釋放IP地址192.168.85.3。這裡假設命令“uname –n”的輸出為“primary.mydomain.com”-如果輸出為“primary”,便應使用“primary”。
primary.mydomain.com IPaddr::192.168.21.107/24/eth0 drbddisk::r0 Filesystem::/dev/drbd1::/data::ext4 nfs
正確配置好haresources檔案之後,將ha.cf和haresource拷貝到/etc/ha.d目錄。
注意:資原始檔中能執行的命令必須在/etc/ha.d/resource.d/ 中可見!

相關文章