當數位營運架構愈來愈重要,網路服務不能中斷太久,你不能不考慮 HA 高可靠性。有些人就想將服務都上雲端就好了,為何要自己做基礎建設?沒錯這很省的維護叢集架構,但天下沒有白吃的午餐,雲端服務就像便利商店,生活大小事全部都在便利商店搞定,你就知道有多昂貴了。現在中階的伺服器運做30-50 個 VM 不是問題,如果全部運做在 AWS 或是 Azure 並加上頻寬的成本,你就知道那其實是一大筆費用。
關鍵是公司對營運系統上線時間的容忍度是多少? 雲端服務雖然可靠性更高,但是你要保證公司對外網路不會斷線喔!一旦斷線,營運也是一樣停擺。內網斷線比起外網斷線機率還是少得多。再來就要回到系統層面的設計。要在地端部署自己的高可靠性叢集,有多種架構選擇。大概常用的就是
- Openstack
- VMware
- Proxmox VE
Openstack 雖然開源免費但是它架構很大,建置及維運的複雜度也高,只適合大型企業使用。VMware 是比較多人使用的方案,但是要達到 live migration 也是要負擔硬體及軟體授權費用,可能三節點伺服器配置加上Storage 及10G/FC switch 也要破百萬。中小企業可能就會考慮再三。


圖一: Proxmox 三節點 cluster with replication HA
Proxmox VE 來到 2020 年也有 15 年歷史了。基本上它就是 VMware 的開源替代方案,但它不是賣軟體授權,而是訂閱制的企業級軟體更新,不過就功能完整性及穩定性來說其實與 VMware 相當接近,對中小企業來說其實已相當足夠。我個人對 Proxmox VE 的備份及回存功能相當滿意。如果是 VMware 的使用者還需要額外添購備份軟體,但是 Proxmox VE 整合的很好。備份完成會主動 email 通知,你可以查看是否備份成功。

圖二: Proxmox 在硬體故障,VM切換節點後,replication job 也會同步變更target node
提到 HA 叢集,Proxmox VE 除了使用 shared storage 外。另外一個方法就是使用 replication。replication 的架構少了 shared storage 及 10G/FC switch ,部署的成本是比較低的,非常適合中小企業使用。但是 replication 並非完整的 live migration,當 VM 在硬體故障 failover 到其他節點時還是有一定的資料落差,針對這個問題,有些見解可以提供給大家參考。
我們知道 Proxmox VE 的 replication 使用節點間的 local ZFS storage 來做快照複製。第一次快照複製因爲是整個 VM 的磁碟備份會花比較多的時間。但是接下來的排程備份就是差異備份,速度就快很多。為了減少切換節點時資料的落差,我們可以縮短備份的時間差。例如預設是 15鐘 同步一次。Proxmox VE 可以允許1 分鐘同步一次,但是這麼頻繁的快照,其實對 VM 的效能會有一定程度的影響。那問題來了,在failover 過去其他節點時還是有些許的資料落差,有什麼方法可以做個補強?
如果你的公司系統VM並不是很忙碌,可能很久才會更新一次,那15 分鐘的排程備份是足夠的。如果你的公司系統是非常忙碌的,希望在 HA failover 的過程後資料能夠完全轉移,VM就必須做一些如下的建議措施。
一般來說忙碌的系統都有資料庫在運作,可能是 ERP 或是電子商務系統。你可以先做好資料庫複製或是設計資料庫叢集。例如:
使用 MySQL 或是 PostgreSQL replication,當資料寫入 Master 節點之後就會複製一份到 Slave 節點。如此當硬體故障 HA failover 到其他節點時,依舊有一份最新資料可做回存。


圖三: 三節點資料庫叢集
或是使用 MySQL Cluster - ProxySQL+ Percona XtraDB Cluster 建置三節點資料庫叢集,當一節點故障時還能有最新的資料可以存取。當然如果系統使用其他種類資料庫,那你就要研究其他資料庫叢集的方式了。其實無論有無做 HA ,忙碌系統的資料庫複製是一定要做的,避免單點故障,資料還有完整的一份可以回存。
至於檔案的部份,一般本地端都有備份,比較不會有資料遺失的問題。經過這樣的調整,讓 Proxmox VE replication HA 更加親民,主要是省了部署 shared storage 及 10G / FC switch 的成本,估計應該可以節省超過一半的HA 部署費用,這效益是看得到的。
當然 shared storage 還是有其優點,就留著下次再來探討使用 shared storage 的架構。