關於我自己

2019年2月2日 星期六

[經驗分享]深入 Proxmox VE 複寫功能



建立 Proxmox VE 叢集以後,若沒有做共用儲存 (Share Storage) 而是採用超融合 (Hyper Converged) 模式,虛擬機器的磁碟也會存在 Node 節點裡,則會面臨節點故障時無法有虛擬機器磁碟備份的存在,更無法做備援,甚至無法使用高可用性 (High Availability) 的能力。

在這種情況下,Proxmox VE 有什麼應對方案?







複寫要求

在 Proxmox VE 平台,提供了虛擬機器與容器都可以使用的複寫 (Replication) 方案,它可以設定排程,定時將虛擬機器與容器抄寫一份最新狀態到另一個節點,若原節點故障時,在另一個節點就會有一份副本可以使用。

想要使用 PVE 所提供的複寫功能,需要滿足以下條件:

  • 來源與目的節點都要位在同一個叢集
  • 虛擬機器或容器的磁碟必須放在 ZFS 儲存
  • 來源與目的節點要有同樣名稱的 ZFS 儲存
  • 目的節點需要有足夠容量的儲存空間







複寫設定

要開始設定複寫功能,請到 [Node 節點] > [VM 虛擬機器 / CT 容器] > [Replication 複寫] > [Add 增加],即可進入設定畫面。

進入複寫設定功能


開啟複寫設定畫面以後,設定項相當簡單,欄位說明如下:

  • 目標
    請選擇要複寫過去的目標節點,需注意剩餘空間是否足夠。
     
  • 排程
    點選下拉清單以後,有內建多個項目可以選擇,例如每30分鐘、每2小時、每天02:30與22:30...等,若不有符合需求者也可以自行輸入。
     
  • 速率限制
    若擔心複寫的時候佔據太多頻寬影響到其它運作中服務的效能,可以在這裡設定頻寬上限。
      
  • 備註
    可以輸入方便日後回頭看這個設定的說明文字。
      
  • 啟用
    打勾表示讓排程工作生效。


設定完成以後,就會出現剛才所建立的這一筆複寫工作。若不想等到排程觸發時間,可以按下 [Schedule now 立即執行排程],系統會在1分鐘內執行這項工作。

複寫工作設定完成與立即執行排程







複寫說明

在複寫過程中會有記錄顯示,但有個需要特別注意的地方:進行複寫這件事的工作 (Task) 並不會所顯示在系統主畫面下方的記錄視窗,要點進來節點或虛擬機器的複寫頁籤才能看見

要查看正在進行的複寫工作內容狀況,或是上一次複寫工作的結果,可以選取該筆工作後,再按下 [Log 記錄] 按鈕。

查看複寫工作記錄內容


在這個視窗裡,我們可以清楚的知道複寫的各種過程資訊,以及傳輸容量與速度,對於日後掌握問題排除時提供很重要的細節。

複寫完成以後,也可以到目的節點的儲存區做再次確認。

目的節點儲存查看是否複寫成功


如上圖紅框處所示,可以確認在目的節點已經有這台虛擬機器的複寫磁碟存在。

另外,如果來源的虛擬機有做過快照,在複寫時也會一併抄寫過來。上圖中的 vm-129 這台虛擬機器,就是把來源端的名為「to_ssdpool1」的快照給抄寫過來,抄寫過來的快照名稱會是 state 而非 disk。





進階說明

在使用複寫功能時,除了會基本的新增、執行以及查看記錄,還有兩件重點相當關鍵。

自訂排程


在排程定義的格式中,可以使用以下方式進行表示。

  • mon..fri 03:00
    每週一 (mon) 到週五 (fri) 的凌晨三點做一次,中間的 .. 表示為連續,也可以輸入為 mon,tue,wed,thu,fri 03:00。
     
  • mon..fri
    每週一 (mon) 到週五 (fri) 的凌晨0點做一次。
     
  • */2:00
    每天的每兩個小時做一次。
     
  • */1
    每天的每一分鐘做一次。
     
  • 19:00
    每天的下午七點做一次。
     
  • mon..fri 8..17,22:0/15
    每週一到週五,早上八點至下午六點之間以及晚上十點至十一點之間,每 15 分鐘做一次。
     
  • 12,14,16,18,20,22:5
    在 12:05、14:05、16:05、18:05、20:05、20:05 時間點做一次。



複寫原理


PVE 所提供的複寫功能,是基於 ZFS 快照複寫 (Snapshot Replication) 予以實現的,只要會使用 ZFS 指令者,就可以看出他是怎麼進行。

以 ZFS 指令查看複寫相關資訊


所以,我們可以得知一個非常重要的優點,因為基於 ZFS 快照複寫,所以做完第一次的完整複寫以後,往後的每次排程複寫都只有傳輸異動的部份,也就是說抄寫過去的容量少,速度快。

同時也因為 ZFS 是寫入時複製 (Copy on Write) 的檔案系統,所以在準備那一份要用來傳輸的快照將會非常快。






結論

PVE 提供了許多越來越方便的介面,讓我們得以輕鬆的簡單點選即可完成過往非常複雜的機制,實在是系統管理員保存資料的好幫手。

在完成複寫機制設定以後,若再搭配 PVE 的高可用性 (High Availability) 功能,即可進一步做到自動容錯移轉 (Auto Failover) 的能力,降低需要人為介入處理的時間,也讓系統管理的工作負擔越來越輕。





參考資料