• slider image 168
:::
條列式新聞
新聞載入中,請稍後...

7-5-3-4 實作2-script 配合 crondtab 自動同步

sendlxc-copy script 下載

  1. 使用 Proxmox VE ,且將VM/LXC 放置在 local-zfs或 zfs Storage(本機) 、ZFS over iSCSI上,
    並且以同樣的架構建立兩台以上一模一樣的PVE主機(做為同步備份或備援用,
    同時也提供第1台主機失效時能以手動方式將第2台啟動後立即上線提供服務)時,
    可以快速直接在數秒的時間裡同步到另一台pve主機
  2. 步驟
    1. .先將虛擬機建立快照1
      ./sendlxc-copy create 01
    2. 第1次以 zfs send/receive 指令直接將該虛擬機的快照傳送到另一台pve主機2
      ./sendlxc-copy copy 01 2 2017-08-01
    3. 再次建立快照2
      ./sendlxc-copy create 01
    4. 接下來每次同步時只需傳送快照1和快照2之間的差異到pve主機2
      ./sendlxc-copy autoupdate   01   2
    5. 每次以差異性快照同步後,每一次的快照在本機與遠端主機都會同步存在,也就是說 本機與遠端主機皆儲存每一次的快照版本,在需要的時候可以rollback 回溯到過去的版本
      ./sendlxc-copy list  01  2

       
  3. 版本日期:2017-10-28
    ------------------------------------------------------------------------------------------------------
    安裝︰
    執行 ./install_sendlxc-copy

    主程式︰sendlxc-copy --->放置於 /sbin/ 目錄下
    函式 sendlxc-copy.func --->放置於 /sbin/ 目錄下

    設定檔 sendlxc-copy.cfg ---> 放置於 /etc/sendlxc-copy/ 目錄下
    說明 Readme_說明.txt ---> 放置於 /etc/sendlxc-copy/ 目錄下
    ------------------------------------------------------------------------------------------------------
    環境建立:
    PVE主機五部(最少2部主機):hostname也可以使用ip
    主機1:hostname為pve, 虛擬機代號 100-199 指定在 node[1],所以虛擬機的代號組成為 1xx
    主機2:hostname為pve2, 虛擬機代號 200-299 指定在 node[2],所以虛擬機的代號組成為 2xx
    主機3:hostname為pve3, 虛擬機代號 300-399 指定在 node[3],所以虛擬機的代號組成為 3xx
    主機4:hostname為pve4, 虛擬機代號 400-499 指定在 node[4],所以虛擬機的代號組成為 4xx
    主機5:hostname為pvefs,虛擬機代號 500-599 指定在 node[5],所以虛擬機的代號組成為 5xx
    hostname 請在每一部pve主機的 /etc/hosts 中建立完成全部的 hostname 與 ip 的對應設定
    這個部份不要透過dns,以避免萬一dns掛點時各pve主機間才能正常繼續連線
    檔案系統:
    要有 zfs storage供虛擬機存放位置
    1.在安裝時務必選擇以 zfs raid0或raid1 方式安裝,在開機碟上會建立 local-zfs Storage
    2.或額外安裝第2顆硬碟做為獨立Stroage,以zfs予以格式化後在 pve 上掛載為 zfs Storage
    做為虛擬機建立存放處。
    虛擬機:
    1.全部存放在 local-zfs 或 ZFS Stoage 上,pve 將會以 block-base 的方式建立、儲存虛擬機
    這樣才能使用 zfs 的快照/差異性異機備份功能

    虛擬硬碟:
    目前虛擬機在不同主機之間的dataset數量在VMLXCid[01]=1變數值裡指定
    同步:
    在第1台pve主機上建立虛擬機101後,
    再將/etc/pve/lxc/201.conf(LXC)或/etc/pve/qemu-server/255.conf(qemu)以scp複製到另一台
    pve 主機後修改適當設定值後,再執行 sendlxc-copy copy vmid 異機代號 快照名稱
    這樣就完成虛擬機複製到異機的程序
    zfs Storage或local-zfs上,虛擬機在每一部pve主機上都有相同代號的vm
    (末兩位數相同,百位數的數字為主機代號的數字)

    語法:

    sendlxc-copy [-?]

    sendlxc-copy create - 建立快照:建立本機 虛擬機快照
    sendlxc-copy create vmid
    sendlxc-copy create 01
    --------------------------------------------------------------------
    sendlxc-copy list - 快照版本查詢:查詢本機端與遠端相同虛擬機最後兩個快照對照
    sendlxc-copy list vmid 遠端主機名
    sendlxc-copy list 01 1|2|3|4|5
    -------------------------------------------------------------------
    sendlxc-copy listalllastsnapshot - 所有虛擬機最後快照版本:查詢指定主機最後一個快照列表
    sendlxc-copy listalllastsnapshot 遠端主機名
    sendlxc-copy listalllastsnapshot 1|2|3|4|5
    -------------------------------------------------------------------
    sendlxc-copy copy - 虛擬機整機傳送:適用於第1次將虛擬機快照完整複製到另一台主機(遠端需先建立虛擬機設定檔,但dataset不需建立)
    sendlxc-copy copy vmid 遠端主機名 快照名稱
    sendlxc-copy copy 01 1|2|3|4|5 2017-08-01
    -------------------------------------------------------------------
    sendlxc-copy update - 差異性傳送:手動指定
    sendlxc-copy update vmid 遠端主機名 快照名稱1 快照名稱2
    sendlxc-copy update 01 1|2|3|4|5 2017-08-01 2017-08-31
    -------------------------------------------------------------------
    差異性傳送:自動指定/遠端主機快照更新至本機最新快照
    sendlxc-copy autoupdate vmid 遠端主機名 遠端快照版本 本機快照版本
    sendlxc-copy autoupdate 01 1|2|3|4|5
    -------------------------------------------------------------------
    刪除最後一份快照:刪除本機或遠端主機裡指定虛擬機最後一份快照
    sendlxc-copy destroylastsnapshot vmid 主機名
    sendlxc-copy destroylastsnapshot 01 1|2|3|4|5
    -------------------------------------------------------------------
    主機代號 ︰數字 1,2,3,4,5,...
    虛擬機代號︰末兩位數。例︰虛擬機的vmid為 618,那麼 虛擬機的代號為 18




  4. sendlxc-copy script 變數設定
#!/bin/bash
# 版本日期:2017-09-11
# 環境建立:
# 	PVE主機五部:
#		主機1hostnamepve,  虛擬機代號 100-199 指定在 node[1],所以虛擬機的代號組成為 1xx
#		主機2hostnamepve2, 虛擬機代號 200-299 指定在 node[2],所以虛擬機的代號組成為 2xx
#		主機3hostnamepve3, 虛擬機代號 300-399 指定在 node[3],所以虛擬機的代號組成為 3xx
#		主機4hostnamepve4, 虛擬機代號 400-499 指定在 node[4],所以虛擬機的代號組成為 4xx
#		主機5hostnamepvefs,虛擬機代號 500-599 指定在 node[5],所以虛擬機的代號組成為 5xx
#		hostname 請在每一部pve主機的 /etc/hosts 中建立完成的 hostname ip 的對應設定
#		這個部份不要透過dns,以避免萬一dns掛點時各pve主機間仍然能正常連線
#	檔案系統:
#		1.在安裝時選擇以 zfs raid0raid1 方式安裝,在開機碟上會建立 local-zfs Storage
#		2.額外安裝第2顆硬碟,以zfs予以格式化後在 pve 上掛載為 zfs Storage
#	虛擬機:
#		1.全部存放在 local-zfs ZFS Stoage 上,以 block-base 的方式儲存
#		  這樣才能使用 zfs 的快照/差異性異機備份功能
#
#	虛擬硬碟:
#		目前虛擬機在不同主機之間 dataset 3dataset,若使用超過3個以上的dataset
#		可能您需要自行增添部份程式碼(很簡單的)
#
#	同步:
#		1pve主機上建立虛擬機101後,
#		再以 backup 的方式建立虛擬機備份檔(vzdump-lxc-101...vzdump-qemu-101...)
#		scp 傳送到主機 pve2,
#		接著在pve2主機上先 touch /etc/pve/lxc/201.conf 後再以流灠器
#		登入 https://pve2ip:8006 手動方式將虛擬機還原
#		zfs Storagelocal-zfs上,將每一部pve主機上都有相同代號的vm(末兩位數相同)
clear
function set_name_var() {  # function 是建立變數設定值之用
# ----------------------------------------------------------------
# ----以下是手動設定的部份開始
# ----------------------------------------------------------------
# pve 主機群的 hostname , 也可以使用ip
node[1]=pve;	node[2]=pve2;	node[3]=pve3;	node[4]=pve4;	node[5]=pvefs
#node[1]=10.200.0.1; node[2]=10.200.0.2; node[3]=10.200.0.3; node[4]=10.200.0.4;
#node[5]=10.200.0.5
#--------------
# 本機代號 這裡要修改主機的 hostname 是在 node[1-5] 裡的那一台
source_pve=1	#						<--- 這裡要手動指定本機代號
# ---------------------------------------------------------------------
# LXC dataset path 路徑 若是使用 local-zfs Storage 的話,那麼路徑為 rpool/data/subvol-
# 以下這些 dataset 的路徑皆是自建的,可使用 zfs list 指令查詢
LXC_path[1]=VM1/vz/subvol-;	LXC_path[2]=VM2/vz/subvol-;	LXC_path[3]=VM3/vz/subvol-;
LXC_path[4]=VM4/vz/subvol-;	LXC_path[5]=VMFS/vz/subvol-;
#LXC_path[1]=rpool/data/subvol-; LXC_path[2]=rpool/data/subvol-; LXC_path[3]=rpool/data/subvol-;
#LXC_path[4]=rpool/data/subvol-; LXC_path[5]=rpool/data/subvol-;
# ---------------------------------------------------------------------
# VM  dataset path 路徑徑 若是使用 local-zfs Storage 的話,那麼路徑為 rpool/data/vm-
VM_path[1]=VM1/vz/vm-;	VM_path[2]=VM2/vz/vm-;	VM_path[3]=VM3/vz/vm-;
VM_path[4]=VM4/vz/vm-;	VM_path[5]=VMFS/vz/vm-;
#VM_path[1]=rpool/data/vm-;	VM_path[2]=rpool/data/vm-;	VM_path[3]=rpool/data/vm-;
#VM_path[4]=rpool/data/vm-;	VM_path[5]=rpool/data/vm-;
# ---------------------------------------------------------------------
# ---------- 以下 虛擬機dataset 與 虛擬機型態依實際數量新增或減少 -----
# ---------------------------------------------------------------------
# 虛擬機 dataset 數量	# 虛擬機型態 - 目前只支援LXC型態,或是把LXC_path改成vmdataset路徑來使用
VMLXCid[01]=1;		VMLXCidtype[01]=LXC;	# 虛擬機說明
VMLXCid[02]=1;		VMLXCidtype[02]=LXC;	# 虛擬機說明
VMLXCid[03]=1;		VMLXCidtype[03]=LXC;	# 虛擬機說明
VMLXCid[04]=1;		VMLXCidtype[04]=LXC;	# 虛擬機說明
VMLXCid[05]=1;		VMLXCidtype[05]=LXC;	# 虛擬機說明
VMLXCid[07]=;		VMLXCidtype[07]=LXC;	# 虛擬機說明
VMLXCid[10#08]=;	VMLXCidtype[10#08]=LXC;	# 虛擬機說明
VMLXCid[10#09]=;	VMLXCidtype[10#09]=LXC;	# 虛擬機說明
VMLXCid[10]=1;		VMLXCidtype[10]=LXC;	# 虛擬機說明
VMLXCid[11]=1;		VMLXCidtype[11]=LXC;	# 虛擬機說明
VMLXCid[12]=1;		VMLXCidtype[12]=LXC;	# 虛擬機說明
VMLXCid[14]=1;		VMLXCidtype[14]=LXC;	# 虛擬機說明
VMLXCid[15]=1;		VMLXCidtype[15]=LXC;	# 虛擬機說明
VMLXCid[16]=1;		VMLXCidtype[16]=LXC;	# 虛擬機說明
VMLXCid[17]=2;		VMLXCidtype[17]=LXC;	# 虛擬機說明
VMLXCid[99]=1;		VMLXCidtype[99]=LXC;	# 虛擬機說明
VMLXCid[51]=1;		VMLXCidtype[51]=VM	# 虛擬機說明
VMLXCid[52]=1;		VMLXCidtype[52]=VM	# 虛擬機說明
VMLXCid[53]=2;		VMLXCidtype[53]=VM	# 虛擬機說明
VMLXCid[54]=1;		VMLXCidtype[54]=VM  # 虛擬機說明
VMLXCid[55]=4;		VMLXCidtype[55]=VM	# 虛擬機說明
VMLXCid[61]=2;		VMLXCidtype[61]=VM	# 虛擬機說明
VMLXCid[62]=2;		VMLXCidtype[62]=VM	# 虛擬機說明
VMLXCid[64]=2;		VMLXCidtype[64]=VM	# 虛擬機說明
# -----------------------------------------------------------------------
# --------------------------- 手動設定 結束 -----------------------------
# -----------------------------------------------------------------------


:::
展開 | 闔起

文章類別

書籍目錄

展開 | 闔起

線上使用者

1人線上 (1人在瀏覽線上書籍)

會員: 0

訪客: 1

更多…