在上一篇「Proxmox Linux 虛擬伺服器重建流程」有提到 Proxmox 平台也具有高可用性的設定,本篇就來簡單說明一下其簡易的設定方法。本文是參考 2021 iThome 的鐵人賽(Jason Cheng文章)而來的,重點記錄自己用到的部份。
HA, High Availability
HA 是透過建立至少3個節點的HA Group,來達到錯誤偵測與備援啟用。為什麼至少要3個節點呢?這牽涉到怎麼才叫不正常狀態,這裡用的方法就是當一個節點可通連的節點(包含自己),超過1/2時 ,就代表他所在的網路是正常的。由此可知,當只有2個節點,一個損壞的話,另一個就只算50%,所以也無法啟用備援功能。
系統遷移
要組成一個 HA Group,首先要建立 Cluster ,並且將節點們加入,再建立 HA Group。要備援的系統,要透過定期的同步 (Replication) 到其它節點上。系統損壞時,才能自動的從其它節點啟用。這邊使用的同步,是利用 ZFS 檔案系統的 Snapshot 功能,除了首次會花比較久的時間外,後續的同步都是很快的。關於同步,有2點是需要注意的:
- Guest 系統需要運行在 ZFS 檔案系統上
- 要參與 HA 的 Host, 都要有一個同名的 ZFS 空間。
第2點應該算是 Proxmox 為了簡化設定的關係,這點對於既有的系統要上 HA 有點麻煩。
退出 Cluster
2022/08/24 更新
自己試著把現成的系統加入 Cluster 後,發現有點難搞,也很怕資料不見,要加入簡單要退出難。建議是新的 Server 在購入時,就買入規格一樣的電腦,這樣用起來可能會簡單一點。
會在虛擬機上確定配置後,再開始run。
退出的參考資料
TBD
系統安裝
系統的安裝基本上還是以 VMWare 來測試,要特別注意的是
- 要設定使用 ZFS RAID0
- 安裝節點的hostname名稱要取的不一樣
沒有使用 ZFS 安裝的話,後續就沒辦法用快照複製。
安裝時若沒正確設定 hostname,讓3台都設定一樣的話,會導致設定 Cluster or HA 時有問題。若裝好才發現,可以使用後面提到直接複製的修改方法,來修正此問題。
複製 Proxmox 虛擬機
安裝好一台 Proxmox ,並做好基本的設定。此時可以著手安裝第二台、第三台。比較快的方法是直接將其複製2份,再做一些修改就能使用。
分別將 p0, p1, p2 的虛擬機打開,修改其名稱,這樣會比較好辨認。
將3台虛擬機啟動,p1和p2會偵測到內部ID有重複,會詢問是經過移動或複製的,這裡請選複製。
變更設定
此時 p1 和 p2 的設定會和 p0 完全一致,當然這樣是不行的。所以需要修改其
- IP 設定
- hostname
- hosts 檔案
直接從 console 登入後,可以透過 ip addr 命令,觀查 IP 位址。
這個 IP 和 p0 會一樣,所以我們要將 p1 改成 192.168.197.143, p2 改成 192.168.197.144。以 vi 編輯 /etc/network/inetrfaces,修改 IP
接著修改 /etc/hostname,只有一行,改成p1 / p2
最後修改 /etc/hosts,把自己的名稱改成對應的設定
完成後將機器重開生效。
設定 Cluster
創建 Cluster
首先先用瀏覽器打開3個 Proxmox 的管理網頁,然後從 p0 的頁面進行 Cluster 的創建。選擇 DataCenter –> Cluster –> Create Cluster –> Create。
創建完成後,就可以看到產生了 Cluster “MY”,按下 Join Information,選擇 Copy Information 來將要加入此 Cluster 的訊息複製起來。
加入 Cluster
接著在 p1 和 p2 節點上,選擇 DataCenter –> Cluster –> Join Cluster,然後將剛複制的訊息,貼到 Information 內。這樣就會帶出首節點的訊息,要加入 Cluster 的話,也要輸入 p0 的密碼。
p1 和 p2 加入 Cluster 後,因為網路名稱的變化,需要重新整理網頁登入。加入完成後,在 p0 / p1 / p2 都可以看到完整的 Cluster 成員的資訊了。
建立 LXC 虛擬機
接著就要建立一個範例虛擬機,做為要轉移的對象。這部份就不介紹了,建立完抓圖如下。
設定 Replication
工作要能夠即時轉移,最重要的就是資料在其它機器要有備份,或者是在網路空間上。這邊我們假定的環境是資料都在本地機器,所以要透過 Replication 功能,定期複製「快照」。複製快照在第一次會比較花時間,後續就只會傳送差異的部份。
選擇 p0 –> 100 –> Replication –> Add, 設定每分鐘要資料同步到另外2台機器(需新增2次)。
可以看到後續的同步,只會運行極短的時間。同步後,在p1的機器上就可看到包含了 CT100 的磁碟檔了。
建立 HA 群組
接著要建立 HA 群組,讓要運行的虛擬機可以在這個群組的機器內轉移。選擇 DataCenter –> HA –> Group ,選擇至少3個節點,勾選 nofallback。nofallback 的用途,是當問題機器重新上線時,是否將工作轉移會原始機器執行。
選定可轉移的工作
接著在 DataCenter –> HA –> Add 裡,選擇可轉移的工作。
然後就可以看到新設定的工作,與每個節點的狀態了。
進行測試
設定完成就可以開始進行測試,由於我們會將p0節點「不正常關機」,所以從p1節點的管理頁來觀查整個狀態。根據測試,如果節點是正常關機,則工作就不會被轉移。
接著我們從 VMWare 將 p0 節點 「Power off」來直接關閉,記得不要選擇 「Shut Down Guest」。等待約 60~120秒後,從p1的控制頁面就可以看到工作被轉移了。
工作被轉移後,連帶 Replication 的設定也會自動修改,真是貼心啊~
過半損壞無法轉移
如果此時再把 p1 給關掉,並在 p2 的控制頁面觀看的話,會發現即使等了很久,工作也無法轉移過來。主要分辨方法,可以看是否有 “No quorum” 這個訊息,就是無法找到超過一半的HA Group節點。
當再把 p0 節點打開,稍等一會後,就可以看到 CT100 重新運行了。
結語
本篇是學習 Proxmox HA 的紀錄,自己也沒用上,為何呢?其一是要有3台機器有點多,公司肯定不會花這個錢。第2是沒試過,也不敢在公司的機器上亂玩。雖然說實在的風險不大,不過還是覺得老老實實的用 tar 備份比較穩定。
最後,最近堅哥抄襲風波的關係,再次強調,這篇文章嚴重參考 2021 iThome 的鐵人賽(Jason Cheng文章) ,我不是原創!~~ 不過也沒有半點複製貼上,應該也算不上是抄襲吧.