Proxmox 搭建高可用性伺服器群 (HA, High Availability)

在上一篇「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點是需要注意的:

  1. Guest 系統需要運行在 ZFS 檔案系統上
  2. 要參與 HA 的 Host, 都要有一個同名的 ZFS 空間。

第2點應該算是 Proxmox 為了簡化設定的關係,這點對於既有的系統要上 HA 有點麻煩。

退出 Cluster

2022/08/24 更新

自己試著把現成的系統加入 Cluster 後,發現有點難搞,也很怕資料不見,要加入簡單要退出難。建議是新的 Server 在購入時,就買入規格一樣的電腦,這樣用起來可能會簡單一點。

會在虛擬機上確定配置後,再開始run。

退出的參考資料

TBD

系統安裝

系統的安裝基本上還是以 VMWare 來測試,要特別注意的是

  1. 要設定使用 ZFS RAID0
  2. 安裝節點的hostname名稱要取的不一樣

以 ZFS RAID0 安裝

以 ZFS RAID0 安裝

沒有使用 ZFS 安裝的話,後續就沒辦法用快照複製。

Hostname設定

安裝時若沒正確設定 hostname,讓3台都設定一樣的話,會導致設定 Cluster or HA 時有問題。若裝好才發現,可以使用後面提到直接複製的修改方法,來修正此問題。

 

複製 Proxmox 虛擬機

安裝好一台 Proxmox ,並做好基本的設定。此時可以著手安裝第二台、第三台。比較快的方法是直接將其複製2份,再做一些修改就能使用。

複製2份並重新命名

分別將 p0, p1, p2 的虛擬機打開,修改其名稱,這樣會比較好辨認。

更改虛擬機名稱

將3台虛擬機啟動,p1和p2會偵測到內部ID有重複,會詢問是經過移動或複製的,這裡請選複製。

選擇Copied

變更設定

此時 p1 和 p2 的設定會和 p0 完全一致,當然這樣是不行的。所以需要修改其

  1. IP 設定
  2. hostname
  3. hosts 檔案

直接從 console 登入後,可以透過 ip addr 命令,觀查 IP 位址。

目前IP

這個 IP 和 p0 會一樣,所以我們要將 p1 改成 192.168.197.143, p2 改成 192.168.197.144。以 vi 編輯 /etc/network/inetrfaces,修改 IP

修改IP

接著修改 /etc/hostname,只有一行,改成p1 / p2

修改 /etc/hostname

最後修改 /etc/hosts,把自己的名稱改成對應的設定

修改 /etc/hosts

完成後將機器重開生效。

設定 Cluster

創建 Cluster

首先先用瀏覽器打開3個 Proxmox 的管理網頁,然後從 p0 的頁面進行 Cluster 的創建。選擇 DataCenter –> Cluster –> Create Cluster –> Create。

創建 Cluster

創建完成後,就可以看到產生了 Cluster “MY”,按下 Join Information,選擇 Copy Information 來將要加入此 Cluster 的訊息複製起來。

複製 Cluster 訊息

加入 Cluster

接著在 p1 和 p2 節點上,選擇 DataCenter –> Cluster –> Join Cluster,然後將剛複制的訊息,貼到 Information 內。這樣就會帶出首節點的訊息,要加入 Cluster 的話,也要輸入 p0 的密碼。

加入 Cluster

p1 和 p2 加入 Cluster 後,因為網路名稱的變化,需要重新整理網頁登入。加入完成後,在 p0 / p1 / p2 都可以看到完整的 Cluster 成員的資訊了。

Cluster完成

建立 LXC 虛擬機

接著就要建立一個範例虛擬機,做為要轉移的對象。這部份就不介紹了,建立完抓圖如下。

建立第1個LXC

設定 Replication

工作要能夠即時轉移,最重要的就是資料在其它機器要有備份,或者是在網路空間上。這邊我們假定的環境是資料都在本地機器,所以要透過 Replication 功能,定期複製「快照」。複製快照在第一次會比較花時間,後續就只會傳送差異的部份。

選擇 p0 –> 100 –> Replication –> Add, 設定每分鐘要資料同步到另外2台機器(需新增2次)。

 

同步任務

同步狀況

可以看到後續的同步,只會運行極短的時間。同步後,在p1的機器上就可看到包含了 CT100 的磁碟檔了。

磁碟同步

 

 

建立 HA 群組

接著要建立 HA 群組,讓要運行的虛擬機可以在這個群組的機器內轉移。選擇 DataCenter –> HA –> Group ,選擇至少3個節點,勾選 nofallback。nofallback 的用途,是當問題機器重新上線時,是否將工作轉移會原始機器執行。

 

HA群組創建

選定可轉移的工作

接著在 DataCenter –> HA –> Add 裡,選擇可轉移的工作。

HA Machine

然後就可以看到新設定的工作,與每個節點的狀態了。

設定完成

進行測試

設定完成就可以開始進行測試,由於我們會將p0節點「不正常關機」,所以從p1節點的管理頁來觀查整個狀態。根據測試,如果節點是正常關機,則工作就不會被轉移。

接著我們從 VMWare 將 p0 節點 「Power off」來直接關閉,記得不要選擇 「Shut Down Guest」。等待約 60~120秒後,從p1的控制頁面就可以看到工作被轉移了。

偵測中

轉移完成

工作被轉移後,連帶 Replication 的設定也會自動修改,真是貼心啊~

Target變成p0,p2

過半損壞無法轉移

如果此時再把 p1 給關掉,並在 p2 的控制頁面觀看的話,會發現即使等了很久,工作也無法轉移過來。主要分辨方法,可以看是否有 “No quorum” 這個訊息,就是無法找到超過一半的HA Group節點。

損壞節點過多

當再把 p0 節點打開,稍等一會後,就可以看到 CT100 重新運行了。

Quorum 恢復正常

結語

本篇是學習 Proxmox HA 的紀錄,自己也沒用上,為何呢?其一是要有3台機器有點多,公司肯定不會花這個錢。第2是沒試過,也不敢在公司的機器上亂玩。雖然說實在的風險不大,不過還是覺得老老實實的用 tar 備份比較穩定。

最後,最近堅哥抄襲風波的關係,再次強調,這篇文章嚴重參考 2021 iThome 的鐵人賽(Jason Cheng文章) ,我不是原創!~~ 不過也沒有半點複製貼上,應該也算不上是抄襲吧.

Leave a Reply

請輸入答案 × 8 = 64