修復Proxmox VE:集叢未啟動 / Fix Proxmox VE: Cluster Not Ready
本篇是修復Proxmox VE的集叢(Cluster)中遇到「TASK ERROR: cluster not ready – no quorum?」的錯誤。這個錯誤是因為集叢未正常啟動,以下說明造成錯誤的原因以及解決方法。
This article describes the problem of Proxmox VE Cluster: “TASK ERROR: cluster not ready – no quorum?”. A proposed solution to the problem is executing “pvecm expected 1”. Following are the problem description and solutions.
問題狀況 / Problem Description
在Proxmox VE是在集叢的狀況下,在節點(Node)操作的時候進行虛擬機器的建立(create)、刪除(remove)、備份(backup)、遷移(migrate)時,有時候會出現以下錯誤訊息:
TASK ERROR: cluster not ready – no quorum?
在這個狀態底下,將不能對虛擬機器進行任何操作。而虛擬機器本身則可以繼續運作,不會中斷。
你也可以用pvecm status指令來查詢看看現在的狀態:
請Proxmox VE節點伺服器上執行以下指令
pvecm status
Proxmox VE會顯示集叢現在的狀態,例如:
Version: 6.2.0
Config Version: 3
Cluster Name: dlll-cias
Cluster Id: 52033
Cluster Member: Yes
Cluster Generation: 144
Membership state: Cluster-Member
Nodes: 1
Expected votes: 3
Total votes: 1
Node votes: 1
Quorum: 2 Activity blocked
Flag:
Ports Bound: 0
Node name: proxmox-02
Node ID: 2
Multicast addresses: 239.192.203.13
其中你可以注意到「Quorum: 2 Activity blocked」這段訊息,表示你的集叢是在鎖定的狀態。
問題原因 / Causes of Problem
發生這個問題是因為Proxmox VE的集叢沒有正常運作。quorum是集叢中重要的一個服務元件,如果集叢有任何設定錯誤,都會導致quorum無法正常啟動。因此遇到這個問題時,並不是去啟動quorum,而是要先解決造成集叢錯誤的原因。
造成集叢錯誤的原因中,最常見的就是節點之間網路的斷線,集叢中節點數量低於2時,集叢就會被鎖住。如果集叢中有pmox1、pmox2、pmox3三臺伺服器,然後把pmox3網路中斷。接著過不久之後,pmox3就會陷入「no quorum」的狀態。這是因為Proxmox VE Cluster預設期待集叢中必須要有2個節點(Node)以上,可是因為網路斷線的緣故,pmox3只能偵測得到一臺Node,這時候集叢就會把pmox3鎖住。因此才會出現「Quorum: 2 Activity blocked」這個狀態。
手動解決方法 / Manual Solution
解決方法是暫時把集叢的期待數量從2降低為1。做法如下:
pvecm expected 1
這個步驟會讓集叢改為只期待1個節點正常運作。
service pve-cluster restart
這個動作會重新載入集叢設定,而虛擬機器不受影響。
再使用pvecm status查詢時,會發現Quorum已經變成1,而Activity blocked狀態已經解除。接著就能夠進行虛擬機器的新增、刪除、備份、遷移。而當該節點與集叢正常運作時,節點設定不需要任何修改。
自動解決方法 / Automatic Solution
為了避免網路異常時集叢每次都會把自己鎖定,我們可以每天定時去檢查集叢的狀態。如果陷入「Activity blocked」的時候,就自動進行解除的動作。
- 建立/root/pulipuli_scripts目錄:
mkdir /root/pulipuli_scripts
- 請把cluster_is_activity_blocked.sh跟cluster_disable_activity_blocked.sh兩個檔案下載到該目錄底下:
wget http://goo.gl/6gyDnH -O /root/pulipuli_scripts/cluster_is_activity_blocked.sh
wget http://goo.gl/r37ySO -O /root/pulipuli_scripts/cluster_activity_unblocked.sh - 新增可執行權限:
chmod +x /root/pulipuli_scripts/*.sh
- 加入crontab排程:
crontab -e
新增以下設定:# 定期解除Proxmox VE Cluster鎖定狀態
0 3 * * * /root/pulipuli_scripts/cluster_activity_unblocked.sh
這樣子每天凌晨3點的時候,Proxmox VE都會檢查集叢,然後嘗試解除被鎖定的狀態。
這個方法嚴格來說並不算是完全解決
回覆刪除因為設定成pvecm expected 1之後,就無法復原整個狀態,還是會有點差
應該再找尋更好的解決方法
補充一下這個方法的問題
回覆刪除這不是一個解決根本問題的方法,而是事後在cluster不會自動重新啟動時才用的方法
通常會出現這樣的問題,是因為cluster中有node或storage的網路出現了問題,這在備份的時候網路中斷後特別容易發生。
解決方法是先檢查每台node跟storage是否有正常運作,如果排除掉有問題的機器後,通常cluster就會正常啟動了